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

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 (1096) hide show
  1. package/package.json +24 -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 +5687 -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 +5172 -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/hooks/useCheckCart.js +38 -0
  296. package/src/hooks/useGetPricesBySku.js +59 -0
  297. package/src/hooks/useValidateToken.js +181 -0
  298. package/src/index.js +32 -0
  299. package/src/models.js +541 -0
  300. package/src/plugins/SVGLoader.js +1991 -0
  301. package/src/plugins/autosave.js +39 -0
  302. package/src/plugins/console-debugger.js +36 -0
  303. package/src/plugins/export.js +11 -0
  304. package/src/plugins/keyboard.js +194 -0
  305. package/src/reducers/areas-reducer.js +13 -0
  306. package/src/reducers/export.js +39 -0
  307. package/src/reducers/groups-reducer.js +73 -0
  308. package/src/reducers/holes-reducer.js +125 -0
  309. package/src/reducers/items-reducer.js +286 -0
  310. package/src/reducers/lines-reducer.js +96 -0
  311. package/src/reducers/project-reducer.js +239 -0
  312. package/src/reducers/reducer.js +59 -0
  313. package/src/reducers/scene-reducer.js +41 -0
  314. package/src/reducers/user-reducer.js +30 -0
  315. package/src/reducers/vertices-reducer.js +34 -0
  316. package/src/reducers/viewer2d-reducer.js +81 -0
  317. package/src/reducers/viewer3d-reducer.js +65 -0
  318. package/src/shared-style.js +72 -0
  319. package/src/styles/export.js +7 -0
  320. package/src/translator/en.js +106 -0
  321. package/src/translator/it.js +80 -0
  322. package/src/translator/ru.js +80 -0
  323. package/src/translator/translator.js +81 -0
  324. package/src/utils/browser.js +36 -0
  325. package/src/utils/email-validator.js +5 -0
  326. package/src/utils/export.js +39 -0
  327. package/src/utils/geometry.js +2572 -0
  328. package/src/utils/get-edges-of-subgraphs.js +29 -0
  329. package/src/utils/graph-cycles.js +259 -0
  330. package/src/utils/graph-inner-cycles.js +49 -0
  331. package/src/utils/graph.js +147 -0
  332. package/src/utils/helper.js +431 -0
  333. package/src/utils/history.js +37 -0
  334. package/src/utils/id-broker.js +9 -0
  335. package/src/utils/logger.js +8 -0
  336. package/src/utils/math.js +51 -0
  337. package/src/utils/molding.js +973 -0
  338. package/src/utils/name-generator.js +5 -0
  339. package/src/utils/objects-utils.js +56 -0
  340. package/src/utils/phone-validator.js +4 -0
  341. package/src/utils/process-black-list.js +10 -0
  342. package/src/utils/react-if.jsx +20 -0
  343. package/src/utils/snap-scene.js +102 -0
  344. package/src/utils/snap.js +184 -0
  345. package/src/utils/threeCSG.es6.js +578 -0
  346. package/src/version.js +1 -0
  347. package/es/@history.js +0 -3
  348. package/es/@history.js.map +0 -1
  349. package/es/AppContext.js +0 -4
  350. package/es/AppContext.js.map +0 -1
  351. package/es/KitchenConfigurator.js +0 -1345
  352. package/es/KitchenConfigurator.js.map +0 -1
  353. package/es/KitchenConfiguratorApp.js +0 -532
  354. package/es/KitchenConfiguratorApp.js.map +0 -1
  355. package/es/actions/area-actions.js +0 -15
  356. package/es/actions/area-actions.js.map +0 -1
  357. package/es/actions/export.js +0 -26
  358. package/es/actions/export.js.map +0 -1
  359. package/es/actions/groups-actions.js +0 -90
  360. package/es/actions/groups-actions.js.map +0 -1
  361. package/es/actions/holes-actions.js +0 -120
  362. package/es/actions/holes-actions.js.map +0 -1
  363. package/es/actions/items-actions.js +0 -314
  364. package/es/actions/items-actions.js.map +0 -1
  365. package/es/actions/lines-actions.js +0 -83
  366. package/es/actions/lines-actions.js.map +0 -1
  367. package/es/actions/project-actions.js +0 -282
  368. package/es/actions/project-actions.js.map +0 -1
  369. package/es/actions/scene-actions.js +0 -34
  370. package/es/actions/scene-actions.js.map +0 -1
  371. package/es/actions/user-actions.js +0 -59
  372. package/es/actions/user-actions.js.map +0 -1
  373. package/es/actions/vertices-actions.js +0 -28
  374. package/es/actions/vertices-actions.js.map +0 -1
  375. package/es/actions/viewer2d-actions.js +0 -59
  376. package/es/actions/viewer2d-actions.js.map +0 -1
  377. package/es/actions/viewer3d-actions.js +0 -24
  378. package/es/actions/viewer3d-actions.js.map +0 -1
  379. package/es/catalog/areas/area/planner-element.js +0 -41
  380. package/es/catalog/areas/area/planner-element.js.map +0 -1
  381. package/es/catalog/catalog.js +0 -278
  382. package/es/catalog/catalog.js.map +0 -1
  383. package/es/catalog/factories/area-factory-3d.js +0 -183
  384. package/es/catalog/factories/area-factory-3d.js.map +0 -1
  385. package/es/catalog/factories/area-factory.js +0 -82
  386. package/es/catalog/factories/area-factory.js.map +0 -1
  387. package/es/catalog/factories/export.js +0 -8
  388. package/es/catalog/factories/export.js.map +0 -1
  389. package/es/catalog/factories/wall-factory-3d.js +0 -203
  390. package/es/catalog/factories/wall-factory-3d.js.map +0 -1
  391. package/es/catalog/factories/wall-factory.js +0 -269
  392. package/es/catalog/factories/wall-factory.js.map +0 -1
  393. package/es/catalog/holes/door-closet/planner-element.js +0 -223
  394. package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
  395. package/es/catalog/holes/door-double/planner-element.js +0 -316
  396. package/es/catalog/holes/door-double/planner-element.js.map +0 -1
  397. package/es/catalog/holes/door-exterior/planner-element.js +0 -216
  398. package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
  399. package/es/catalog/holes/door-interior/planner-element.js +0 -228
  400. package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
  401. package/es/catalog/holes/door-panic/planner-element.js +0 -504
  402. package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
  403. package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
  404. package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  405. package/es/catalog/holes/door-sliding/planner-element.js +0 -226
  406. package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
  407. package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
  408. package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  409. package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
  410. package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  411. package/es/catalog/holes/window-clear/planner-element.js +0 -167
  412. package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
  413. package/es/catalog/holes/window-cross/planner-element.js +0 -166
  414. package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
  415. package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
  416. package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  417. package/es/catalog/holes/window-vertical/planner-element.js +0 -277
  418. package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
  419. package/es/catalog/lines/wall/planner-element.js +0 -71
  420. package/es/catalog/lines/wall/planner-element.js.map +0 -1
  421. package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
  422. package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  423. package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
  424. package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  425. package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
  426. package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  427. package/es/catalog/properties/export.js +0 -22
  428. package/es/catalog/properties/export.js.map +0 -1
  429. package/es/catalog/properties/property-checkbox.js +0 -72
  430. package/es/catalog/properties/property-checkbox.js.map +0 -1
  431. package/es/catalog/properties/property-color.js +0 -40
  432. package/es/catalog/properties/property-color.js.map +0 -1
  433. package/es/catalog/properties/property-enum.js +0 -56
  434. package/es/catalog/properties/property-enum.js.map +0 -1
  435. package/es/catalog/properties/property-hidden.js +0 -20
  436. package/es/catalog/properties/property-hidden.js.map +0 -1
  437. package/es/catalog/properties/property-lenght-measure.js +0 -102
  438. package/es/catalog/properties/property-lenght-measure.js.map +0 -1
  439. package/es/catalog/properties/property-length-measure.js +0 -86
  440. package/es/catalog/properties/property-length-measure.js.map +0 -1
  441. package/es/catalog/properties/property-length-measure_hole.js +0 -102
  442. package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
  443. package/es/catalog/properties/property-number.js +0 -49
  444. package/es/catalog/properties/property-number.js.map +0 -1
  445. package/es/catalog/properties/property-read-only.js +0 -27
  446. package/es/catalog/properties/property-read-only.js.map +0 -1
  447. package/es/catalog/properties/property-string.js +0 -49
  448. package/es/catalog/properties/property-string.js.map +0 -1
  449. package/es/catalog/properties/property-toggle.js +0 -40
  450. package/es/catalog/properties/property-toggle.js.map +0 -1
  451. package/es/catalog/properties/shared-property-style.js +0 -15
  452. package/es/catalog/properties/shared-property-style.js.map +0 -1
  453. package/es/catalog/utils/FuseUtils.js +0 -83
  454. package/es/catalog/utils/FuseUtils.js.map +0 -1
  455. package/es/catalog/utils/exporter.js +0 -149
  456. package/es/catalog/utils/exporter.js.map +0 -1
  457. package/es/catalog/utils/geom-utils.js +0 -190
  458. package/es/catalog/utils/geom-utils.js.map +0 -1
  459. package/es/catalog/utils/item-loader.js +0 -1522
  460. package/es/catalog/utils/item-loader.js.map +0 -1
  461. package/es/catalog/utils/load-obj.js +0 -92
  462. package/es/catalog/utils/load-obj.js.map +0 -1
  463. package/es/catalog/utils/mtl-loader.js +0 -358
  464. package/es/catalog/utils/mtl-loader.js.map +0 -1
  465. package/es/catalog/utils/obj-loader.js +0 -477
  466. package/es/catalog/utils/obj-loader.js.map +0 -1
  467. package/es/class/FuseUtils.js +0 -83
  468. package/es/class/FuseUtils.js.map +0 -1
  469. package/es/class/area.js +0 -146
  470. package/es/class/area.js.map +0 -1
  471. package/es/class/export.js +0 -25
  472. package/es/class/export.js.map +0 -1
  473. package/es/class/group.js +0 -441
  474. package/es/class/group.js.map +0 -1
  475. package/es/class/guide.js +0 -63
  476. package/es/class/guide.js.map +0 -1
  477. package/es/class/hole.js +0 -931
  478. package/es/class/hole.js.map +0 -1
  479. package/es/class/item.js +0 -1888
  480. package/es/class/item.js.map +0 -1
  481. package/es/class/layer.js +0 -668
  482. package/es/class/layer.js.map +0 -1
  483. package/es/class/line.js +0 -1290
  484. package/es/class/line.js.map +0 -1
  485. package/es/class/project.js +0 -823
  486. package/es/class/project.js.map +0 -1
  487. package/es/class/vertex.js +0 -267
  488. package/es/class/vertex.js.map +0 -1
  489. package/es/components/atoms/Snackbar/index.js +0 -50
  490. package/es/components/atoms/Snackbar/index.js.map +0 -1
  491. package/es/components/atoms/radio-button/index.js +0 -26
  492. package/es/components/atoms/radio-button/index.js.map +0 -1
  493. package/es/components/atoms/radio-button/styles.js +0 -5
  494. package/es/components/atoms/radio-button/styles.js.map +0 -1
  495. package/es/components/button/MainButton.js +0 -92
  496. package/es/components/button/MainButton.js.map +0 -1
  497. package/es/components/button/ToggleMeasureButton.js +0 -56
  498. package/es/components/button/ToggleMeasureButton.js.map +0 -1
  499. package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
  500. package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  501. package/es/components/catalog-view/catalog-item.js +0 -226
  502. package/es/components/catalog-view/catalog-item.js.map +0 -1
  503. package/es/components/catalog-view/catalog-list.js +0 -182
  504. package/es/components/catalog-view/catalog-list.js.map +0 -1
  505. package/es/components/catalog-view/catalog-page-item.js +0 -130
  506. package/es/components/catalog-view/catalog-page-item.js.map +0 -1
  507. package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
  508. package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  509. package/es/components/configurator/custom-configurator.js +0 -94
  510. package/es/components/configurator/custom-configurator.js.map +0 -1
  511. package/es/components/configurator/project-configurator.js +0 -131
  512. package/es/components/configurator/project-configurator.js.map +0 -1
  513. package/es/components/content.js +0 -123
  514. package/es/components/content.js.map +0 -1
  515. package/es/components/export.js +0 -24
  516. package/es/components/export.js.map +0 -1
  517. package/es/components/firstsetting/button/styles.js +0 -27
  518. package/es/components/firstsetting/button/styles.js.map +0 -1
  519. package/es/components/firstsetting/export.js +0 -9
  520. package/es/components/firstsetting/export.js.map +0 -1
  521. package/es/components/firstsetting/firstsetting-content-button.js +0 -217
  522. package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
  523. package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
  524. package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  525. package/es/components/firstsetting/firstsetting.js +0 -626
  526. package/es/components/firstsetting/firstsetting.js.map +0 -1
  527. package/es/components/footerbar/button/ControlButton.js +0 -72
  528. package/es/components/footerbar/button/ControlButton.js.map +0 -1
  529. package/es/components/footerbar/button/DirectionButton.js +0 -69
  530. package/es/components/footerbar/button/DirectionButton.js.map +0 -1
  531. package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
  532. package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  533. package/es/components/footerbar/button/ToggleButton.js +0 -76
  534. package/es/components/footerbar/button/ToggleButton.js.map +0 -1
  535. package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
  536. package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  537. package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
  538. package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  539. package/es/components/footerbar/button/styles.js +0 -22
  540. package/es/components/footerbar/button/styles.js.map +0 -1
  541. package/es/components/footerbar/export.js +0 -9
  542. package/es/components/footerbar/export.js.map +0 -1
  543. package/es/components/footerbar/footer-content-button.js +0 -217
  544. package/es/components/footerbar/footer-content-button.js.map +0 -1
  545. package/es/components/footerbar/footer-toggle-button.js +0 -126
  546. package/es/components/footerbar/footer-toggle-button.js.map +0 -1
  547. package/es/components/footerbar/footerbar.js +0 -801
  548. package/es/components/footerbar/footerbar.js.map +0 -1
  549. package/es/components/footerbar/styles.js +0 -34
  550. package/es/components/footerbar/styles.js.map +0 -1
  551. package/es/components/header/button/MenuButton.js +0 -70
  552. package/es/components/header/button/MenuButton.js.map +0 -1
  553. package/es/components/header/button/SaveButton.js +0 -48
  554. package/es/components/header/button/SaveButton.js.map +0 -1
  555. package/es/components/header/button/styles.js +0 -59
  556. package/es/components/header/button/styles.js.map +0 -1
  557. package/es/components/header/export.js +0 -5
  558. package/es/components/header/export.js.map +0 -1
  559. package/es/components/header/header.js +0 -550
  560. package/es/components/header/header.js.map +0 -1
  561. package/es/components/header/styles.js +0 -41
  562. package/es/components/header/styles.js.map +0 -1
  563. package/es/components/login/Login.js +0 -86
  564. package/es/components/login/Login.js.map +0 -1
  565. package/es/components/login/LoginForm/index.js +0 -132
  566. package/es/components/login/LoginForm/index.js.map +0 -1
  567. package/es/components/login/Register.js +0 -96
  568. package/es/components/login/Register.js.map +0 -1
  569. package/es/components/login/RegisterForm/index.js +0 -230
  570. package/es/components/login/RegisterForm/index.js.map +0 -1
  571. package/es/components/login/jwtService.js +0 -232
  572. package/es/components/login/jwtService.js.map +0 -1
  573. package/es/components/molecules/slider/index.js +0 -13
  574. package/es/components/molecules/slider/index.js.map +0 -1
  575. package/es/components/molecules/slider/styles.js +0 -2
  576. package/es/components/molecules/slider/styles.js.map +0 -1
  577. package/es/components/myprojects/export.js +0 -5
  578. package/es/components/myprojects/export.js.map +0 -1
  579. package/es/components/myprojects/index.js +0 -446
  580. package/es/components/myprojects/index.js.map +0 -1
  581. package/es/components/myprojects/styles.js +0 -24
  582. package/es/components/myprojects/styles.js.map +0 -1
  583. package/es/components/sidebar/custom-accordion.js +0 -38
  584. package/es/components/sidebar/custom-accordion.js.map +0 -1
  585. package/es/components/sidebar/export.js +0 -14
  586. package/es/components/sidebar/export.js.map +0 -1
  587. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
  588. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  589. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
  590. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  591. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
  592. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  593. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
  594. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  595. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
  596. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  597. package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
  598. package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  599. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  600. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  601. package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
  602. package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  603. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
  604. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  605. package/es/components/sidebar/panel-group-editor.js +0 -211
  606. package/es/components/sidebar/panel-group-editor.js.map +0 -1
  607. package/es/components/sidebar/panel-groups.js +0 -267
  608. package/es/components/sidebar/panel-groups.js.map +0 -1
  609. package/es/components/sidebar/panel-guides.js +0 -185
  610. package/es/components/sidebar/panel-guides.js.map +0 -1
  611. package/es/components/sidebar/panel-layer-elements.js +0 -251
  612. package/es/components/sidebar/panel-layer-elements.js.map +0 -1
  613. package/es/components/sidebar/panel-layers.js +0 -340
  614. package/es/components/sidebar/panel-layers.js.map +0 -1
  615. package/es/components/sidebar/panel.js +0 -103
  616. package/es/components/sidebar/panel.js.map +0 -1
  617. package/es/components/sidebar/sidebar.js +0 -109
  618. package/es/components/sidebar/sidebar.js.map +0 -1
  619. package/es/components/sidebar/toolbar-panel.js +0 -164
  620. package/es/components/sidebar/toolbar-panel.js.map +0 -1
  621. package/es/components/sign/export.js +0 -6
  622. package/es/components/sign/export.js.map +0 -1
  623. package/es/components/sign/main/index.js +0 -560
  624. package/es/components/sign/main/index.js.map +0 -1
  625. package/es/components/sign/main/styles.js +0 -20
  626. package/es/components/sign/main/styles.js.map +0 -1
  627. package/es/components/style/button.js +0 -114
  628. package/es/components/style/button.js.map +0 -1
  629. package/es/components/style/cancel-button.js +0 -23
  630. package/es/components/style/cancel-button.js.map +0 -1
  631. package/es/components/style/content-container.js +0 -34
  632. package/es/components/style/content-container.js.map +0 -1
  633. package/es/components/style/content-title.js +0 -30
  634. package/es/components/style/content-title.js.map +0 -1
  635. package/es/components/style/delete-button.js +0 -26
  636. package/es/components/style/delete-button.js.map +0 -1
  637. package/es/components/style/export.js +0 -32
  638. package/es/components/style/export.js.map +0 -1
  639. package/es/components/style/form-block.js +0 -25
  640. package/es/components/style/form-block.js.map +0 -1
  641. package/es/components/style/form-color-input.js +0 -28
  642. package/es/components/style/form-color-input.js.map +0 -1
  643. package/es/components/style/form-label.js +0 -27
  644. package/es/components/style/form-label.js.map +0 -1
  645. package/es/components/style/form-number-input.js +0 -190
  646. package/es/components/style/form-number-input.js.map +0 -1
  647. package/es/components/style/form-number-input_2.js +0 -207
  648. package/es/components/style/form-number-input_2.js.map +0 -1
  649. package/es/components/style/form-select.js +0 -21
  650. package/es/components/style/form-select.js.map +0 -1
  651. package/es/components/style/form-slider.js +0 -46
  652. package/es/components/style/form-slider.js.map +0 -1
  653. package/es/components/style/form-submit-button.js +0 -27
  654. package/es/components/style/form-submit-button.js.map +0 -1
  655. package/es/components/style/form-text-input.js +0 -77
  656. package/es/components/style/form-text-input.js.map +0 -1
  657. package/es/components/toolbar/button/ControlButton.js +0 -69
  658. package/es/components/toolbar/button/ControlButton.js.map +0 -1
  659. package/es/components/toolbar/button/DirectionButton.js +0 -50
  660. package/es/components/toolbar/button/DirectionButton.js.map +0 -1
  661. package/es/components/toolbar/button/RightButton.js +0 -133
  662. package/es/components/toolbar/button/RightButton.js.map +0 -1
  663. package/es/components/toolbar/button/ToggleButton.js +0 -59
  664. package/es/components/toolbar/button/ToggleButton.js.map +0 -1
  665. package/es/components/toolbar/button/index.js +0 -88
  666. package/es/components/toolbar/button/index.js.map +0 -1
  667. package/es/components/toolbar/button/styles.js +0 -14
  668. package/es/components/toolbar/button/styles.js.map +0 -1
  669. package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
  670. package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  671. package/es/components/toolbar/components/Pricing.js +0 -101
  672. package/es/components/toolbar/components/Pricing.js.map +0 -1
  673. package/es/components/toolbar/components/ReviewForQuote.js +0 -476
  674. package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
  675. package/es/components/toolbar/export.js +0 -14
  676. package/es/components/toolbar/export.js.map +0 -1
  677. package/es/components/toolbar/main/Alert.js +0 -125
  678. package/es/components/toolbar/main/Alert.js.map +0 -1
  679. package/es/components/toolbar/main/TakePictureModal.js +0 -100
  680. package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
  681. package/es/components/toolbar/main/confirm-popup.js +0 -88
  682. package/es/components/toolbar/main/confirm-popup.js.map +0 -1
  683. package/es/components/toolbar/main/index.js +0 -4612
  684. package/es/components/toolbar/main/index.js.map +0 -1
  685. package/es/components/toolbar/main/myComponents.js +0 -118
  686. package/es/components/toolbar/main/myComponents.js.map +0 -1
  687. package/es/components/toolbar/main/styles.js +0 -64
  688. package/es/components/toolbar/main/styles.js.map +0 -1
  689. package/es/components/toolbar/plugin-item.js +0 -150
  690. package/es/components/toolbar/plugin-item.js.map +0 -1
  691. package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
  692. package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  693. package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
  694. package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  695. package/es/components/toolbar/popup/appliance/index.js +0 -81
  696. package/es/components/toolbar/popup/appliance/index.js.map +0 -1
  697. package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
  698. package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  699. package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
  700. package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  701. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
  702. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  703. package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
  704. package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  705. package/es/components/toolbar/popup/cabinet/index.js +0 -83
  706. package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
  707. package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
  708. package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  709. package/es/components/toolbar/popup/doorStyle/index.js +0 -61
  710. package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
  711. package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
  712. package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  713. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
  714. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  715. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
  716. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  717. package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
  718. package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  719. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
  720. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  721. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
  722. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  723. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
  724. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  725. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
  726. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  727. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
  728. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  729. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
  730. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  731. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
  732. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  733. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
  734. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  735. package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
  736. package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  737. package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
  738. package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  739. package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
  740. package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  741. package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
  742. package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  743. package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
  744. package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  745. package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
  746. package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  747. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
  748. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  749. package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
  750. package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  751. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
  752. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  753. package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
  754. package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  755. package/es/components/toolbar/popup/floorplan/index.js +0 -49
  756. package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
  757. package/es/components/toolbar/popup/index.js +0 -188
  758. package/es/components/toolbar/popup/index.js.map +0 -1
  759. package/es/components/toolbar/popup/newproject/index.js +0 -67
  760. package/es/components/toolbar/popup/newproject/index.js.map +0 -1
  761. package/es/components/toolbar/popup/newproject/styles.js +0 -9
  762. package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
  763. package/es/components/toolbar/popup/product/appliance.js +0 -65
  764. package/es/components/toolbar/popup/product/appliance.js.map +0 -1
  765. package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
  766. package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  767. package/es/components/toolbar/popup/product/doorstyle.js +0 -50
  768. package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
  769. package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
  770. package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  771. package/es/components/toolbar/popup/product/floor.js +0 -52
  772. package/es/components/toolbar/popup/product/floor.js.map +0 -1
  773. package/es/components/toolbar/popup/product/floorproduct.js +0 -61
  774. package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
  775. package/es/components/toolbar/popup/product/index.js +0 -52
  776. package/es/components/toolbar/popup/product/index.js.map +0 -1
  777. package/es/components/toolbar/popup/product/primary.js +0 -63
  778. package/es/components/toolbar/popup/product/primary.js.map +0 -1
  779. package/es/components/toolbar/popup/product/productline.js +0 -120
  780. package/es/components/toolbar/popup/product/productline.js.map +0 -1
  781. package/es/components/toolbar/popup/product/reviewItem.js +0 -338
  782. package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
  783. package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
  784. package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  785. package/es/components/toolbar/popup/product/styles.js +0 -71
  786. package/es/components/toolbar/popup/product/styles.js.map +0 -1
  787. package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
  788. package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  789. package/es/components/toolbar/popup/savedesign/index.js +0 -508
  790. package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
  791. package/es/components/toolbar/popup/savedesign/styles.js +0 -19
  792. package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
  793. package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
  794. package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  795. package/es/components/toolbar/popup/styles.js +0 -98
  796. package/es/components/toolbar/popup/styles.js.map +0 -1
  797. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
  798. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  799. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
  800. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  801. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
  802. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  803. package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
  804. package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  805. package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
  806. package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  807. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
  808. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  809. package/es/components/toolbar/popup/submitforquote/index.js +0 -690
  810. package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
  811. package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
  812. package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  813. package/es/components/toolbar/popup/submitprompt/index.js +0 -71
  814. package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
  815. package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
  816. package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  817. package/es/components/toolbar/toolbar-button.js +0 -105
  818. package/es/components/toolbar/toolbar-button.js.map +0 -1
  819. package/es/components/toolbar/toolbar-load-button.js +0 -29
  820. package/es/components/toolbar/toolbar-load-button.js.map +0 -1
  821. package/es/components/toolbar/toolbar-save-button.js +0 -27
  822. package/es/components/toolbar/toolbar-save-button.js.map +0 -1
  823. package/es/components/tutorial-view/Modal.js +0 -498
  824. package/es/components/tutorial-view/Modal.js.map +0 -1
  825. package/es/components/tutorial-view/styles.js +0 -6
  826. package/es/components/tutorial-view/styles.js.map +0 -1
  827. package/es/components/viewer2d/area.js +0 -83
  828. package/es/components/viewer2d/area.js.map +0 -1
  829. package/es/components/viewer2d/export.js +0 -32
  830. package/es/components/viewer2d/export.js.map +0 -1
  831. package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
  832. package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  833. package/es/components/viewer2d/grids/grid-streak.js +0 -38
  834. package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
  835. package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
  836. package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  837. package/es/components/viewer2d/grids/grids.js +0 -36
  838. package/es/components/viewer2d/grids/grids.js.map +0 -1
  839. package/es/components/viewer2d/group.js +0 -54
  840. package/es/components/viewer2d/group.js.map +0 -1
  841. package/es/components/viewer2d/item.js +0 -514
  842. package/es/components/viewer2d/item.js.map +0 -1
  843. package/es/components/viewer2d/layer.js +0 -165
  844. package/es/components/viewer2d/layer.js.map +0 -1
  845. package/es/components/viewer2d/line.js +0 -889
  846. package/es/components/viewer2d/line.js.map +0 -1
  847. package/es/components/viewer2d/ruler.js +0 -101
  848. package/es/components/viewer2d/ruler.js.map +0 -1
  849. package/es/components/viewer2d/rulerDist.js +0 -147
  850. package/es/components/viewer2d/rulerDist.js.map +0 -1
  851. package/es/components/viewer2d/rulerX.js +0 -152
  852. package/es/components/viewer2d/rulerX.js.map +0 -1
  853. package/es/components/viewer2d/rulerY.js +0 -154
  854. package/es/components/viewer2d/rulerY.js.map +0 -1
  855. package/es/components/viewer2d/scene.js +0 -141
  856. package/es/components/viewer2d/scene.js.map +0 -1
  857. package/es/components/viewer2d/snap.js +0 -75
  858. package/es/components/viewer2d/snap.js.map +0 -1
  859. package/es/components/viewer2d/state.js +0 -79
  860. package/es/components/viewer2d/state.js.map +0 -1
  861. package/es/components/viewer2d/utils.js +0 -163
  862. package/es/components/viewer2d/utils.js.map +0 -1
  863. package/es/components/viewer2d/vertex.js +0 -67
  864. package/es/components/viewer2d/vertex.js.map +0 -1
  865. package/es/components/viewer2d/viewer2d.js +0 -1402
  866. package/es/components/viewer2d/viewer2d.js.map +0 -1
  867. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
  868. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  869. package/es/components/viewer3d/dcm.js +0 -402
  870. package/es/components/viewer3d/dcm.js.map +0 -1
  871. package/es/components/viewer3d/fbm.js +0 -415
  872. package/es/components/viewer3d/fbm.js.map +0 -1
  873. package/es/components/viewer3d/front3D.js +0 -67
  874. package/es/components/viewer3d/front3D.js.map +0 -1
  875. package/es/components/viewer3d/grid-creator.js +0 -26
  876. package/es/components/viewer3d/grid-creator.js.map +0 -1
  877. package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
  878. package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  879. package/es/components/viewer3d/grids/grid-streak.js +0 -28
  880. package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
  881. package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
  882. package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  883. package/es/components/viewer3d/libs/first-person-controls.js +0 -68
  884. package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
  885. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
  886. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  887. package/es/components/viewer3d/libs/mtl-loader.js +0 -358
  888. package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
  889. package/es/components/viewer3d/libs/obj-loader.js +0 -463
  890. package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
  891. package/es/components/viewer3d/libs/orbit-controls.js +0 -699
  892. package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
  893. package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
  894. package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  895. package/es/components/viewer3d/lrm.js +0 -306
  896. package/es/components/viewer3d/lrm.js.map +0 -1
  897. package/es/components/viewer3d/model.js +0 -709
  898. package/es/components/viewer3d/model.js.map +0 -1
  899. package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
  900. package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  901. package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
  902. package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  903. package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
  904. package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  905. package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
  906. package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  907. package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
  908. package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  909. package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
  910. package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  911. package/es/components/viewer3d/scene-creator.js +0 -3607
  912. package/es/components/viewer3d/scene-creator.js.map +0 -1
  913. package/es/components/viewer3d/three-memory-cleaner.js +0 -52
  914. package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
  915. package/es/components/viewer3d/viewer3d-first-person.js +0 -316
  916. package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
  917. package/es/components/viewer3d/viewer3d.js +0 -2504
  918. package/es/components/viewer3d/viewer3d.js.map +0 -1
  919. package/es/components/wizardstep/button/styles.js +0 -60
  920. package/es/components/wizardstep/button/styles.js.map +0 -1
  921. package/es/components/wizardstep/export.js +0 -5
  922. package/es/components/wizardstep/export.js.map +0 -1
  923. package/es/components/wizardstep/index.js +0 -971
  924. package/es/components/wizardstep/index.js.map +0 -1
  925. package/es/components/wizardstep/styles.js +0 -61
  926. package/es/components/wizardstep/styles.js.map +0 -1
  927. package/es/components/wizardstep/wizardstep-content-button.js +0 -217
  928. package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
  929. package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
  930. package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  931. package/es/constants.js +0 -637
  932. package/es/constants.js.map +0 -1
  933. package/es/hooks/useCheckCart.js +0 -53
  934. package/es/hooks/useCheckCart.js.map +0 -1
  935. package/es/hooks/useGetPricesBySku.js +0 -74
  936. package/es/hooks/useGetPricesBySku.js.map +0 -1
  937. package/es/hooks/useValidateToken.js +0 -201
  938. package/es/hooks/useValidateToken.js.map +0 -1
  939. package/es/index.js +0 -17
  940. package/es/index.js.map +0 -1
  941. package/es/models.js +0 -511
  942. package/es/models.js.map +0 -1
  943. package/es/plugins/SVGLoader.js +0 -1413
  944. package/es/plugins/SVGLoader.js.map +0 -1
  945. package/es/plugins/autosave.js +0 -34
  946. package/es/plugins/autosave.js.map +0 -1
  947. package/es/plugins/console-debugger.js +0 -38
  948. package/es/plugins/console-debugger.js.map +0 -1
  949. package/es/plugins/export.js +0 -10
  950. package/es/plugins/export.js.map +0 -1
  951. package/es/plugins/keyboard.js +0 -102
  952. package/es/plugins/keyboard.js.map +0 -1
  953. package/es/reducers/areas-reducer.js +0 -13
  954. package/es/reducers/areas-reducer.js.map +0 -1
  955. package/es/reducers/export.js +0 -26
  956. package/es/reducers/export.js.map +0 -1
  957. package/es/reducers/groups-reducer.js +0 -39
  958. package/es/reducers/groups-reducer.js.map +0 -1
  959. package/es/reducers/holes-reducer.js +0 -63
  960. package/es/reducers/holes-reducer.js.map +0 -1
  961. package/es/reducers/items-reducer.js +0 -144
  962. package/es/reducers/items-reducer.js.map +0 -1
  963. package/es/reducers/lines-reducer.js +0 -46
  964. package/es/reducers/lines-reducer.js.map +0 -1
  965. package/es/reducers/project-reducer.js +0 -130
  966. package/es/reducers/project-reducer.js.map +0 -1
  967. package/es/reducers/reducer.js +0 -20
  968. package/es/reducers/reducer.js.map +0 -1
  969. package/es/reducers/scene-reducer.js +0 -29
  970. package/es/reducers/scene-reducer.js.map +0 -1
  971. package/es/reducers/user-reducer.js +0 -42
  972. package/es/reducers/user-reducer.js.map +0 -1
  973. package/es/reducers/vertices-reducer.js +0 -20
  974. package/es/reducers/vertices-reducer.js.map +0 -1
  975. package/es/reducers/viewer2d-reducer.js +0 -76
  976. package/es/reducers/viewer2d-reducer.js.map +0 -1
  977. package/es/reducers/viewer3d-reducer.js +0 -57
  978. package/es/reducers/viewer3d-reducer.js.map +0 -1
  979. package/es/shared-style.js +0 -67
  980. package/es/shared-style.js.map +0 -1
  981. package/es/styles/export.js +0 -6
  982. package/es/styles/export.js.map +0 -1
  983. package/es/translator/en.js +0 -105
  984. package/es/translator/en.js.map +0 -1
  985. package/es/translator/it.js +0 -80
  986. package/es/translator/it.js.map +0 -1
  987. package/es/translator/ru.js +0 -80
  988. package/es/translator/ru.js.map +0 -1
  989. package/es/translator/translator.js +0 -85
  990. package/es/translator/translator.js.map +0 -1
  991. package/es/utils/browser.js +0 -34
  992. package/es/utils/browser.js.map +0 -1
  993. package/es/utils/email-validator.js +0 -5
  994. package/es/utils/email-validator.js.map +0 -1
  995. package/es/utils/export.js +0 -26
  996. package/es/utils/export.js.map +0 -1
  997. package/es/utils/geometry.js +0 -2237
  998. package/es/utils/geometry.js.map +0 -1
  999. package/es/utils/get-edges-of-subgraphs.js +0 -27
  1000. package/es/utils/get-edges-of-subgraphs.js.map +0 -1
  1001. package/es/utils/graph-cycles.js +0 -239
  1002. package/es/utils/graph-cycles.js.map +0 -1
  1003. package/es/utils/graph-inner-cycles.js +0 -47
  1004. package/es/utils/graph-inner-cycles.js.map +0 -1
  1005. package/es/utils/graph.js +0 -150
  1006. package/es/utils/graph.js.map +0 -1
  1007. package/es/utils/helper.js +0 -337
  1008. package/es/utils/helper.js.map +0 -1
  1009. package/es/utils/history.js +0 -30
  1010. package/es/utils/history.js.map +0 -1
  1011. package/es/utils/id-broker.js +0 -20
  1012. package/es/utils/id-broker.js.map +0 -1
  1013. package/es/utils/logger.js +0 -9
  1014. package/es/utils/logger.js.map +0 -1
  1015. package/es/utils/math.js +0 -51
  1016. package/es/utils/math.js.map +0 -1
  1017. package/es/utils/molding.js +0 -840
  1018. package/es/utils/molding.js.map +0 -1
  1019. package/es/utils/name-generator.js +0 -19
  1020. package/es/utils/name-generator.js.map +0 -1
  1021. package/es/utils/objects-utils.js +0 -51
  1022. package/es/utils/objects-utils.js.map +0 -1
  1023. package/es/utils/phone-validator.js +0 -5
  1024. package/es/utils/phone-validator.js.map +0 -1
  1025. package/es/utils/process-black-list.js +0 -19
  1026. package/es/utils/process-black-list.js.map +0 -1
  1027. package/es/utils/react-if.js +0 -19
  1028. package/es/utils/react-if.js.map +0 -1
  1029. package/es/utils/snap-scene.js +0 -100
  1030. package/es/utils/snap-scene.js.map +0 -1
  1031. package/es/utils/snap.js +0 -238
  1032. package/es/utils/snap.js.map +0 -1
  1033. package/es/utils/threeCSG.es6.js +0 -499
  1034. package/es/utils/threeCSG.es6.js.map +0 -1
  1035. package/es/version.js +0 -2
  1036. package/es/version.js.map +0 -1
  1037. /package/{es → src}/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  1038. /package/{es → src}/catalog/areas/area/textures/grass.jpg +0 -0
  1039. /package/{es → src}/catalog/areas/area/textures/parquet.jpg +0 -0
  1040. /package/{es → src}/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  1041. /package/{es → src}/catalog/areas/area/textures/tile1.jpg +0 -0
  1042. /package/{es → src}/catalog/back.png +0 -0
  1043. /package/{es → src}/catalog/doors.png +0 -0
  1044. /package/{es → src}/catalog/doorways.png +0 -0
  1045. /package/{es → src}/catalog/envMap/nx.hdr +0 -0
  1046. /package/{es → src}/catalog/envMap/ny.hdr +0 -0
  1047. /package/{es → src}/catalog/envMap/nz.hdr +0 -0
  1048. /package/{es → src}/catalog/envMap/px.hdr +0 -0
  1049. /package/{es → src}/catalog/envMap/py.hdr +0 -0
  1050. /package/{es → src}/catalog/envMap/pz.hdr +0 -0
  1051. /package/{es → src}/catalog/holes/door-double/door_double.png +0 -0
  1052. /package/{es → src}/catalog/holes/door-panic/panicDoor.png +0 -0
  1053. /package/{es → src}/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  1054. /package/{es → src}/catalog/holes/gate/gate.jpg +0 -0
  1055. /package/{es → src}/catalog/holes/window-clear/texture.png +0 -0
  1056. /package/{es → src}/catalog/holes/window-cross/texture.png +0 -0
  1057. /package/{es → src}/catalog/holes/window-double-hung/texture.png +0 -0
  1058. /package/{es → src}/catalog/holes/window-vertical/texture.png +0 -0
  1059. /package/{es → src}/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  1060. /package/{es → src}/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  1061. /package/{es → src}/catalog/lines/wall/textures/bricks.jpg +0 -0
  1062. /package/{es → src}/catalog/lines/wall/textures/bricks2.jpg +0 -0
  1063. /package/{es → src}/catalog/lines/wall/textures/bricks3.jpg +0 -0
  1064. /package/{es → src}/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  1065. /package/{es → src}/catalog/lines/wall/textures/morden.jpg +0 -0
  1066. /package/{es → src}/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  1067. /package/{es → src}/catalog/lines/wall/textures/painted.jpg +0 -0
  1068. /package/{es → src}/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  1069. /package/{es → src}/catalog/lines/wall/textures/plaster.jpg +0 -0
  1070. /package/{es → src}/catalog/lines/wall/wall.png +0 -0
  1071. /package/{es → src}/catalog/molding/molding-dcm/texture.png +0 -0
  1072. /package/{es → src}/catalog/molding/molding-fbm/texture.png +0 -0
  1073. /package/{es → src}/catalog/molding/molding-lrm/texture.png +0 -0
  1074. /package/{es → src}/catalog/windows.png +0 -0
  1075. /package/{es → src}/components/header/header.style.css +0 -0
  1076. /package/{es → src}/components/login/style.css +0 -0
  1077. /package/{es → src}/components/login/style.scss +0 -0
  1078. /package/{es → src}/components/molecules/slider/styles.scss +0 -0
  1079. /package/{es → src}/components/toolbar/main/lShaped.json +0 -0
  1080. /package/{es → src}/components/toolbar/main/longNarrow.json +0 -0
  1081. /package/{es → src}/components/toolbar/main/oRectangle.json +0 -0
  1082. /package/{es → src}/components/toolbar/main/rectangle.json +0 -0
  1083. /package/{es → src}/components/toolbar/main/style.css +0 -0
  1084. /package/{es → src}/components/toolbar/popup/autosaveprompt/styles.css +0 -0
  1085. /package/{es → src}/components/toolbar/popup/downloadsummary/styles.css +0 -0
  1086. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -0
  1087. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -0
  1088. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -0
  1089. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -0
  1090. /package/{es → src}/components/toolbar/popup/newproject/styles.css +0 -0
  1091. /package/{es → src}/components/toolbar/popup/product/style.css +0 -0
  1092. /package/{es → src}/components/toolbar/popup/savedesign/savedesign.style.css +0 -0
  1093. /package/{es → src}/components/toolbar/popup/submitforquote/styles.css +0 -0
  1094. /package/{es → src}/components/toolbar/popup/submitprompt/styles.css +0 -0
  1095. /package/{es → src}/components/tutorial-view/style.css +0 -0
  1096. /package/{es → src}/styles/tabs.css +0 -0
@@ -0,0 +1,2198 @@
1
+ 'use strict';
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import ReactDOM from 'react-dom';
6
+ import * as Three from 'three';
7
+ import {
8
+ parseData,
9
+ updateScene,
10
+ deleteSpecifiedMeshObjects,
11
+ createBacksplash,
12
+ checkCabinetOverlap
13
+ } from '../../../../viewer3d/scene-creator';
14
+ import { disposeScene } from '../../../../viewer3d/three-memory-cleaner';
15
+ import { disposeObject } from '../../../../viewer3d/three-memory-cleaner';
16
+ import diff from 'immutablediff';
17
+ import * as SharedStyle from '../../../../../shared-style';
18
+ import {
19
+ MODE_DRAWING_ITEM_3D,
20
+ UNIT_CENTIMETER,
21
+ SECONDARY_PURPLE_COLOR,
22
+ ARRAY_ELEVATION_VIEW_MODES,
23
+ MODE_FRONT_ELEVATION_VIEW,
24
+ MODE_RIGHT_ELEVATION_VIEW,
25
+ MODE_LEFT_ELEVATION_VIEW,
26
+ MODE_BACK_ELEVATION_VIEW,
27
+ BASE_CABINET_LAYOUTPOS,
28
+ WALL_CABINET_LAYOUTPOS,
29
+ TALL_CABINET_LAYOUTPOS
30
+ } from '../../../../../constants';
31
+ import { isUndefined } from 'util';
32
+ import { verticesDistance } from '../../../../../utils/geometry';
33
+ import convert from 'convert-units';
34
+ import { GeometryUtils } from '../../../../../utils/export';
35
+ import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
36
+ import CameraControls from 'camera-controls';
37
+ CameraControls.install({ THREE: Three });
38
+ import { returnReplaceableDeepSearchType } from '../../../../viewer2d/utils';
39
+ import { vectorIntersectWithMesh } from '../../../../../utils/objects-utils';
40
+ import { almostEqual } from '../../../../../utils/geometry';
41
+
42
+ export default class Viewer3DElevationDownload extends React.Component {
43
+ constructor(props) {
44
+ super(props);
45
+ this.state = {
46
+ isLoading: false,
47
+ showflag: true,
48
+ toolObj: null,
49
+ angleObj: null,
50
+ waitForRender: 0
51
+ };
52
+ this.lastMousePosition = {};
53
+ this.width = props.width;
54
+ this.height = props.height;
55
+ this.renderingID = 0;
56
+
57
+ let { mode } = props.state;
58
+
59
+ if (!window.__elevationRendererDownload) {
60
+ window.__elevationRendererDownload = {};
61
+ }
62
+
63
+ this.renderer =
64
+ window.__threeRendererDownload ||
65
+ window.__elevationRendererDownload[mode] ||
66
+ new Three.WebGLRenderer({
67
+ preserveDrawingBuffer: true,
68
+ alpha: true,
69
+ antialias: true
70
+ });
71
+
72
+ this.renderer.shadowMap.enabled = true;
73
+ this.renderer.shadowMapSoft = true;
74
+ if (mode == 'MODE_3D_VIEW') {
75
+ window.__threeRendererDownload = this.renderer;
76
+ } else {
77
+ window.__elevationRendererDownload[mode] = this.renderer;
78
+ }
79
+
80
+ this.renderer.domElement.style.display = 'none';
81
+ }
82
+
83
+ componentDidMount(nextProps) {
84
+ let scene3D, camera, pivot, cameraControls, clock;
85
+
86
+ const actions = {
87
+ areaActions: this.context.areaActions,
88
+ holesActions: this.context.holesActions,
89
+ itemsActions: this.context.itemsActions,
90
+ sceneActions: this.context.sceneActions,
91
+ linesActions: this.context.linesActions,
92
+ projectActions: this.context.projectActions,
93
+ catalog: this.context.catalog
94
+ };
95
+
96
+ const self = this;
97
+ const { state } = this.props;
98
+ const { mode, scene } = state;
99
+
100
+ function setupLight(scene, inbBox) {
101
+ if (ARRAY_ELEVATION_VIEW_MODES.includes(mode)) {
102
+ const ambilight = new Three.AmbientLight('0xffffff', 3);
103
+ scene.add(ambilight);
104
+ } else {
105
+ const shadowMapSize = 2048;
106
+ const shadowCameraSize =
107
+ Math.max(
108
+ Math.abs(inbBox.min.x - inbBox.max.x),
109
+ Math.abs(inbBox.min.y - inbBox.max.y),
110
+ Math.abs(inbBox.min.z - inbBox.max.z)
111
+ ) / 2;
112
+ const shadowCameraFar = shadowCameraSize * 10;
113
+ const bboxCenter = new Three.Vector3(
114
+ (inbBox.min.x + inbBox.max.x) / 2,
115
+ inbBox.min.y,
116
+ (inbBox.min.z + inbBox.max.z) / 2
117
+ );
118
+
119
+ function addDirLight(inColor, inIntensity, inPosition) {
120
+ const dirLight = new Three.DirectionalLight(inColor, inIntensity);
121
+ dirLight.castShadow = true;
122
+ dirLight.shadow.mapSize.x = shadowMapSize;
123
+ dirLight.shadow.mapSize.y = shadowMapSize;
124
+ dirLight.shadow.camera.near = 0;
125
+ dirLight.shadow.camera.far = shadowCameraFar;
126
+
127
+ dirLight.shadow.camera.top = shadowCameraSize * 1.5;
128
+ dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;
129
+ dirLight.shadow.camera.left = -shadowCameraSize * 1.5;
130
+ dirLight.shadow.camera.right = shadowCameraSize * 1.5;
131
+ dirLight.position.copy(inPosition);
132
+
133
+ const targetObject = new Three.Object3D();
134
+ targetObject.position.copy(bboxCenter);
135
+ scene.add(targetObject);
136
+
137
+ dirLight.target = targetObject;
138
+ dirLight.target.updateMatrixWorld();
139
+
140
+ scene.add(dirLight);
141
+ }
142
+
143
+ function addSpotLight(
144
+ inColor,
145
+ inIntensity,
146
+ inPosition,
147
+ inTarget,
148
+ inDistance
149
+ ) {
150
+ const spotLight = new Three.SpotLight();
151
+ spotLight.intensity = inIntensity;
152
+ spotLight.color.setHex(inColor);
153
+ spotLight.position.copy(inPosition);
154
+ spotLight.angle = 1.3;
155
+ spotLight.distance = inDistance;
156
+ spotLight.penumbra = 1.8;
157
+ spotLight.decay = 0.01;
158
+
159
+ spotLight.castShadow = true;
160
+ spotLight.shadow.intensity = 2;
161
+ spotLight.shadow.mapSize.width = 4096;
162
+ spotLight.shadow.mapSize.height = 4096;
163
+
164
+ const targetObject = new Three.Object3D();
165
+ targetObject.position.copy(
166
+ new Three.Vector3(inTarget.x, 0, inTarget.z)
167
+ );
168
+ scene.add(targetObject);
169
+
170
+ spotLight.target = targetObject;
171
+ spotLight.target.updateMatrixWorld();
172
+ scene.add(spotLight);
173
+ }
174
+
175
+ const dirLightPos = new Three.Vector3(
176
+ inbBox.max.x,
177
+ inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),
178
+ inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)
179
+ );
180
+
181
+ addDirLight('white', 1.5, dirLightPos);
182
+
183
+ const ceiling = scene3D.getObjectByName('ceil');
184
+ if (ceiling) {
185
+ const ceilBBox = new Three.Box3().setFromObject(ceiling);
186
+
187
+ const spot1 = new Three.Vector3(
188
+ ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
189
+ ceilBBox.max.y - 0.5,
190
+ ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4
191
+ );
192
+ const spot2 = new Three.Vector3(
193
+ ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
194
+ ceilBBox.max.y - 0.5,
195
+ ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
196
+ );
197
+
198
+ const spot3 = new Three.Vector3(
199
+ ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
200
+ ceilBBox.max.y - 0.5,
201
+ ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
202
+ );
203
+ const spot4 = new Three.Vector3(
204
+ ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
205
+ ceilBBox.max.y - 0.5,
206
+ ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
207
+ );
208
+
209
+ const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);
210
+
211
+ // check if spotlight is inside the room
212
+ vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&
213
+ addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);
214
+ vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&
215
+ addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);
216
+ vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&
217
+ addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);
218
+ vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&
219
+ addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);
220
+ }
221
+ }
222
+ }
223
+
224
+ // Load data
225
+ this.setState({ isLoading: true, waitForRender: 0 });
226
+ this.props.setIsLoading3D(true);
227
+ const { promise, planData } = parseData(
228
+ scene,
229
+ actions,
230
+ this.context.catalog,
231
+ camera,
232
+ this.renderer,
233
+ state.mode
234
+ );
235
+
236
+ promise.then(() => {
237
+ let objToRemove = [];
238
+ planData.plan.traverse(obj => {
239
+ if (obj.geometry === null) {
240
+ objToRemove.push(obj);
241
+ }
242
+ });
243
+ objToRemove.forEach(obj => {
244
+ obj.removeFromParent();
245
+ });
246
+ const bbox = new Three.Box3().setFromObject(planData.plan);
247
+ if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {
248
+ //cameraControls.fitToBox(bbox, true);
249
+ if (cameraControls) {
250
+ const radius = 400; // Distance from target
251
+ const angleInDegrees = 5;
252
+ const angleInRadians = (angleInDegrees * Math.PI) / 180;
253
+
254
+ // Calculate a position angleInDegrees to the right on the horizontal circle
255
+ const eyeX = Math.sin(angleInRadians) * radius;
256
+ const eyeZ = Math.cos(angleInRadians) * radius;
257
+
258
+ cameraControls.setLookAt(eyeX, 0, eyeZ, 0, 0, 0); // Set camera with Y elevation
259
+ }
260
+ }
261
+ setupLight(scene3D, planData.boundingBox);
262
+
263
+ self.setState({ waitForRender: 1 });
264
+ });
265
+
266
+ const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
267
+ const layer = scene.getIn(['layers', scene.selectedLayer]);
268
+ const areas = [],
269
+ lights = [];
270
+
271
+ let snapBox = null;
272
+
273
+ // Check for data
274
+ let msg = '';
275
+ scene.layers.forEach(layer => {
276
+ if (layer.id === scene.selectedLayer || layer.visible) {
277
+ layer.items.forEach(item => {
278
+ if (item.doorStyle === null) {
279
+ if (!msg.includes(item.name + "'s doorStyle is null."))
280
+ msg += item.name + "'s doorStyle is null.\n";
281
+ }
282
+ });
283
+ }
284
+ });
285
+ if (msg !== '') {
286
+ confirm(msg);
287
+ }
288
+
289
+ init();
290
+ render();
291
+
292
+ area.forEach(data => {
293
+ areas.push(data);
294
+ });
295
+ for (let i = 0; i < areas.length; i++) {
296
+ let aVertices = [];
297
+ let lines = [];
298
+ let height = 100;
299
+ areas[i].vertices.forEach(data => {
300
+ aVertices.push(data);
301
+ });
302
+ layer.lines.forEach(data => {
303
+ lines.push(data);
304
+ });
305
+ for (let i = 0; i < lines.length; i++) {
306
+ let data = lines[i];
307
+ let realVec = [];
308
+ data.vertices.forEach(vec => {
309
+ realVec.push(vec);
310
+ });
311
+ if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {
312
+ height = convert(layer.ceilHeight)
313
+ .from(layer.unit)
314
+ .to(UNIT_CENTIMETER);
315
+ // height = data.properties.getIn(['height', 'length']);
316
+ break;
317
+ }
318
+ }
319
+ let vertices = [];
320
+ areas[i].vertices.forEach(datas => {
321
+ let vertex = scene.getIn([
322
+ 'layers',
323
+ scene.selectedLayer,
324
+ 'vertices',
325
+ datas
326
+ ]);
327
+ vertices.push(vertex);
328
+ });
329
+ vertices.push(vertices[0]);
330
+ let fLen = vertices.length - 1;
331
+ for (let i = 0; i < fLen; i++) {
332
+ let sX = vertices[i].x;
333
+ let sY = vertices[i].y;
334
+ let eX = vertices[i + 1].x;
335
+ let eY = vertices[i + 1].y;
336
+ let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));
337
+ for (let cLen = 200; cLen < len; cLen += 200) {
338
+ let cX = sX + ((eX - sX) * cLen) / len;
339
+ let cY = sY + ((eY - sY) * cLen) / len;
340
+ let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));
341
+ if (endLen <= 100) continue;
342
+ let vec2 = new Three.Vector2(cX - sX, cY - sY);
343
+ let angle = vec2.angle() + Math.PI / 2;
344
+ cX = Math.cos(angle) * 30 + cX;
345
+ cY = Math.sin(angle) * 30 + cY;
346
+ let spotLight = new Three.SpotLight(0xeeeeee, 1.7);
347
+ spotLight.angle = 0.76;
348
+ spotLight.castShadow = true;
349
+ spotLight.penumbra = 1;
350
+ spotLight.decay = 1.7;
351
+ spotLight.distance = height - 20;
352
+ let target = new Three.Object3D();
353
+ spotLight.target = target;
354
+ lights.push({
355
+ light: spotLight,
356
+ target: target,
357
+ x: cX,
358
+ y: cY,
359
+ height: height
360
+ });
361
+ }
362
+ }
363
+ }
364
+ // //////////////////////////
365
+
366
+ // OBJECT PICKING
367
+ let toIntersect = [planData.plan];
368
+ let mouse = new Three.Vector2();
369
+ let gridPlane = planData.grid;
370
+ let raycaster = new Three.Raycaster();
371
+ let selectedObject = {};
372
+ let currentObject = null;
373
+ let isSelected = false;
374
+ let bRotate = false;
375
+ let bMove = false;
376
+ let bMoveUP = false;
377
+ /** Transformation matrix of grid */
378
+ const gridMatrix = new Three.Matrix4();
379
+ let rayDirection = new Three.Vector3();
380
+ /** World position of grid plane */
381
+ let gridPlanOrigin = new Three.Vector3();
382
+ let Point = new Three.Vector2();
383
+ let sPoint = new Three.Vector2();
384
+
385
+ // SNAP FUNCTION VARIABLE
386
+ let snapFlag = false;
387
+ let snapAnimI = 0;
388
+ let snapDelta = 6;
389
+ let t_i = 0;
390
+ let targetPoint = new Three.Vector3();
391
+ let targetRot = 0;
392
+ let targetUVec = new Three.Vector3();
393
+ let targetCRotation = 0;
394
+ let targetObj = null;
395
+ let targetNumber = 0;
396
+
397
+ let allItemRect;
398
+ let allItemSnap;
399
+ let allLines;
400
+ let allLineRects;
401
+ let allLineSnap;
402
+ let allRect;
403
+ let allArea;
404
+
405
+ // end snap function variable///////////////////////
406
+ let backsplashVisible = false;
407
+ let holeItems = GeometryUtils.getHoleItems(layer);
408
+
409
+ let removeSnapBox = () => {
410
+ if (snapBox != null) {
411
+ planData.plan.remove(snapBox);
412
+ disposeObject(snapBox);
413
+ snapBox = null;
414
+ targetObj = null;
415
+ snapFlag = false;
416
+ }
417
+ };
418
+
419
+ const camToGrid = new Three.Vector3();
420
+ let camPos = camera.position;
421
+
422
+ const mapCursorPosition = (e, altitude) => {
423
+ camToGrid.subVectors(gridPlanOrigin, camPos);
424
+
425
+ let camD = camToGrid.y + (altitude ? altitude : 0);
426
+ let rayD = rayDirection.y;
427
+
428
+ const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);
429
+ intersectPt.y = gridPlanOrigin.y;
430
+ intersectPt.applyMatrix4(gridMatrix);
431
+
432
+ return { x: intersectPt.x, y: -intersectPt.z };
433
+ };
434
+
435
+ /* for Snap Functions*/
436
+
437
+ let pointLineDistance = function (point, line) {
438
+ // return distance from point to line and directional point of line
439
+ let pX = point.x;
440
+ let pY = point.y;
441
+ let l1x = line[0].x;
442
+ let l1y = line[0].y;
443
+ let l2x = line[1].x;
444
+ let l2y = line[1].y;
445
+ let pLine = new Three.Vector2(l1x - pX, l1y - pY);
446
+ let Line = new Three.Vector2(l1x - l2x, l1y - l2y);
447
+ let pAngle = pLine.angle();
448
+ let lAngle = Line.angle();
449
+ let pDistance = pLine.length();
450
+ let oDistance = Line.length();
451
+ let directDistance = Math.sin(pAngle - lAngle) * pDistance;
452
+ let lineDistance = Math.cos(pAngle - lAngle) * pDistance;
453
+ let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;
454
+ let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;
455
+ let dPoint = { x: dX, y: dY };
456
+ return { distance: directDistance, point: dPoint };
457
+ };
458
+ let getInterSect = function (shape1, shape2) {
459
+ // return result of intersect of two shape
460
+ let count = 0;
461
+ for (let i = 0; i < shape1.length - 1; i++) {
462
+ let sl1 = { x: shape1[i].x, y: shape1[i].y };
463
+ let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };
464
+ for (let j = 0; j < shape2.length - 1; j++) {
465
+ let el1 = { x: shape2[j].x, y: shape2[j].y };
466
+ let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };
467
+ let flag = GeometryUtils.getLineInterSect(
468
+ sl1.x,
469
+ sl1.y,
470
+ sl2.x,
471
+ sl2.y,
472
+ el1.x,
473
+ el1.y,
474
+ el2.x,
475
+ el2.y
476
+ );
477
+ if (flag) {
478
+ count++;
479
+ if (count > 1) return true;
480
+ }
481
+ }
482
+ }
483
+ return false;
484
+ };
485
+
486
+ this.getRectPoints = function (width, height, pos, rot) {
487
+ // return 4 points from it's position, width, height, and rotation info
488
+ let rX = width / 2;
489
+ let rY = height / 2;
490
+ let vertices = [];
491
+ let cRot = rot;
492
+ let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
493
+ let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
494
+ vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
495
+ rX = -rX;
496
+ pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
497
+ pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
498
+ vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
499
+ rY = -rY;
500
+ pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
501
+ pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
502
+ vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
503
+ rX = -rX;
504
+ pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
505
+ pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
506
+ vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
507
+ vertices.push(vertices[0]);
508
+ vertices.push(vertices[2]);
509
+ return vertices;
510
+ };
511
+
512
+ const prepareSnap = layer => {
513
+ allLines = GeometryUtils.getAllLines(layer);
514
+ allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
515
+ allItemRect = GeometryUtils.getAllItems(
516
+ this.props.state.scene,
517
+ actions.catalog,
518
+ allLineRects
519
+ );
520
+ allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
521
+ allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);
522
+ allRect = allItemRect.others.concat(allLineRects);
523
+ allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
524
+ allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
525
+ allArea = GeometryUtils.getAllArea(layer);
526
+ };
527
+
528
+ // prepareSnapSpec(layer);
529
+ let lineRect = layer => {
530
+ let areainfo = [];
531
+ layer.areas.forEach(area => {
532
+ let sz = area.vertices.size;
533
+ for (var i = 0; i < sz; i++) {
534
+ areainfo.push(area.vertices.get(i));
535
+ }
536
+ });
537
+ let rect = [];
538
+ areainfo.forEach(area => {
539
+ let vert = layer.vertices.get(area);
540
+ rect.push(vert.x, vert.y);
541
+ });
542
+ return rect;
543
+ };
544
+
545
+ this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {
546
+ //collision check from one object to every other object excpet target object
547
+ let layer = this.props.state.scene.getIn([
548
+ 'layers',
549
+ obj.userData.layerId
550
+ ]);
551
+ let layoutpos = 'utype';
552
+ if (item !== null) {
553
+ let catid = item.type;
554
+ let cat = catalog.elements[catid];
555
+ layoutpos = cat.info.layoutpos;
556
+ }
557
+ let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);
558
+ let sBounding = obj.children[0].userData;
559
+ let width = sBounding.max.x - sBounding.min.x;
560
+ let depth = sBounding.max.z - sBounding.min.z;
561
+ let oVertices = this.getRectPoints(
562
+ width,
563
+ depth,
564
+ oPos.clone(),
565
+ ((rot % 360) / 180) * Math.PI
566
+ );
567
+ let datas = [];
568
+ layer.items.forEach(data => {
569
+ datas.push(data);
570
+ });
571
+ for (let i = 0; i < datas.length; i++) {
572
+ let data = datas[i];
573
+ if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
574
+ continue;
575
+ let target =
576
+ planData.sceneGraph.layers[obj.userData.layerId].items[data.id];
577
+ if (target === undefined) {
578
+ console.log(
579
+ data.id +
580
+ ' does not exist in viewer3d/viewer3d.js collisionCheck function'
581
+ );
582
+ return false;
583
+ }
584
+ let item = layer.items.getIn([data.id]);
585
+ let ocatid = item.type;
586
+ let ocat = catalog.elements[ocatid];
587
+ let olayoutpos = ocat.info.layoutpos;
588
+ if (
589
+ !(
590
+ (layoutpos === BASE_CABINET_LAYOUTPOS &&
591
+ olayoutpos === WALL_CABINET_LAYOUTPOS) ||
592
+ (layoutpos === WALL_CABINET_LAYOUTPOS &&
593
+ olayoutpos === BASE_CABINET_LAYOUTPOS)
594
+ )
595
+ ) {
596
+ let tRot = item.rotation;
597
+ let tPos = new Three.Vector2(item.x, item.y);
598
+ let tBounding = target.children[0].userData;
599
+ let twidth = tBounding.max.x - tBounding.min.x;
600
+ let tdepth = tBounding.max.z - tBounding.min.z;
601
+ let tVertices = this.getRectPoints(
602
+ twidth,
603
+ tdepth,
604
+ tPos.clone(),
605
+ ((tRot % 360) / 180) * Math.PI
606
+ );
607
+ if (getInterSect(oVertices, tVertices)) {
608
+ return false;
609
+ }
610
+ }
611
+ }
612
+ datas = [];
613
+ layer.lines.forEach(data => {
614
+ datas.push(data);
615
+ });
616
+ for (let i = 0; i < datas.length; i++) {
617
+ let data = datas[i];
618
+ if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
619
+ continue;
620
+ let item = layer.lines.getIn([data.id]);
621
+ // let llayoutpos = catalog.elements[item.type].info.layoutpos;
622
+ let vertices = [];
623
+ item.vertices.forEach(data => {
624
+ let vertex = layer.vertices.get(data);
625
+ vertices.push({ x: vertex.x, y: vertex.y });
626
+ });
627
+ let vec = new Three.Vector2(
628
+ vertices[1].x - vertices[0].x,
629
+ vertices[1].y - vertices[0].y
630
+ );
631
+ let tRot = vec.angle();
632
+ let tPos = new Three.Vector2(
633
+ (vertices[0].x + vertices[1].x) / 2,
634
+ (vertices[0].y + vertices[1].y) / 2
635
+ );
636
+ let tdepth = item.properties.getIn(['thickness', 'length']);
637
+ let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);
638
+ let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);
639
+ if (getInterSect(oVertices, tVertices)) {
640
+ return false;
641
+ }
642
+ }
643
+ return true;
644
+ };
645
+
646
+ this.collisionHoleCheck = function (
647
+ obj,
648
+ pos,
649
+ rot,
650
+ tObj,
651
+ item = null,
652
+ catalog
653
+ ) {
654
+ let layer = this.props.state.scene.getIn([
655
+ 'layers',
656
+ obj.userData.layerId
657
+ ]);
658
+ let currentItem;
659
+ if (item !== null) {
660
+ let catid = item.type;
661
+ let cat = catalog.elements[catid];
662
+ currentItem = {
663
+ selectedItem: item,
664
+ cat
665
+ };
666
+ }
667
+ let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);
668
+ let sBounding = obj.children[0].userData;
669
+ let width = sBounding.max.x - sBounding.min.x;
670
+ let depth = sBounding.max.z - sBounding.min.z;
671
+ let oVertices = this.getRectPoints(
672
+ width,
673
+ depth,
674
+ oPos.clone(),
675
+ ((rot % 360) / 180) * Math.PI
676
+ );
677
+
678
+ let datas = [];
679
+ layer.items.forEach(data => {
680
+ datas.push(data);
681
+ });
682
+ for (let i = 0; i < datas.length; i++) {
683
+ let data = datas[i];
684
+ if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
685
+ continue;
686
+ let target =
687
+ planData.sceneGraph.layers[obj.userData.layerId].items[data.id];
688
+ if (target === undefined) {
689
+ console.log(
690
+ data.id +
691
+ ' does not exist in viewer3d/viewer3d.js collisionCheck function'
692
+ );
693
+ return false;
694
+ }
695
+ let item = layer.items.getIn([data.id]);
696
+ let ocatid = item.type;
697
+ let ocat = catalog.elements[ocatid];
698
+ if (!ocat)
699
+ ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];
700
+ let otherItem = {
701
+ item,
702
+ cat: ocat
703
+ };
704
+
705
+ if (
706
+ GeometryUtils.needSnap(currentItem, otherItem) &&
707
+ otherItem.cat.type != 'cabinet'
708
+ ) {
709
+ let tRot = item.rotation;
710
+ let tPos = new Three.Vector2(item.x, item.y);
711
+ let tBounding = target.children[0].userData;
712
+ let twidth = tBounding.max.x - tBounding.min.x;
713
+ let tdepth = tBounding.max.z - tBounding.min.z;
714
+ let tVertices = this.getRectPoints(
715
+ twidth,
716
+ tdepth,
717
+ tPos.clone(),
718
+ ((tRot % 360) / 180) * Math.PI
719
+ );
720
+ if (getInterSect(oVertices, tVertices)) {
721
+ return false;
722
+ }
723
+ }
724
+ }
725
+
726
+ let holes = [];
727
+ layer.lines.forEach(line => {
728
+ line.holes.forEach(holeID => {
729
+ let hole = layer.holes.get(holeID);
730
+ holes.push(hole);
731
+ });
732
+ });
733
+ let i = 0;
734
+ for (; i < holes.length; i++) {
735
+ let tPos = new Three.Vector2(holes[i].x, holes[i].y);
736
+ let twidth = holes[i].properties.getIn(['width', 'length']);
737
+ let theight = holes[i].properties.getIn(['thickness', 'length']);
738
+ let trot = holes[i].rotation;
739
+ let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);
740
+ if (getInterSect(oVertices, tVertices)) {
741
+ return false;
742
+ }
743
+ }
744
+ return true;
745
+ };
746
+
747
+ this.collisionSlide = function (
748
+ item3D,
749
+ originPos,
750
+ layer,
751
+ sVertices,
752
+ tPos,
753
+ item
754
+ ) {
755
+ let items = [];
756
+
757
+ let cur_category = '';
758
+ let catalog = actions.catalog;
759
+ if (layer.selected.items.size > 0) {
760
+ let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);
761
+ let catid = selectedItem.type;
762
+ let cat = catalog.elements[catid];
763
+ if (cat === undefined || cat === null)
764
+ cat = catalog.getIn(['elements', catid]);
765
+ cur_category = cat.obj.category;
766
+ }
767
+
768
+ layer.items.forEach(data => {
769
+ if (data.id == selectedObject.itemID) {
770
+ return;
771
+ }
772
+
773
+ items.push(data.toJS());
774
+ });
775
+ let oPos = new Three.Vector2(originPos.x, -originPos.z);
776
+
777
+ // sort from distance
778
+ for (let i = 0; i < items.length - 1; i++) {
779
+ for (let j = i + 1; j < items.length; j++) {
780
+ if (
781
+ verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >
782
+ verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))
783
+ ) {
784
+ let exchange = items[j];
785
+ items[j] = items[i];
786
+ items[i] = exchange;
787
+ }
788
+ }
789
+ }
790
+ let i = 0;
791
+
792
+ for (; i < items.length; i++) {
793
+ if (!items[i]) return;
794
+ let target =
795
+ planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];
796
+ if (target === undefined) {
797
+ return false;
798
+ }
799
+ let targetData = layer.items.getIn([items[i].id]);
800
+ let tRot = targetData.rotation;
801
+ let tPos = new Three.Vector2(targetData.x, targetData.y);
802
+ let tBounding = target.children[0].userData;
803
+ let twidth = tBounding.max.x - tBounding.min.x;
804
+ let tdepth = tBounding.max.z - tBounding.min.z;
805
+ let tVertices = this.getRectPoints(
806
+ twidth,
807
+ tdepth,
808
+ tPos.clone(),
809
+ ((tRot % 360) / 180) * Math.PI
810
+ );
811
+ if (getInterSect(sVertices, tVertices)) {
812
+ break;
813
+ }
814
+ }
815
+ if (items.length == 0 || !items[i]) return;
816
+ let target =
817
+ planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];
818
+ let targetData = layer.items.getIn([items[i].id]);
819
+ let targetPos = new Three.Vector2(targetData.x, targetData.y);
820
+ let tRot = targetData.rotation;
821
+ let tBounding = target.children[0].userData;
822
+ let twidth = tBounding.max.x - tBounding.min.x;
823
+ let tdepth = tBounding.max.z - tBounding.min.z;
824
+ let tVertices = this.getRectPoints(
825
+ twidth,
826
+ tdepth,
827
+ targetPos.clone(),
828
+ ((tRot % 360) / 180) * Math.PI
829
+ );
830
+ // ////////////////////////
831
+ let vArray = [];
832
+ let dteArray = [];
833
+ let lineArray = [];
834
+ let vdistanceArray = [];
835
+ let cVecArray = [];
836
+ let inFlag = false;
837
+ for (let i = 0; i < 4; i++) {
838
+ let v1 = tVertices[i];
839
+ let v2 = tVertices[i + 1];
840
+ let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [
841
+ { x: v1.x, y: v1.y },
842
+ { x: v2.x, y: v2.y }
843
+ ]);
844
+ dteArray.push(data.distance);
845
+ vArray.push(data.point);
846
+ lineArray.push([v1, v2]);
847
+ }
848
+ // if tPos in target object
849
+ let tPosDistance =
850
+ Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +
851
+ Math.abs(pointLineDistance(tPos, lineArray[2]).distance);
852
+ let realDistance = new Three.Vector2(
853
+ lineArray[1][0].x - lineArray[1][1].x,
854
+ lineArray[1][0].y - lineArray[1][1].y
855
+ ).length();
856
+ let tPosDistance1 =
857
+ Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +
858
+ Math.abs(pointLineDistance(tPos, lineArray[3]).distance);
859
+ let realDistance1 = new Three.Vector2(
860
+ lineArray[0][0].x - lineArray[0][1].x,
861
+ lineArray[0][0].y - lineArray[0][1].y
862
+ ).length();
863
+ if (
864
+ Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&
865
+ Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01
866
+ )
867
+ inFlag = true;
868
+ // ////////////////////
869
+ let key = 0;
870
+ // sort distance from origin point
871
+ for (let j = 0; j < dteArray.length - 1; j++) {
872
+ for (let k = j + 1; k < dteArray.length; k++) {
873
+ if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {
874
+ let temp = dteArray[k];
875
+ dteArray[j] = dteArray[k];
876
+ dteArray[k] = temp;
877
+ let temp1 = vArray[k];
878
+ vArray[j] = vArray[k];
879
+ vArray[k] = temp1;
880
+ let temp2 = lineArray[k];
881
+ lineArray[j] = lineArray[k];
882
+ lineArray[k] = temp2;
883
+ }
884
+ }
885
+ }
886
+ // //////////////////////////////
887
+ for (let i = 0; i < 4; i++) {
888
+ let data = pointLineDistance(sVertices[i], lineArray[key]);
889
+ vdistanceArray.push(data.distance);
890
+ cVecArray.push({
891
+ x: data.point.x - sVertices[i].x,
892
+ y: data.point.y - sVertices[i].y
893
+ });
894
+ }
895
+
896
+ for (let j = 0; j < vdistanceArray.length; j++) {
897
+ let tX = tPos.x + cVecArray[j].x;
898
+ let tY = tPos.y + cVecArray[j].y;
899
+ if (
900
+ this.collisionCheck(
901
+ item3D,
902
+ new Three.Vector2(tX, tY),
903
+ item.rotation,
904
+ {
905
+ userData: { itemId: null }
906
+ },
907
+ item,
908
+ this.context.catalog
909
+ )
910
+ ) {
911
+ item3D.position.set(tX, originPos.y, -tY);
912
+ sPoint.set(tX, tY);
913
+ break;
914
+ }
915
+ }
916
+ };
917
+
918
+ this.snap = function (obj, layer) {
919
+ // snap operation
920
+ let target = obj.userData.target;
921
+ for (; target.parent != null; ) {
922
+ if (target.name == 'pivot') break;
923
+ target = target.parent;
924
+ }
925
+ let source = obj.parent.parent.parent;
926
+ if (target.userData.type == 'item') {
927
+ let sRot = layer.getIn(['items', source.userData.itemId]).rotation;
928
+ let tRot = layer.getIn(['items', target.userData.itemId])
929
+ ? layer.getIn(['items', target.userData.itemId]).rotation
930
+ : 0;
931
+ let item = layer.getIn(['items', source.userData.itemId]);
932
+ let layoutType = item.layoutpos;
933
+ let altitudeLength = convert(
934
+ item.properties.getIn(['altitude', '_length'])
935
+ )
936
+ .from('in')
937
+ .to('cm');
938
+ let sBounding = source.children[0].userData;
939
+ let tBounding = target.children[0].userData;
940
+ let tPos = target.position.clone();
941
+ let width = sBounding.max.x - sBounding.min.x;
942
+ let height = sBounding.max.y - sBounding.min.y;
943
+ let depth = sBounding.max.z - sBounding.min.z;
944
+ let snapBoxGeom = new Three.BoxGeometry(width, height, depth);
945
+ let snapBoxObj = new Three.Mesh(
946
+ snapBoxGeom,
947
+ new Three.MeshBasicMaterial({
948
+ // color: 0x2cde6b,
949
+ // opacity: 0.7,
950
+ transparent: true,
951
+ blending: Three.MultiplyBlending
952
+ })
953
+ );
954
+ let removeSnapBoxObj = () => {
955
+ if (snapBoxObj) {
956
+ planData.plan.remove(snapBoxObj);
957
+ disposeObject(snapBoxObj);
958
+ }
959
+ snapFlag = false;
960
+ };
961
+ let box = new Three.BoxHelper(snapBoxObj, 0xffffff);
962
+ box.material.linewidth = 2;
963
+ box.material.depthTest = false;
964
+ box.renderOrder = 200;
965
+ snapBoxObj.add(box);
966
+ snapBoxObj.position.set(
967
+ source.position.x,
968
+ layoutType === WALL_CABINET_LAYOUTPOS
969
+ ? altitudeLength + source.position.y + height / 2
970
+ : source.position.y + height / 2,
971
+ source.position.z
972
+ );
973
+ snapBoxObj.rotation.set(
974
+ source.rotation.x,
975
+ source.rotation.y,
976
+ source.rotation.z
977
+ );
978
+ snapBoxObj.name = 'TransformBox';
979
+ planData.plan.add(snapBoxObj);
980
+ let deltaX =
981
+ (tBounding.max.x - tBounding.min.x) / 2 +
982
+ (sBounding.max.x - sBounding.min.x) / 2;
983
+ let deltaZ =
984
+ (tBounding.max.z - tBounding.min.z) / 2 -
985
+ (sBounding.max.z - sBounding.min.z) / 2;
986
+ let sPos = snapBoxObj.position.clone();
987
+ // avaliable snap place///////////////
988
+ let tPoses = [];
989
+ let pX =
990
+ tPos.x +
991
+ deltaX * Math.cos((tRot / 180) * Math.PI) +
992
+ deltaZ * Math.sin((tRot / 180) * Math.PI);
993
+ let pZ =
994
+ tPos.z -
995
+ deltaX * Math.sin((tRot / 180) * Math.PI) +
996
+ deltaZ * Math.cos((tRot / 180) * Math.PI);
997
+ tPoses.push(new Three.Vector3(pX, 0, pZ));
998
+ deltaX = -deltaX;
999
+ pX =
1000
+ tPos.x +
1001
+ deltaX * Math.cos((tRot / 180) * Math.PI) +
1002
+ deltaZ * Math.sin((tRot / 180) * Math.PI);
1003
+ pZ =
1004
+ tPos.z -
1005
+ deltaX * Math.sin((tRot / 180) * Math.PI) +
1006
+ deltaZ * Math.cos((tRot / 180) * Math.PI);
1007
+ tPoses.push(new Three.Vector3(pX, 0, pZ));
1008
+ deltaX =
1009
+ (tBounding.max.x - tBounding.min.x) / 2 -
1010
+ (sBounding.max.x - sBounding.min.x) / 2;
1011
+ deltaZ =
1012
+ -(tBounding.max.z - tBounding.min.z) / 2 -
1013
+ (sBounding.max.z - sBounding.min.z) / 2;
1014
+ pX =
1015
+ tPos.x +
1016
+ deltaX * Math.cos((tRot / 180) * Math.PI) +
1017
+ deltaZ * Math.sin((tRot / 180) * Math.PI);
1018
+ pZ =
1019
+ tPos.z -
1020
+ deltaX * Math.sin((tRot / 180) * Math.PI) +
1021
+ deltaZ * Math.cos((tRot / 180) * Math.PI);
1022
+ tPoses.push(new Three.Vector3(pX, 0, pZ));
1023
+ deltaX = -deltaX;
1024
+ pX =
1025
+ tPos.x +
1026
+ deltaX * Math.cos((tRot / 180) * Math.PI) +
1027
+ deltaZ * Math.sin((tRot / 180) * Math.PI);
1028
+ pZ =
1029
+ tPos.z -
1030
+ deltaX * Math.sin((tRot / 180) * Math.PI) +
1031
+ deltaZ * Math.cos((tRot / 180) * Math.PI);
1032
+ tPoses.push(new Three.Vector3(pX, 0, pZ));
1033
+ let distance = Math.sqrt(
1034
+ (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +
1035
+ (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)
1036
+ );
1037
+ let tNum = 1;
1038
+ tPos = tPoses[0].clone();
1039
+ for (let i = 1; i < tPoses.length; i++) {
1040
+ let curDis = Math.sqrt(
1041
+ (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +
1042
+ (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)
1043
+ );
1044
+ if (curDis < distance) {
1045
+ distance = curDis;
1046
+ tNum = i + 1;
1047
+ tPos = tPoses[i].clone();
1048
+ }
1049
+ }
1050
+ // //////////////////////////////////
1051
+ if (
1052
+ targetObj != null &&
1053
+ targetObj.userData.itemId == target.userData.itemId &&
1054
+ tNum == targetNumber
1055
+ ) {
1056
+ removeSnapBoxObj();
1057
+ return;
1058
+ } else {
1059
+ removeSnapBox();
1060
+ }
1061
+ // //////////////////////////////////
1062
+ if (tNum >= 3) tRot += 180;
1063
+
1064
+ snapAnimI = 0;
1065
+ t_i = 0;
1066
+ targetObj = target;
1067
+ targetNumber = tNum;
1068
+ targetRot = tRot;
1069
+ targetPoint = tPos;
1070
+ snapBox = snapBoxObj;
1071
+ let cx = sPos.x - tPos.x;
1072
+ let cz = sPos.z - tPos.z;
1073
+ targetUVec = new Three.Vector3(cx, 0, cz);
1074
+ targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1075
+ } else {
1076
+ let item = layer.getIn(['items', source.userData.itemId]);
1077
+ if (holeItems.length) {
1078
+ let i;
1079
+ for (i = 0; i < holeItems.length; i++) {
1080
+ let hole = holeItems[i];
1081
+ if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {
1082
+ if (
1083
+ item.y + selectedObj.size.width / 2 >=
1084
+ hole.y - hole.width / 2 &&
1085
+ item.y - selectedObj.size.width / 2 <=
1086
+ hole.y + hole.width / 2 &&
1087
+ (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2
1088
+ ? item.x <= hole.x &&
1089
+ item.x + selectedObj.size.height >= hole.x
1090
+ : item.x >= hole.x &&
1091
+ item.x - selectedObj.size.height <= hole.x)
1092
+ )
1093
+ break;
1094
+ } else {
1095
+ if (
1096
+ item.x + selectedObj.size.width / 2 >=
1097
+ hole.x - hole.width / 2 &&
1098
+ item.x - selectedObj.size.width / 2 <=
1099
+ hole.x + hole.width / 2 &&
1100
+ (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2
1101
+ ? item.y <= hole.y &&
1102
+ item.y + selectedObj.size.height >= hole.y
1103
+ : item.y >= hole.y &&
1104
+ item.y - selectedObj.size.height <= hole.y)
1105
+ )
1106
+ break;
1107
+ }
1108
+ }
1109
+ if (i != holeItems.length) return;
1110
+ }
1111
+ if (target.userData.type == 'hole') {
1112
+ snapFlag = false;
1113
+ return;
1114
+ } else {
1115
+ let layoutType = item.layoutpos;
1116
+ let altitudeLength = convert(
1117
+ item.properties.getIn(['altitude', '_length'])
1118
+ )
1119
+ .from('in')
1120
+ .to('cm');
1121
+ let sBounding = source.children[0].userData;
1122
+ let width = sBounding.max.x - sBounding.min.x;
1123
+ let height = sBounding.max.y - sBounding.min.y;
1124
+ let depth = sBounding.max.z - sBounding.min.z;
1125
+ let snapBoxGeom = new Three.BoxGeometry(width, height, depth);
1126
+ let snapBoxObj = new Three.Mesh(
1127
+ snapBoxGeom,
1128
+ new Three.MeshBasicMaterial({
1129
+ // color: 0x2cde6b,
1130
+ // opacity: 0.7,
1131
+ transparent: true,
1132
+ blending: Three.MultiplyBlending
1133
+ })
1134
+ );
1135
+ let removeSnapBoxObj = () => {
1136
+ if (snapBoxObj) {
1137
+ planData.plan.remove(snapBoxObj);
1138
+ disposeObject(snapBoxObj);
1139
+ }
1140
+ snapFlag = false;
1141
+ };
1142
+ let box = new Three.BoxHelper(snapBoxObj, 0xffffff);
1143
+ box.material.linewidth = 2;
1144
+ box.material.depthTest = false;
1145
+ box.renderOrder = 100;
1146
+ snapBoxObj.add(box);
1147
+
1148
+ snapBoxObj.position.set(
1149
+ source.position.x,
1150
+ layoutType === WALL_CABINET_LAYOUTPOS
1151
+ ? altitudeLength + source.position.y + height / 2
1152
+ : source.position.y + height / 2,
1153
+ source.position.z
1154
+ );
1155
+ snapBoxObj.rotation.set(
1156
+ source.rotation.x,
1157
+ source.rotation.y,
1158
+ source.rotation.z
1159
+ );
1160
+ snapBoxObj.name = 'TransformBox';
1161
+ planData.plan.add(snapBoxObj);
1162
+
1163
+ let snapLine = layer.getIn(['lines', target.userData.lineId]);
1164
+ // let snapLineThickness = snapLine.properties.getIn([
1165
+ // 'thickness',
1166
+ // 'length'
1167
+ // ]);
1168
+ let snapLineThickness = 10.64;
1169
+ let vertices = [];
1170
+ if (snapLine === undefined) return;
1171
+ snapLine.vertices.forEach(data => {
1172
+ let vec = layer.getIn(['vertices', data]);
1173
+ vertices.push(vec);
1174
+ });
1175
+ let iX = source.position.clone().x;
1176
+ let iY = -source.position.clone().z;
1177
+ let lineVec = new Three.Vector2(
1178
+ vertices[1].x - vertices[0].x,
1179
+ vertices[1].y - vertices[0].y
1180
+ );
1181
+ let oLength = Math.sqrt(
1182
+ lineVec.x * lineVec.x + lineVec.y * lineVec.y
1183
+ );
1184
+ lineVec.normalize();
1185
+ let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);
1186
+ let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);
1187
+ let angle = Math.abs(lineVec.angle() - vec2.angle());
1188
+ angle = angle > Math.PI ? 2 * Math.PI - angle : angle;
1189
+ let lineLength = Math.cos(angle) * vec2Legnth;
1190
+ let transLength = 0;
1191
+ if (lineLength < 100) {
1192
+ transLength = -lineLength + (snapLineThickness + width) / 2;
1193
+ }
1194
+ if (lineLength > oLength - 100) {
1195
+ transLength =
1196
+ -lineLength - (snapLineThickness + width) / 2 + oLength;
1197
+ }
1198
+ let directPoint = new Three.Vector2(
1199
+ lineVec.x * lineLength + vertices[0].x,
1200
+ lineVec.y * lineLength + vertices[0].y
1201
+ );
1202
+ let directLine = new Three.Vector2(
1203
+ directPoint.x - iX,
1204
+ directPoint.y - iY
1205
+ );
1206
+ let dLength = Math.sqrt(
1207
+ (iX - directPoint.x) * (iX - directPoint.x) +
1208
+ (iY - directPoint.y) * (iY - directPoint.y)
1209
+ );
1210
+ let reduceLen = (snapLineThickness + depth) / 2;
1211
+ let scale = (dLength - reduceLen) / dLength;
1212
+ let tPos = new Three.Vector2(
1213
+ iX + (directPoint.x - iX) * scale + lineVec.x * transLength,
1214
+ iY + (directPoint.y - iY) * scale + lineVec.y * transLength
1215
+ );
1216
+ let realAngle = directLine.angle() - Math.PI / 2;
1217
+ let tRot = (realAngle * 180) / Math.PI;
1218
+ let sPos = new Three.Vector2(iX, iY);
1219
+ let sRot = item.rotation;
1220
+ let tNum = 0;
1221
+ // //////////////////////////////////////
1222
+ // check part////
1223
+ let result = this.collisionCheck(
1224
+ source,
1225
+ tPos,
1226
+ tRot,
1227
+ target,
1228
+ item,
1229
+ this.context.catalog
1230
+ );
1231
+ // console.log('result', result);
1232
+ if (result == false) {
1233
+ removeSnapBoxObj();
1234
+ removeSnapBox();
1235
+ return;
1236
+ }
1237
+ // ////////////////
1238
+ if (targetObj === target && snapBox !== null) {
1239
+ removeSnapBoxObj();
1240
+ snapAnimI = 20;
1241
+ targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);
1242
+ let sourcePos = snapBox.position.clone();
1243
+ let cx = sourcePos.x - targetPoint.x;
1244
+ let cz = sourcePos.z - targetPoint.z;
1245
+ targetUVec = new Three.Vector3(cx, 0, cz);
1246
+ targetRot = tRot;
1247
+ targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1248
+ snapFlag = false;
1249
+ return;
1250
+ } else {
1251
+ removeSnapBox();
1252
+ }
1253
+ // //////////////////////////////////////
1254
+ snapAnimI = 0;
1255
+ t_i = 0;
1256
+ targetObj = target;
1257
+ targetNumber = tNum;
1258
+ targetRot = tRot;
1259
+ targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);
1260
+ snapBox = snapBoxObj;
1261
+ let sourcePos = snapBox.position.clone();
1262
+ let cx = sourcePos.x - targetPoint.x;
1263
+ let cz = sourcePos.z - targetPoint.z;
1264
+ targetUVec = new Three.Vector3(cx, 0, cz);
1265
+ targetRot = tRot;
1266
+ targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1267
+ }
1268
+ }
1269
+ };
1270
+
1271
+ /*end of snap functions*/
1272
+ let selectedObj = null;
1273
+ let firstMove = false;
1274
+ let prevX, prevY;
1275
+
1276
+ let selObj = null;
1277
+
1278
+ let createToolObject = () => {
1279
+ const canvas = document.createElement('canvas');
1280
+ canvas.width = 100;
1281
+ canvas.height = 200;
1282
+ canvas.style.width = 50 + 'px';
1283
+ canvas.style.height = 100 + 'px';
1284
+ const ctx = canvas.getContext('2d');
1285
+ ctx.fillStyle = '#FFFFFF';
1286
+ ctx.strokeStyle = '#000000';
1287
+ ctx.beginPath();
1288
+ ctx.arc(50, 50, 40, 0, 4 * Math.PI);
1289
+ ctx.fill();
1290
+ ctx.stroke();
1291
+ let img1 = new Image();
1292
+ img1.crossOrigin = 'anonymous';
1293
+ img1.src = '/assets/img/svg/3d_item_rotation.svg';
1294
+ img1.onload = function () {
1295
+ ctx.drawImage(img1, 16, 16, 68, 68);
1296
+ };
1297
+
1298
+ ctx.beginPath();
1299
+ ctx.arc(50, 150, 40, 0, 4 * Math.PI);
1300
+ ctx.fill();
1301
+ ctx.stroke();
1302
+ let img2 = new Image();
1303
+ img2.crossOrigin = 'anonymous';
1304
+ img2.src = '/assets/img/svg/3d_item_move.svg';
1305
+ img2.onload = function () {
1306
+ ctx.drawImage(img2, 16, 116, 68, 68);
1307
+ };
1308
+
1309
+ return canvas;
1310
+ };
1311
+
1312
+ let clockWise = true;
1313
+ let lastAngle = 0;
1314
+
1315
+ let createAngleObject = rotate => {
1316
+ const canvas = document.createElement('canvas');
1317
+ canvas.width = 100;
1318
+ canvas.height = 100;
1319
+ canvas.style.width = 100 + 'px';
1320
+ canvas.style.height = 100 + 'px';
1321
+ const ctx = canvas.getContext('2d');
1322
+ ctx.strokeStyle = '#FFFFFF';
1323
+ ctx.lineWidth = 10;
1324
+ ctx.beginPath();
1325
+ ctx.arc(50, 50, 45, 0, 2 * Math.PI);
1326
+ ctx.stroke();
1327
+
1328
+ ctx.strokeStyle = SECONDARY_PURPLE_COLOR;
1329
+ ctx.lineWidth = 6;
1330
+ ctx.beginPath();
1331
+ if (lastAngle < 15 && lastAngle > -15) {
1332
+ if (rotate >= 0) {
1333
+ clockWise = false;
1334
+ } else {
1335
+ clockWise = true;
1336
+ }
1337
+ if (lastAngle === 0) {
1338
+ if (rotate > -180) {
1339
+ clockWise = true;
1340
+ } else {
1341
+ clockWise = false;
1342
+ }
1343
+ }
1344
+ }
1345
+
1346
+ ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);
1347
+ ctx.stroke();
1348
+
1349
+ lastAngle = rotate;
1350
+
1351
+ return canvas;
1352
+ };
1353
+
1354
+ let toolTexture = new Three.Texture(createToolObject());
1355
+ toolTexture.needsUpdate = true;
1356
+
1357
+ let toolObj = new Three.Sprite(
1358
+ new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })
1359
+ );
1360
+ toolObj.material.transparent = true;
1361
+ toolObj.material.depthTest = false;
1362
+ toolObj.scale.set(20, 40, 20);
1363
+ toolObj.renderOrder = 3;
1364
+ toolObj.name = 'toolObj';
1365
+
1366
+ let angleTexture = new Three.Texture(createAngleObject(0));
1367
+ angleTexture.needsUpdate = true;
1368
+
1369
+ let angleObj = new Three.Sprite(
1370
+ new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })
1371
+ );
1372
+
1373
+ angleObj.scale.set(0.075, 0.075, 0.075);
1374
+ angleObj.material.transparent = true;
1375
+ angleObj.material.depthTest = false;
1376
+ angleObj.renderOrder = 3;
1377
+ angleObj.name = 'angleObj';
1378
+
1379
+ /**
1380
+ * Calculate plane point of mouse with `event` & `altitude`
1381
+ * * Calculate mouse.x & mouse.y
1382
+ * * Set raycaster from camera & Set raycaster direction
1383
+ * * Calculate Point & dispatch an action
1384
+ */
1385
+ const getPoint = (e, alti) => {
1386
+ mouse.x = (e.offsetX / this.width) * 2 - 1;
1387
+ mouse.y = (-e.offsetY / this.height) * 2 + 1;
1388
+
1389
+ raycaster.setFromCamera(mouse, camera);
1390
+ rayDirection = raycaster.ray.direction;
1391
+
1392
+ Point = mapCursorPosition(e, alti);
1393
+ this.context.projectActions.updateMouseCoord(Point);
1394
+ };
1395
+
1396
+ const getIntersectWallPoint = e => {
1397
+ mouse.x = (e.offsetX / this.width) * 2 - 1;
1398
+ mouse.y = (-e.offsetY / this.height) * 2 + 1;
1399
+
1400
+ raycaster.setFromCamera(mouse, camera);
1401
+ rayDirection = raycaster.ray.direction;
1402
+
1403
+ let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;
1404
+ let keys = Object.keys(lines);
1405
+ let arrMesh = [];
1406
+ keys.forEach(key => {
1407
+ lines[key].children[0].children.forEach(mesh => {
1408
+ if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);
1409
+ });
1410
+ });
1411
+ if (arrMesh.length > 0) {
1412
+ const intersects = raycaster.intersectObjects(arrMesh);
1413
+ if (intersects.length > 0) {
1414
+ let intersectPt = intersects[0].point;
1415
+ intersectPt.applyMatrix4(gridMatrix);
1416
+
1417
+ Point = { x: intersectPt.x, y: -intersectPt.z };
1418
+ this.context.projectActions.updateMouseCoord(Point);
1419
+ return true;
1420
+ }
1421
+ }
1422
+
1423
+ return false;
1424
+ };
1425
+
1426
+ this.mouseDownEvent = event => {
1427
+ gridPlanOrigin = gridPlane.position;
1428
+ gridMatrix.copy(gridPlane.matrixWorld).invert();
1429
+ let altitude = 0;
1430
+ if (
1431
+ allItemRect &&
1432
+ allItemRect.cur &&
1433
+ allItemRect.cur.itemInfo !== undefined
1434
+ ) {
1435
+ let properties = allItemRect.cur.itemInfo.properties;
1436
+ altitude = properties.getIn(['altitude', '_length']);
1437
+ let unit = properties.getIn(['altitude', '_unit']) || 'in';
1438
+ altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);
1439
+ }
1440
+ getPoint(event, altitude);
1441
+
1442
+ const state = this.props.state;
1443
+
1444
+ this.lastMousePosition.x = mouse.x;
1445
+ this.lastMousePosition.y = mouse.y;
1446
+
1447
+ const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);
1448
+ const sCount =
1449
+ layer.selected.areas.size +
1450
+ layer.selected.holes.size +
1451
+ layer.selected.items.size +
1452
+ layer.selected.lines.size;
1453
+
1454
+ if (sCount <= 0) {
1455
+ isSelected = false;
1456
+ } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {
1457
+ isSelected = true;
1458
+ }
1459
+
1460
+ prevX = Point.x;
1461
+ prevY = Point.y;
1462
+
1463
+ /**
1464
+ * 0 - rotate
1465
+ * 1 - move up/down
1466
+ * 2 - move x/y
1467
+ * 3 - camera rotate
1468
+ */
1469
+ let transflag = 3;
1470
+ raycaster.setFromCamera(mouse, camera);
1471
+ const meshes = [];
1472
+ toIntersect.forEach(object => {
1473
+ if (!object) return;
1474
+ object.traverse(o => {
1475
+ if (o.isMesh) meshes.push(o);
1476
+ });
1477
+ });
1478
+ let intersects = raycaster.intersectObjects(meshes, true);
1479
+
1480
+ let toolIntersects = raycaster.intersectObjects([toolObj], true);
1481
+
1482
+ if (toolIntersects.length > 0) {
1483
+ let distance = Math.sqrt(
1484
+ Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +
1485
+ Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)
1486
+ );
1487
+ if (distance <= 20) {
1488
+ transflag = 2;
1489
+ } else {
1490
+ distance = Math.sqrt(
1491
+ Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +
1492
+ Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)
1493
+ );
1494
+ if (distance <= 20) {
1495
+ transflag = 0;
1496
+ }
1497
+ }
1498
+ }
1499
+
1500
+ if (intersects.length > 0) {
1501
+ let i = 0,
1502
+ length = intersects.length;
1503
+ for (i = 0; i < length; i++) {
1504
+ if (
1505
+ intersects[i].object.type !== 'BoxHelper' &&
1506
+ // intersects[i].object.type === OBJTYPE_MESH &&
1507
+ intersects[i].object.name !== 'lineText' &&
1508
+ intersects[i].object.name !== 'soul' &&
1509
+ !intersects[i].object.name.includes('WarningBox')
1510
+ )
1511
+ break;
1512
+ }
1513
+
1514
+ if (intersects[i] !== undefined) {
1515
+ if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;
1516
+ if (intersects[i].object.name.indexOf('transHole') != -1)
1517
+ transflag = 2;
1518
+ } else {
1519
+ console.log('intersects[i] is undefined in viewer3d/viewer3d.js');
1520
+ }
1521
+ }
1522
+
1523
+ if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;
1524
+
1525
+ if (isSelected) {
1526
+ if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1527
+ let i;
1528
+ for (i = 0; i < intersects.length; i++) {
1529
+ if (
1530
+ intersects[i].object instanceof Three.Mesh &&
1531
+ intersects[i].object.name != 'TransformBox' &&
1532
+ intersects[i].object.type != 'Line' &&
1533
+ intersects[i].object.name != 'lineText' &&
1534
+ intersects[i].object.name != 'countertops' &&
1535
+ intersects[i].object.type != 'BoxHelper' &&
1536
+ intersects[i].object.name != 'floor' &&
1537
+ intersects[i].object.name != 'backFace' &&
1538
+ intersects[i].object.name != 'soul' &&
1539
+ !intersects[i].object.name.includes('backsplash') &&
1540
+ !intersects[i].object.name.includes('WarningBox')
1541
+ )
1542
+ break;
1543
+ }
1544
+ if (intersects[i] === undefined) {
1545
+ if (transflag !== 0 && transflag !== 2) {
1546
+ isSelected = false;
1547
+ this.context.projectActions.unselectAll();
1548
+ scene3D.remove(toolObj);
1549
+ this.context.itemsActions.removeReplacingSupport();
1550
+ // orbitController.enableRotate = true;
1551
+ return;
1552
+ }
1553
+ }
1554
+ if (selectedObject !== undefined) {
1555
+ sPoint.set(Point.x, Point.y);
1556
+ if (transflag == 0) {
1557
+ scene3D.remove(toolObj);
1558
+ let alti = 0;
1559
+ if (
1560
+ allItemRect &&
1561
+ allItemRect.cur &&
1562
+ allItemRect.cur.itemInfo !== undefined
1563
+ ) {
1564
+ let properties = allItemRect.cur.itemInfo.properties;
1565
+ alti = properties.getIn(['altitude', '_length']);
1566
+ let unit = properties.getIn(['altitude', '_unit']) || 'in';
1567
+ alti = convert(alti).from(unit).to(this.props.state.scene.unit);
1568
+ }
1569
+ getPoint(
1570
+ { offsetX: event.offsetX - 50, offsetY: event.offsetY },
1571
+ alti
1572
+ );
1573
+ let selectedItem =
1574
+ planData.sceneGraph.layers[selectedObject.layerID].items[
1575
+ selectedObject.itemID
1576
+ ];
1577
+ if (isUndefined(selectedItem)) return;
1578
+ const selItem = this.props.state.scene.layers
1579
+ .get(selectedObject.layerID)
1580
+ .items.get(selectedObject.itemID);
1581
+
1582
+ lastAngle = 0;
1583
+
1584
+ angleObj.position.set(
1585
+ planData.plan.position.x + Point.x,
1586
+ selItem.category === 'lighting'
1587
+ ? -planData.plan.position.y -
1588
+ selItem.properties.get('height').get('length')
1589
+ : selItem.properties.get('altitude').get('length') +
1590
+ planData.plan.position.y,
1591
+ planData.plan.position.z - Point.y
1592
+ );
1593
+
1594
+ angleTexture.image = createAngleObject(0);
1595
+ angleTexture.needsUpdate = true;
1596
+
1597
+ scene3D.add(angleObj);
1598
+ this.setState({ angleObj: angleObj });
1599
+ let centerPos = Point;
1600
+ getPoint(event, alti);
1601
+
1602
+ this.context.itemsActions.beginRotatingItem3D(
1603
+ selectedObject.layerID,
1604
+ selectedObject.itemID,
1605
+ Point.x,
1606
+ Point.y,
1607
+ centerPos.x,
1608
+ centerPos.y
1609
+ );
1610
+ bRotate = true;
1611
+ } else if (transflag == 1) {
1612
+ bMoveUP = true;
1613
+ } else if (transflag == 2) {
1614
+ switch (true) {
1615
+ case 'holeID' in selectedObject:
1616
+ this.context.holesActions.beginDraggingHole3D(
1617
+ selectedObject.layerID,
1618
+ selectedObject.holeID,
1619
+ Point.x,
1620
+ Point.y
1621
+ );
1622
+ break;
1623
+ default:
1624
+ this.context.itemsActions.beginDraggingItem3D(
1625
+ selectedObject.layerID,
1626
+ selectedObject.itemID,
1627
+ Point.x,
1628
+ Point.y
1629
+ );
1630
+ break;
1631
+ }
1632
+ bMove = true;
1633
+ scene3D.remove(toolObj);
1634
+ }
1635
+ if (!ARRAY_ELEVATION_VIEW_MODES.includes(mode))
1636
+ cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
1637
+ }
1638
+ } else {
1639
+ isSelected = false;
1640
+ this.context.projectActions.unselectAll();
1641
+ scene3D.remove(toolObj);
1642
+ this.context.itemsActions.removeReplacingSupport();
1643
+ // orbitController.enableRotate = true;
1644
+ return;
1645
+ }
1646
+ }
1647
+ };
1648
+
1649
+ this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color
1650
+ this.renderer.setSize(this.width, this.height);
1651
+
1652
+ // Add the output of the renderer to the html element
1653
+ const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);
1654
+ canvasWrapper.appendChild(this.renderer.domElement);
1655
+
1656
+ //
1657
+
1658
+ if (
1659
+ scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=
1660
+ 0
1661
+ ) {
1662
+ // if selected Object
1663
+ isSelected = true;
1664
+ selectedObject.layerID = scene.selectedLayer;
1665
+ selectedObject.itemID = scene
1666
+ .getIn(['layers', scene.selectedLayer, 'selected', 'items'])
1667
+ .toJS()[0];
1668
+ setTimeout(() => {
1669
+ try {
1670
+ currentObject =
1671
+ planData.sceneGraph.layers[selectedObject.layerID].items[
1672
+ selectedObject.itemID
1673
+ ];
1674
+ if (isUndefined(currentObject)) return;
1675
+ const selItem = this.props.state.scene.layers
1676
+ .get(selectedObject.layerID)
1677
+ .items.get(selectedObject.itemID);
1678
+ let itemPos = currentObject.position.clone();
1679
+ toolObj.position.set(
1680
+ planData.plan.position.x + itemPos.x,
1681
+ selItem.category === 'lighting'
1682
+ ? -planData.plan.position.y -
1683
+ selItem.properties.get('height').get('length')
1684
+ : planData.plan.position.y + currentObject.children[0].position.y,
1685
+ planData.plan.position.z + itemPos.z
1686
+ );
1687
+
1688
+ scene3D.add(toolObj);
1689
+ this.setState({ toolObj: toolObj });
1690
+ } catch (err) {
1691
+ console.log(
1692
+ 'selectedObject : ' +
1693
+ JSON.stringify(selectedObject) +
1694
+ '\nError: ' +
1695
+ err
1696
+ );
1697
+ }
1698
+ }, 2000);
1699
+ }
1700
+
1701
+ // Scene functions
1702
+
1703
+ function init() {
1704
+ clock = new Three.Clock();
1705
+ scene3D = new Three.Scene();
1706
+ scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
1707
+ // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
1708
+ window.scene3D = scene3D;
1709
+ // Camera
1710
+ if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {
1711
+ let { layers } = scene;
1712
+ let selectedLayer = layers.get(scene.selectedLayer);
1713
+ let ceilHeight = convert(selectedLayer.ceilHeight)
1714
+ .from(scene.rulerUnit)
1715
+ .to(scene.unit);
1716
+ let vertices = selectedLayer.vertices.toJS();
1717
+ let maxX = 0,
1718
+ maxY = 0,
1719
+ minX = 0,
1720
+ minY = 0;
1721
+ let lines = [];
1722
+ selectedLayer.lines.toArray().forEach(line => {
1723
+ let vertex0 = selectedLayer.vertices.get(line.vertices.get(0));
1724
+ let vertex1 = selectedLayer.vertices.get(line.vertices.get(1));
1725
+ let { x: x1, y: y1 } = vertex0;
1726
+ let { x: x2, y: y2 } = vertex1;
1727
+ let data = line.toJS();
1728
+ data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };
1729
+ switch (mode) {
1730
+ case MODE_FRONT_ELEVATION_VIEW:
1731
+ if (almostEqual(y1, y2) && x1 < x2) {
1732
+ lines.push(data);
1733
+ }
1734
+ break;
1735
+ case MODE_BACK_ELEVATION_VIEW:
1736
+ if (almostEqual(y1, y2) && x1 > x2) {
1737
+ lines.push(data);
1738
+ }
1739
+ break;
1740
+ case MODE_LEFT_ELEVATION_VIEW:
1741
+ if (almostEqual(x1, x2) && y1 < y2) {
1742
+ lines.push(data);
1743
+ }
1744
+ break;
1745
+ case MODE_RIGHT_ELEVATION_VIEW:
1746
+ if (almostEqual(x1, x2) && y1 > y2) {
1747
+ lines.push(data);
1748
+ }
1749
+ break;
1750
+ default:
1751
+ break;
1752
+ }
1753
+ });
1754
+ vertices.toArray().forEach(vertex => {
1755
+ if (lines.filter(line => line.vertices.includes(vertex.id)).length) {
1756
+ maxX = Math.max(vertex.x, maxX);
1757
+ maxY = Math.max(vertex.y, maxY);
1758
+ if (minX === 0) minX = vertex.x;
1759
+ if (minY === 0) minY = vertex.y;
1760
+ minX = Math.min(vertex.x, minX);
1761
+ minY = Math.min(vertex.y, minY);
1762
+ }
1763
+ });
1764
+ let line_length, angle, posX, posY;
1765
+ switch (state.mode) {
1766
+ case MODE_FRONT_ELEVATION_VIEW:
1767
+ line_length = maxX - minX;
1768
+ posY = minY - 100;
1769
+ posX = (minX + maxX) / 2;
1770
+ angle = 0;
1771
+ break;
1772
+ case MODE_RIGHT_ELEVATION_VIEW:
1773
+ line_length = maxY - minY;
1774
+ posX = minX - 100;
1775
+ posY = (minY + maxY) / 2;
1776
+ angle = -Math.PI / 2;
1777
+ break;
1778
+ case MODE_LEFT_ELEVATION_VIEW:
1779
+ line_length = maxY - minY;
1780
+ posX = maxX + 100;
1781
+ posY = (minY + maxY) / 2;
1782
+ angle = Math.PI / 2;
1783
+ break;
1784
+ case MODE_BACK_ELEVATION_VIEW:
1785
+ line_length = maxX - minX;
1786
+ posY = maxY + 100;
1787
+ posX = (minX + maxX) / 2;
1788
+ angle = Math.PI;
1789
+ break;
1790
+ }
1791
+ let scale = Math.min(
1792
+ (self.width * 0.85) / line_length,
1793
+ (self.height * 0.85) / ceilHeight
1794
+ );
1795
+ // let frontRect = {width: line_length * scale, height: ceilHeight * scale};
1796
+ let cameraRect = {
1797
+ width: self.width / scale,
1798
+ height: self.height / scale
1799
+ };
1800
+ camera = new Three.OrthographicCamera(
1801
+ -cameraRect.width / 2,
1802
+ cameraRect.width / 2,
1803
+ cameraRect.height / 2,
1804
+ -cameraRect.height / 2,
1805
+ 1,
1806
+ 10000
1807
+ );
1808
+ camera.position.set(posX, ceilHeight / 2, -posY);
1809
+ camera.rotation.set(0, angle, 0);
1810
+ } else {
1811
+ const aspectRatio = self.width / self.height;
1812
+ camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);
1813
+ camera.position.set(0, 0, 1);
1814
+ }
1815
+ camera.layers.enable(1);
1816
+
1817
+ function loadENV() {
1818
+ new RGBELoader().load(
1819
+ '/assets/brown_photostudio_02_1k.hdr',
1820
+ function (texture) {
1821
+ texture.mapping = Three.EquirectangularReflectionMapping;
1822
+ scene3D.environment = texture;
1823
+ texture.dispose();
1824
+ }
1825
+ );
1826
+ }
1827
+
1828
+ // Camera Controls
1829
+ if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {
1830
+ cameraControls = new CameraControls(camera, self.renderer.domElement);
1831
+ cameraControls.dollyToCursor = true;
1832
+ cameraControls.infinityDolly = true;
1833
+ cameraControls.minDistance = 50;
1834
+ cameraControls.maxDistance = Infinity;
1835
+ cameraControls.zoomSpeed = 1;
1836
+
1837
+ loadENV();
1838
+ }
1839
+
1840
+ scene3D.add(planData.plan);
1841
+ scene3D.add(planData.grid);
1842
+ scene3D.add(camera);
1843
+ if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {
1844
+ planData.cam.add(camera);
1845
+ scene3D.add(planData.cam);
1846
+ } else {
1847
+ pivot = new Three.Object3D();
1848
+ pivot.add(camera);
1849
+ scene3D.add(pivot);
1850
+ }
1851
+
1852
+ // LIGHT
1853
+
1854
+ let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light
1855
+ }
1856
+
1857
+ function render() {
1858
+ const delta = clock.getDelta(); // Get time delta for smooth updates
1859
+ if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode))
1860
+ cameraControls.update(delta);
1861
+ for (let i = 0; i < lights.length; i++) {
1862
+ lights[i].light.position.set(
1863
+ planData.plan.position.x + lights[i].x,
1864
+ planData.plan.position.y + lights[i].height - 10,
1865
+ planData.plan.position.z - lights[i].y
1866
+ );
1867
+ lights[i].target.position.set(
1868
+ planData.plan.position.x + lights[i].x,
1869
+ planData.plan.position.y,
1870
+ planData.plan.position.z - lights[i].y
1871
+ );
1872
+ }
1873
+
1874
+ camera.updateMatrix();
1875
+ camera.updateMatrixWorld();
1876
+
1877
+ for (let elemID in planData.sceneGraph.LODs) {
1878
+ planData.sceneGraph.LODs[elemID].update(camera);
1879
+ }
1880
+ if (snapBox !== null) {
1881
+ if (snapAnimI >= 15) {
1882
+ if ('x' in targetPoint)
1883
+ snapBox.position.set(
1884
+ targetPoint.x,
1885
+ snapBox.position.y,
1886
+ targetPoint.z
1887
+ );
1888
+ snapFlag = false;
1889
+ t_i++;
1890
+ } else {
1891
+ if (snapAnimI == 0) {
1892
+ targetCRotation =
1893
+ ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *
1894
+ 180) /
1895
+ Math.PI) %
1896
+ 360;
1897
+ if (targetCRotation > 180) targetCRotation -= 360;
1898
+ if (targetCRotation < -180) targetCRotation += 360;
1899
+ targetCRotation = (targetCRotation / 180) * Math.PI;
1900
+ }
1901
+ if (snapAnimI < 10) {
1902
+ snapBox.rotateY(targetCRotation / 10);
1903
+ } else {
1904
+ snapBox.position.set(
1905
+ snapBox.position.clone().x - targetUVec.x / 10,
1906
+ snapBox.position.clone().y - targetUVec.y / 10,
1907
+ snapBox.position.clone().z - targetUVec.z / 10
1908
+ );
1909
+ }
1910
+ snapAnimI++;
1911
+ }
1912
+ }
1913
+
1914
+ if (t_i === 20) {
1915
+ //stop snap after 5s
1916
+ removeSnapBox();
1917
+ }
1918
+
1919
+ // hide hole if wall is not visible
1920
+ let layerID = self.props.state.scene.selectedLayer;
1921
+ let layer = self.props.state.scene.layers.get(layerID);
1922
+ layer.holes.forEach(data => {
1923
+ let line = planData.sceneGraph.layers[layerID].lines[data.line];
1924
+ let hole = planData.sceneGraph.layers[layerID].holes[data.id];
1925
+ if (line instanceof Three.Object3D && !line.isMesh) {
1926
+ line = line.children[0].children[0];
1927
+ // index(faces) of the line
1928
+ const indexAttribute = line.geometry.getIndex();
1929
+ const firstFaceIndices = [
1930
+ indexAttribute.getX(0),
1931
+ indexAttribute.getX(1),
1932
+ indexAttribute.getX(2)
1933
+ ];
1934
+
1935
+ if (firstFaceIndices == undefined) return;
1936
+ // normal vector of the line
1937
+ const normalAttribute = line.geometry.attributes.normal;
1938
+ let normal = new Three.Vector3()
1939
+ .fromBufferAttribute(normalAttribute, 0)
1940
+ .clone();
1941
+ normal = normal
1942
+ .applyMatrix4(line.matrixWorld)
1943
+ .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))
1944
+ .normalize();
1945
+ let vertices = layer.lines.get(data.line).vertices.toJS();
1946
+ let vertex1 = layer.vertices.get(vertices[0]);
1947
+ let vertex2 = layer.vertices.get(vertices[1]);
1948
+ let cX = (vertex1.x + vertex2.x) / 2;
1949
+ let cY = (vertex1.y + vertex2.y) / 2;
1950
+ let posVec = new Three.Vector3(cX, 150, -cY);
1951
+ posVec = posVec.add(planData.plan.position.clone());
1952
+ let cameraLine = camera.position.clone().sub(posVec);
1953
+ if (hole) {
1954
+ hole.traverse(child => {
1955
+ if (child.isMesh) {
1956
+ child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;
1957
+ child.material.transparent =
1958
+ cameraLine.dot(normal) > 0 ? false : true;
1959
+ child.material.needsUpdate = true;
1960
+ }
1961
+ });
1962
+ }
1963
+ }
1964
+ // /////////////////////////////////////
1965
+ });
1966
+
1967
+ self.renderer.render(scene3D, camera);
1968
+ self.renderingID = requestAnimationFrame(render);
1969
+
1970
+ if (self.state.waitForRender > 0) {
1971
+ self.state.waitForRender++;
1972
+ if (self.state.waitForRender > 2) {
1973
+ self.setState({ isLoading: false, waitForRender: 0 });
1974
+ setTimeout(() => self.props.setIsLoading3D(false), 100);
1975
+ console.log('257 line: false');
1976
+ self.renderer.domElement.style.display = 'block';
1977
+ }
1978
+ }
1979
+ }
1980
+
1981
+ //
1982
+
1983
+ window.planData = planData;
1984
+ this.planData = planData;
1985
+ this.camera = camera;
1986
+ this.cameraControls = cameraControls;
1987
+ this.scene3D = scene3D;
1988
+
1989
+ //
1990
+
1991
+ prepareSnap(layer);
1992
+ }
1993
+
1994
+ componentWillUnmount() {
1995
+ cancelAnimationFrame(this.renderingID);
1996
+
1997
+ if (!ARRAY_ELEVATION_VIEW_MODES.includes(this.props.state.mode)) {
1998
+ if (this.cameraControls !== undefined) this.cameraControls.dispose();
1999
+ }
2000
+
2001
+ disposeScene(this.scene3D);
2002
+ this.scene3D.remove(this.planData.plan);
2003
+ this.scene3D.remove(this.planData.grid);
2004
+
2005
+ this.scene3D = null;
2006
+ this.planData = null;
2007
+ this.camera = null;
2008
+ this.cameraControls = null;
2009
+ this.renderer.renderLists.dispose();
2010
+ }
2011
+
2012
+ componentWillReceiveProps(nextProps) {
2013
+ let { width, height } = nextProps;
2014
+ let actions = {
2015
+ areaActions: this.context.areaActions,
2016
+ holesActions: this.context.holesActions,
2017
+ itemsActions: this.context.itemsActions,
2018
+ sceneActions: this.context.sceneActions,
2019
+ linesActions: this.context.linesActions,
2020
+ projectActions: this.context.projectActions,
2021
+ catalog: this.context.catalog
2022
+ };
2023
+
2024
+ this.width = width;
2025
+ this.height = height;
2026
+
2027
+ this.renderer.setSize(width, height);
2028
+
2029
+ let allLines;
2030
+ let allLineRects;
2031
+ let allItemRect;
2032
+
2033
+ this.camera.aspect = width / height;
2034
+ this.camera.updateProjectionMatrix();
2035
+
2036
+ let data = nextProps.state.scene;
2037
+ let layer = data.getIn(['layers', data.selectedLayer]);
2038
+ const self = this;
2039
+
2040
+ function implementBacksplash() {
2041
+ let allItems = GeometryUtils.getAllItemSpecified(
2042
+ nextProps.state.scene,
2043
+ actions.catalog,
2044
+ BASE_CABINET_LAYOUTPOS
2045
+ );
2046
+ let i,
2047
+ items = [];
2048
+ for (i = 0; i < allItems.others.length; i++)
2049
+ items.push(allItems.others[i]);
2050
+ if (allItems.cur) items.push(allItems.cur);
2051
+
2052
+ for (i = 0; i < items.length; i++) {
2053
+ let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
2054
+ let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
2055
+ actions.itemsActions.setBacksplashVisible(
2056
+ items[i].itemInfo.id,
2057
+ visible
2058
+ );
2059
+
2060
+ createBacksplash(
2061
+ items[i],
2062
+ nextProps.state.scene.getIn([
2063
+ 'layers',
2064
+ nextProps.state.scene.selectedLayer
2065
+ ]),
2066
+ planData,
2067
+ nextProps.state.scene
2068
+ );
2069
+ }
2070
+ }
2071
+
2072
+ function implementWarningBox() {
2073
+ let holeItems = GeometryUtils.getHoleItems(layer);
2074
+ let i,
2075
+ items = [];
2076
+ for (i = 0; i < allItemRect.others.length; i++)
2077
+ items.push(allItemRect.others[i]);
2078
+ if (allItemRect.cur) items.push(allItemRect.cur);
2079
+
2080
+ for (i = 0; i < items.length; i++)
2081
+ checkCabinetOverlap(
2082
+ { x: items[i].pos.x, y: items[i].pos.y },
2083
+ items[i],
2084
+ holeItems,
2085
+ planData
2086
+ );
2087
+ }
2088
+
2089
+ let prepareSnapSpec = layer => {
2090
+ allLines = GeometryUtils.getAllLines(layer);
2091
+ allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
2092
+ allItemRect = GeometryUtils.getAllItemSpecified(
2093
+ this.props.state.scene,
2094
+ actions.catalog,
2095
+ [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]
2096
+ );
2097
+ };
2098
+
2099
+ let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);
2100
+
2101
+ if (this.state.showflag) {
2102
+ prepareSnapSpec(layer);
2103
+ implementBacksplash();
2104
+ implementWarningBox();
2105
+ this.setState({ showflag: false });
2106
+ }
2107
+ if (
2108
+ nextProps.state.scene !== this.props.state.scene ||
2109
+ (nextProps.state.doorStyle &&
2110
+ nextProps.state.doorStyle.get('name') !==
2111
+ this.props.state.doorStyle.get('name'))
2112
+ ) {
2113
+ let changedValues = diff(this.props.state.scene, nextProps.state.scene);
2114
+ prepareSnapSpec(layer);
2115
+ if (
2116
+ nextProps.state.doorStyle &&
2117
+ nextProps.state.doorStyle.get('name') ===
2118
+ this.props.state.doorStyle.get('name')
2119
+ ) {
2120
+ self.setState({ isLoading: true, waitForRender: 0 });
2121
+ this.props.setIsLoading3D(true);
2122
+ self.renderer.domElement.style.display = 'none';
2123
+ }
2124
+ if (nextProps.state.scene.showfg == true) {
2125
+ implementBacksplash();
2126
+ implementWarningBox();
2127
+ } else {
2128
+ deleteSpecifiedMeshObjects('TransformBox');
2129
+ }
2130
+ let { toolObj, angleObj } = this.state;
2131
+ var { promise } = updateScene(
2132
+ this.planData,
2133
+ nextProps.state.scene,
2134
+ this.props.state.scene,
2135
+ changedValues.toJS(),
2136
+ actions,
2137
+ this.context.catalog,
2138
+ nextProps.state.mode,
2139
+ toolObj,
2140
+ angleObj
2141
+ );
2142
+ promise.then(p1Value => {
2143
+ self.setState({ waitForRender: 1 });
2144
+ });
2145
+ }
2146
+ }
2147
+
2148
+ render() {
2149
+ const { isLoading } = this.state;
2150
+ if (isLoading) {
2151
+ // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'none');
2152
+ this.renderer.domElement.style.display = 'none';
2153
+ return (
2154
+ <div
2155
+ style={{
2156
+ alignItems: ' center',
2157
+ width: this.props.width,
2158
+ height: this.props.height,
2159
+ display: 'inline-flex',
2160
+ justifyContent: 'center'
2161
+ }}
2162
+ >
2163
+ <img
2164
+ style={{
2165
+ width: '70px',
2166
+ height: '70px',
2167
+ animation: 'spin 2s linear infinite'
2168
+ }}
2169
+ src={'/assets/img/loading_large.gif'}
2170
+ alt="img"
2171
+ />
2172
+ </div>
2173
+ );
2174
+ } else {
2175
+ this.renderer.domElement.style.pointerEvents = 'auto';
2176
+ this.renderer.domElement.style.opacity = '1';
2177
+ // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'block');
2178
+ return React.createElement('div', { ref: 'canvasWrapper' });
2179
+ }
2180
+ }
2181
+ }
2182
+
2183
+ Viewer3DElevationDownload.propTypes = {
2184
+ state: PropTypes.object.isRequired,
2185
+ width: PropTypes.number.isRequired,
2186
+ height: PropTypes.number.isRequired,
2187
+ replaceCabinet: PropTypes.func.isRequired
2188
+ };
2189
+
2190
+ Viewer3DElevationDownload.contextTypes = {
2191
+ areaActions: PropTypes.object.isRequired,
2192
+ holesActions: PropTypes.object.isRequired,
2193
+ itemsActions: PropTypes.object.isRequired,
2194
+ linesActions: PropTypes.object.isRequired,
2195
+ sceneActions: PropTypes.object.isRequired,
2196
+ projectActions: PropTypes.object.isRequired,
2197
+ catalog: PropTypes.object
2198
+ };