kitchen-simulator 5.0.0-test.4 → 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 (751) hide show
  1. package/package.json +23 -41
  2. package/es/@history.js +0 -3
  3. package/es/@history.js.map +0 -1
  4. package/es/AppContext.js +0 -4
  5. package/es/AppContext.js.map +0 -1
  6. package/es/KitchenConfigurator.js +0 -1345
  7. package/es/KitchenConfigurator.js.map +0 -1
  8. package/es/KitchenConfiguratorApp.js +0 -532
  9. package/es/KitchenConfiguratorApp.js.map +0 -1
  10. package/es/actions/area-actions.js +0 -15
  11. package/es/actions/area-actions.js.map +0 -1
  12. package/es/actions/export.js +0 -26
  13. package/es/actions/export.js.map +0 -1
  14. package/es/actions/groups-actions.js +0 -90
  15. package/es/actions/groups-actions.js.map +0 -1
  16. package/es/actions/holes-actions.js +0 -120
  17. package/es/actions/holes-actions.js.map +0 -1
  18. package/es/actions/items-actions.js +0 -314
  19. package/es/actions/items-actions.js.map +0 -1
  20. package/es/actions/lines-actions.js +0 -83
  21. package/es/actions/lines-actions.js.map +0 -1
  22. package/es/actions/project-actions.js +0 -282
  23. package/es/actions/project-actions.js.map +0 -1
  24. package/es/actions/scene-actions.js +0 -34
  25. package/es/actions/scene-actions.js.map +0 -1
  26. package/es/actions/user-actions.js +0 -59
  27. package/es/actions/user-actions.js.map +0 -1
  28. package/es/actions/vertices-actions.js +0 -28
  29. package/es/actions/vertices-actions.js.map +0 -1
  30. package/es/actions/viewer2d-actions.js +0 -59
  31. package/es/actions/viewer2d-actions.js.map +0 -1
  32. package/es/actions/viewer3d-actions.js +0 -24
  33. package/es/actions/viewer3d-actions.js.map +0 -1
  34. package/es/catalog/areas/area/planner-element.js +0 -41
  35. package/es/catalog/areas/area/planner-element.js.map +0 -1
  36. package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  37. package/es/catalog/areas/area/textures/grass.jpg +0 -0
  38. package/es/catalog/areas/area/textures/parquet.jpg +0 -0
  39. package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  40. package/es/catalog/areas/area/textures/tile1.jpg +0 -0
  41. package/es/catalog/back.png +0 -0
  42. package/es/catalog/catalog.js +0 -278
  43. package/es/catalog/catalog.js.map +0 -1
  44. package/es/catalog/doors.png +0 -0
  45. package/es/catalog/doorways.png +0 -0
  46. package/es/catalog/envMap/nx.hdr +0 -0
  47. package/es/catalog/envMap/ny.hdr +0 -0
  48. package/es/catalog/envMap/nz.hdr +0 -0
  49. package/es/catalog/envMap/px.hdr +0 -0
  50. package/es/catalog/envMap/py.hdr +0 -0
  51. package/es/catalog/envMap/pz.hdr +0 -0
  52. package/es/catalog/factories/area-factory-3d.js +0 -183
  53. package/es/catalog/factories/area-factory-3d.js.map +0 -1
  54. package/es/catalog/factories/area-factory.js +0 -82
  55. package/es/catalog/factories/area-factory.js.map +0 -1
  56. package/es/catalog/factories/export.js +0 -8
  57. package/es/catalog/factories/export.js.map +0 -1
  58. package/es/catalog/factories/wall-factory-3d.js +0 -203
  59. package/es/catalog/factories/wall-factory-3d.js.map +0 -1
  60. package/es/catalog/factories/wall-factory.js +0 -269
  61. package/es/catalog/factories/wall-factory.js.map +0 -1
  62. package/es/catalog/holes/door-closet/planner-element.js +0 -223
  63. package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
  64. package/es/catalog/holes/door-double/door_double.png +0 -0
  65. package/es/catalog/holes/door-double/planner-element.js +0 -316
  66. package/es/catalog/holes/door-double/planner-element.js.map +0 -1
  67. package/es/catalog/holes/door-exterior/planner-element.js +0 -216
  68. package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
  69. package/es/catalog/holes/door-interior/planner-element.js +0 -228
  70. package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
  71. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  72. package/es/catalog/holes/door-panic/planner-element.js +0 -504
  73. package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
  74. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  75. package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
  76. package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  77. package/es/catalog/holes/door-sliding/planner-element.js +0 -226
  78. package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
  79. package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
  80. package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  81. package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
  82. package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  83. package/es/catalog/holes/gate/gate.jpg +0 -0
  84. package/es/catalog/holes/window-clear/planner-element.js +0 -167
  85. package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
  86. package/es/catalog/holes/window-clear/texture.png +0 -0
  87. package/es/catalog/holes/window-cross/planner-element.js +0 -166
  88. package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
  89. package/es/catalog/holes/window-cross/texture.png +0 -0
  90. package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
  91. package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  92. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  93. package/es/catalog/holes/window-vertical/planner-element.js +0 -277
  94. package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
  95. package/es/catalog/holes/window-vertical/texture.png +0 -0
  96. package/es/catalog/lines/wall/planner-element.js +0 -71
  97. package/es/catalog/lines/wall/planner-element.js.map +0 -1
  98. package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  99. package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  100. package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
  101. package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
  102. package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
  103. package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  104. package/es/catalog/lines/wall/textures/morden.jpg +0 -0
  105. package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  106. package/es/catalog/lines/wall/textures/painted.jpg +0 -0
  107. package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  108. package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
  109. package/es/catalog/lines/wall/wall.png +0 -0
  110. package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
  111. package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  112. package/es/catalog/molding/molding-dcm/texture.png +0 -0
  113. package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
  114. package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  115. package/es/catalog/molding/molding-fbm/texture.png +0 -0
  116. package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
  117. package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  118. package/es/catalog/molding/molding-lrm/texture.png +0 -0
  119. package/es/catalog/properties/export.js +0 -22
  120. package/es/catalog/properties/export.js.map +0 -1
  121. package/es/catalog/properties/property-checkbox.js +0 -72
  122. package/es/catalog/properties/property-checkbox.js.map +0 -1
  123. package/es/catalog/properties/property-color.js +0 -40
  124. package/es/catalog/properties/property-color.js.map +0 -1
  125. package/es/catalog/properties/property-enum.js +0 -56
  126. package/es/catalog/properties/property-enum.js.map +0 -1
  127. package/es/catalog/properties/property-hidden.js +0 -20
  128. package/es/catalog/properties/property-hidden.js.map +0 -1
  129. package/es/catalog/properties/property-lenght-measure.js +0 -102
  130. package/es/catalog/properties/property-lenght-measure.js.map +0 -1
  131. package/es/catalog/properties/property-length-measure.js +0 -86
  132. package/es/catalog/properties/property-length-measure.js.map +0 -1
  133. package/es/catalog/properties/property-length-measure_hole.js +0 -102
  134. package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
  135. package/es/catalog/properties/property-number.js +0 -49
  136. package/es/catalog/properties/property-number.js.map +0 -1
  137. package/es/catalog/properties/property-read-only.js +0 -27
  138. package/es/catalog/properties/property-read-only.js.map +0 -1
  139. package/es/catalog/properties/property-string.js +0 -49
  140. package/es/catalog/properties/property-string.js.map +0 -1
  141. package/es/catalog/properties/property-toggle.js +0 -40
  142. package/es/catalog/properties/property-toggle.js.map +0 -1
  143. package/es/catalog/properties/shared-property-style.js +0 -15
  144. package/es/catalog/properties/shared-property-style.js.map +0 -1
  145. package/es/catalog/utils/FuseUtils.js +0 -83
  146. package/es/catalog/utils/FuseUtils.js.map +0 -1
  147. package/es/catalog/utils/exporter.js +0 -149
  148. package/es/catalog/utils/exporter.js.map +0 -1
  149. package/es/catalog/utils/geom-utils.js +0 -190
  150. package/es/catalog/utils/geom-utils.js.map +0 -1
  151. package/es/catalog/utils/item-loader.js +0 -1522
  152. package/es/catalog/utils/item-loader.js.map +0 -1
  153. package/es/catalog/utils/load-obj.js +0 -92
  154. package/es/catalog/utils/load-obj.js.map +0 -1
  155. package/es/catalog/utils/mtl-loader.js +0 -358
  156. package/es/catalog/utils/mtl-loader.js.map +0 -1
  157. package/es/catalog/utils/obj-loader.js +0 -477
  158. package/es/catalog/utils/obj-loader.js.map +0 -1
  159. package/es/catalog/windows.png +0 -0
  160. package/es/class/FuseUtils.js +0 -83
  161. package/es/class/FuseUtils.js.map +0 -1
  162. package/es/class/area.js +0 -146
  163. package/es/class/area.js.map +0 -1
  164. package/es/class/export.js +0 -25
  165. package/es/class/export.js.map +0 -1
  166. package/es/class/group.js +0 -441
  167. package/es/class/group.js.map +0 -1
  168. package/es/class/guide.js +0 -63
  169. package/es/class/guide.js.map +0 -1
  170. package/es/class/hole.js +0 -931
  171. package/es/class/hole.js.map +0 -1
  172. package/es/class/item.js +0 -1888
  173. package/es/class/item.js.map +0 -1
  174. package/es/class/layer.js +0 -668
  175. package/es/class/layer.js.map +0 -1
  176. package/es/class/line.js +0 -1290
  177. package/es/class/line.js.map +0 -1
  178. package/es/class/project.js +0 -823
  179. package/es/class/project.js.map +0 -1
  180. package/es/class/vertex.js +0 -267
  181. package/es/class/vertex.js.map +0 -1
  182. package/es/components/atoms/Snackbar/index.js +0 -50
  183. package/es/components/atoms/Snackbar/index.js.map +0 -1
  184. package/es/components/atoms/radio-button/index.js +0 -26
  185. package/es/components/atoms/radio-button/index.js.map +0 -1
  186. package/es/components/atoms/radio-button/styles.js +0 -5
  187. package/es/components/atoms/radio-button/styles.js.map +0 -1
  188. package/es/components/button/MainButton.js +0 -92
  189. package/es/components/button/MainButton.js.map +0 -1
  190. package/es/components/button/ToggleMeasureButton.js +0 -56
  191. package/es/components/button/ToggleMeasureButton.js.map +0 -1
  192. package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
  193. package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  194. package/es/components/catalog-view/catalog-item.js +0 -226
  195. package/es/components/catalog-view/catalog-item.js.map +0 -1
  196. package/es/components/catalog-view/catalog-list.js +0 -182
  197. package/es/components/catalog-view/catalog-list.js.map +0 -1
  198. package/es/components/catalog-view/catalog-page-item.js +0 -130
  199. package/es/components/catalog-view/catalog-page-item.js.map +0 -1
  200. package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
  201. package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  202. package/es/components/configurator/custom-configurator.js +0 -94
  203. package/es/components/configurator/custom-configurator.js.map +0 -1
  204. package/es/components/configurator/project-configurator.js +0 -131
  205. package/es/components/configurator/project-configurator.js.map +0 -1
  206. package/es/components/content.js +0 -123
  207. package/es/components/content.js.map +0 -1
  208. package/es/components/export.js +0 -24
  209. package/es/components/export.js.map +0 -1
  210. package/es/components/firstsetting/button/styles.js +0 -27
  211. package/es/components/firstsetting/button/styles.js.map +0 -1
  212. package/es/components/firstsetting/export.js +0 -9
  213. package/es/components/firstsetting/export.js.map +0 -1
  214. package/es/components/firstsetting/firstsetting-content-button.js +0 -217
  215. package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
  216. package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
  217. package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  218. package/es/components/firstsetting/firstsetting.js +0 -626
  219. package/es/components/firstsetting/firstsetting.js.map +0 -1
  220. package/es/components/footerbar/button/ControlButton.js +0 -72
  221. package/es/components/footerbar/button/ControlButton.js.map +0 -1
  222. package/es/components/footerbar/button/DirectionButton.js +0 -69
  223. package/es/components/footerbar/button/DirectionButton.js.map +0 -1
  224. package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
  225. package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  226. package/es/components/footerbar/button/ToggleButton.js +0 -76
  227. package/es/components/footerbar/button/ToggleButton.js.map +0 -1
  228. package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
  229. package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  230. package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
  231. package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  232. package/es/components/footerbar/button/styles.js +0 -22
  233. package/es/components/footerbar/button/styles.js.map +0 -1
  234. package/es/components/footerbar/export.js +0 -9
  235. package/es/components/footerbar/export.js.map +0 -1
  236. package/es/components/footerbar/footer-content-button.js +0 -217
  237. package/es/components/footerbar/footer-content-button.js.map +0 -1
  238. package/es/components/footerbar/footer-toggle-button.js +0 -126
  239. package/es/components/footerbar/footer-toggle-button.js.map +0 -1
  240. package/es/components/footerbar/footerbar.js +0 -801
  241. package/es/components/footerbar/footerbar.js.map +0 -1
  242. package/es/components/footerbar/styles.js +0 -34
  243. package/es/components/footerbar/styles.js.map +0 -1
  244. package/es/components/header/button/MenuButton.js +0 -70
  245. package/es/components/header/button/MenuButton.js.map +0 -1
  246. package/es/components/header/button/SaveButton.js +0 -48
  247. package/es/components/header/button/SaveButton.js.map +0 -1
  248. package/es/components/header/button/styles.js +0 -59
  249. package/es/components/header/button/styles.js.map +0 -1
  250. package/es/components/header/export.js +0 -5
  251. package/es/components/header/export.js.map +0 -1
  252. package/es/components/header/header.js +0 -550
  253. package/es/components/header/header.js.map +0 -1
  254. package/es/components/header/header.style.css +0 -47
  255. package/es/components/header/styles.js +0 -41
  256. package/es/components/header/styles.js.map +0 -1
  257. package/es/components/login/Login.js +0 -86
  258. package/es/components/login/Login.js.map +0 -1
  259. package/es/components/login/LoginForm/index.js +0 -132
  260. package/es/components/login/LoginForm/index.js.map +0 -1
  261. package/es/components/login/Register.js +0 -96
  262. package/es/components/login/Register.js.map +0 -1
  263. package/es/components/login/RegisterForm/index.js +0 -230
  264. package/es/components/login/RegisterForm/index.js.map +0 -1
  265. package/es/components/login/jwtService.js +0 -232
  266. package/es/components/login/jwtService.js.map +0 -1
  267. package/es/components/login/style.css +0 -158
  268. package/es/components/login/style.scss +0 -260
  269. package/es/components/molecules/slider/index.js +0 -13
  270. package/es/components/molecules/slider/index.js.map +0 -1
  271. package/es/components/molecules/slider/styles.js +0 -2
  272. package/es/components/molecules/slider/styles.js.map +0 -1
  273. package/es/components/molecules/slider/styles.scss +0 -3
  274. package/es/components/myprojects/export.js +0 -5
  275. package/es/components/myprojects/export.js.map +0 -1
  276. package/es/components/myprojects/index.js +0 -446
  277. package/es/components/myprojects/index.js.map +0 -1
  278. package/es/components/myprojects/styles.js +0 -24
  279. package/es/components/myprojects/styles.js.map +0 -1
  280. package/es/components/sidebar/custom-accordion.js +0 -38
  281. package/es/components/sidebar/custom-accordion.js.map +0 -1
  282. package/es/components/sidebar/export.js +0 -14
  283. package/es/components/sidebar/export.js.map +0 -1
  284. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
  285. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  286. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
  287. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  288. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
  289. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  290. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
  291. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  292. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
  293. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  294. package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
  295. package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  296. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  297. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  298. package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
  299. package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  300. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
  301. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  302. package/es/components/sidebar/panel-group-editor.js +0 -211
  303. package/es/components/sidebar/panel-group-editor.js.map +0 -1
  304. package/es/components/sidebar/panel-groups.js +0 -267
  305. package/es/components/sidebar/panel-groups.js.map +0 -1
  306. package/es/components/sidebar/panel-guides.js +0 -185
  307. package/es/components/sidebar/panel-guides.js.map +0 -1
  308. package/es/components/sidebar/panel-layer-elements.js +0 -251
  309. package/es/components/sidebar/panel-layer-elements.js.map +0 -1
  310. package/es/components/sidebar/panel-layers.js +0 -340
  311. package/es/components/sidebar/panel-layers.js.map +0 -1
  312. package/es/components/sidebar/panel.js +0 -103
  313. package/es/components/sidebar/panel.js.map +0 -1
  314. package/es/components/sidebar/sidebar.js +0 -109
  315. package/es/components/sidebar/sidebar.js.map +0 -1
  316. package/es/components/sidebar/toolbar-panel.js +0 -164
  317. package/es/components/sidebar/toolbar-panel.js.map +0 -1
  318. package/es/components/sign/export.js +0 -6
  319. package/es/components/sign/export.js.map +0 -1
  320. package/es/components/sign/main/index.js +0 -560
  321. package/es/components/sign/main/index.js.map +0 -1
  322. package/es/components/sign/main/styles.js +0 -20
  323. package/es/components/sign/main/styles.js.map +0 -1
  324. package/es/components/style/button.js +0 -114
  325. package/es/components/style/button.js.map +0 -1
  326. package/es/components/style/cancel-button.js +0 -23
  327. package/es/components/style/cancel-button.js.map +0 -1
  328. package/es/components/style/content-container.js +0 -34
  329. package/es/components/style/content-container.js.map +0 -1
  330. package/es/components/style/content-title.js +0 -30
  331. package/es/components/style/content-title.js.map +0 -1
  332. package/es/components/style/delete-button.js +0 -26
  333. package/es/components/style/delete-button.js.map +0 -1
  334. package/es/components/style/export.js +0 -32
  335. package/es/components/style/export.js.map +0 -1
  336. package/es/components/style/form-block.js +0 -25
  337. package/es/components/style/form-block.js.map +0 -1
  338. package/es/components/style/form-color-input.js +0 -28
  339. package/es/components/style/form-color-input.js.map +0 -1
  340. package/es/components/style/form-label.js +0 -27
  341. package/es/components/style/form-label.js.map +0 -1
  342. package/es/components/style/form-number-input.js +0 -190
  343. package/es/components/style/form-number-input.js.map +0 -1
  344. package/es/components/style/form-number-input_2.js +0 -207
  345. package/es/components/style/form-number-input_2.js.map +0 -1
  346. package/es/components/style/form-select.js +0 -21
  347. package/es/components/style/form-select.js.map +0 -1
  348. package/es/components/style/form-slider.js +0 -46
  349. package/es/components/style/form-slider.js.map +0 -1
  350. package/es/components/style/form-submit-button.js +0 -27
  351. package/es/components/style/form-submit-button.js.map +0 -1
  352. package/es/components/style/form-text-input.js +0 -77
  353. package/es/components/style/form-text-input.js.map +0 -1
  354. package/es/components/toolbar/button/ControlButton.js +0 -69
  355. package/es/components/toolbar/button/ControlButton.js.map +0 -1
  356. package/es/components/toolbar/button/DirectionButton.js +0 -50
  357. package/es/components/toolbar/button/DirectionButton.js.map +0 -1
  358. package/es/components/toolbar/button/RightButton.js +0 -133
  359. package/es/components/toolbar/button/RightButton.js.map +0 -1
  360. package/es/components/toolbar/button/ToggleButton.js +0 -59
  361. package/es/components/toolbar/button/ToggleButton.js.map +0 -1
  362. package/es/components/toolbar/button/index.js +0 -88
  363. package/es/components/toolbar/button/index.js.map +0 -1
  364. package/es/components/toolbar/button/styles.js +0 -14
  365. package/es/components/toolbar/button/styles.js.map +0 -1
  366. package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
  367. package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  368. package/es/components/toolbar/components/Pricing.js +0 -101
  369. package/es/components/toolbar/components/Pricing.js.map +0 -1
  370. package/es/components/toolbar/components/ReviewForQuote.js +0 -476
  371. package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
  372. package/es/components/toolbar/export.js +0 -14
  373. package/es/components/toolbar/export.js.map +0 -1
  374. package/es/components/toolbar/main/Alert.js +0 -125
  375. package/es/components/toolbar/main/Alert.js.map +0 -1
  376. package/es/components/toolbar/main/TakePictureModal.js +0 -100
  377. package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
  378. package/es/components/toolbar/main/confirm-popup.js +0 -88
  379. package/es/components/toolbar/main/confirm-popup.js.map +0 -1
  380. package/es/components/toolbar/main/index.js +0 -4612
  381. package/es/components/toolbar/main/index.js.map +0 -1
  382. package/es/components/toolbar/main/lShaped.json +0 -311
  383. package/es/components/toolbar/main/longNarrow.json +0 -238
  384. package/es/components/toolbar/main/myComponents.js +0 -118
  385. package/es/components/toolbar/main/myComponents.js.map +0 -1
  386. package/es/components/toolbar/main/oRectangle.json +0 -220
  387. package/es/components/toolbar/main/rectangle.json +0 -238
  388. package/es/components/toolbar/main/style.css +0 -107
  389. package/es/components/toolbar/main/styles.js +0 -64
  390. package/es/components/toolbar/main/styles.js.map +0 -1
  391. package/es/components/toolbar/plugin-item.js +0 -150
  392. package/es/components/toolbar/plugin-item.js.map +0 -1
  393. package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
  394. package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  395. package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
  396. package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  397. package/es/components/toolbar/popup/appliance/index.js +0 -81
  398. package/es/components/toolbar/popup/appliance/index.js.map +0 -1
  399. package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
  400. package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  401. package/es/components/toolbar/popup/autosaveprompt/styles.css +0 -64
  402. package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
  403. package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  404. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
  405. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  406. package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
  407. package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  408. package/es/components/toolbar/popup/cabinet/index.js +0 -83
  409. package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
  410. package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
  411. package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  412. package/es/components/toolbar/popup/doorStyle/index.js +0 -61
  413. package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
  414. package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
  415. package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  416. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
  417. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  418. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
  419. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  420. package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
  421. package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  422. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
  423. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  424. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
  425. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  426. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
  427. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  428. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
  429. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  430. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
  431. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  432. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
  433. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  434. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
  435. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  436. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
  437. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  438. package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
  439. package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  440. package/es/components/toolbar/popup/downloadsummary/styles.css +0 -177
  441. package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
  442. package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  443. package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
  444. package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  445. package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
  446. package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  447. package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
  448. package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  449. package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
  450. package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  451. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
  452. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  453. package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
  454. package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  455. package/es/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
  456. package/es/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
  457. package/es/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
  458. package/es/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
  459. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
  460. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  461. package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
  462. package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  463. package/es/components/toolbar/popup/floorplan/index.js +0 -49
  464. package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
  465. package/es/components/toolbar/popup/index.js +0 -188
  466. package/es/components/toolbar/popup/index.js.map +0 -1
  467. package/es/components/toolbar/popup/newproject/index.js +0 -67
  468. package/es/components/toolbar/popup/newproject/index.js.map +0 -1
  469. package/es/components/toolbar/popup/newproject/styles.css +0 -64
  470. package/es/components/toolbar/popup/newproject/styles.js +0 -9
  471. package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
  472. package/es/components/toolbar/popup/product/appliance.js +0 -65
  473. package/es/components/toolbar/popup/product/appliance.js.map +0 -1
  474. package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
  475. package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  476. package/es/components/toolbar/popup/product/doorstyle.js +0 -50
  477. package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
  478. package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
  479. package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  480. package/es/components/toolbar/popup/product/floor.js +0 -52
  481. package/es/components/toolbar/popup/product/floor.js.map +0 -1
  482. package/es/components/toolbar/popup/product/floorproduct.js +0 -61
  483. package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
  484. package/es/components/toolbar/popup/product/index.js +0 -52
  485. package/es/components/toolbar/popup/product/index.js.map +0 -1
  486. package/es/components/toolbar/popup/product/primary.js +0 -63
  487. package/es/components/toolbar/popup/product/primary.js.map +0 -1
  488. package/es/components/toolbar/popup/product/productline.js +0 -120
  489. package/es/components/toolbar/popup/product/productline.js.map +0 -1
  490. package/es/components/toolbar/popup/product/reviewItem.js +0 -338
  491. package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
  492. package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
  493. package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  494. package/es/components/toolbar/popup/product/style.css +0 -54
  495. package/es/components/toolbar/popup/product/styles.js +0 -71
  496. package/es/components/toolbar/popup/product/styles.js.map +0 -1
  497. package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
  498. package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  499. package/es/components/toolbar/popup/savedesign/index.js +0 -508
  500. package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
  501. package/es/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
  502. package/es/components/toolbar/popup/savedesign/styles.js +0 -19
  503. package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
  504. package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
  505. package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  506. package/es/components/toolbar/popup/styles.js +0 -98
  507. package/es/components/toolbar/popup/styles.js.map +0 -1
  508. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
  509. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  510. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
  511. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  512. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
  513. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  514. package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
  515. package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  516. package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
  517. package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  518. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
  519. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  520. package/es/components/toolbar/popup/submitforquote/index.js +0 -690
  521. package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
  522. package/es/components/toolbar/popup/submitforquote/styles.css +0 -105
  523. package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
  524. package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  525. package/es/components/toolbar/popup/submitprompt/index.js +0 -71
  526. package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
  527. package/es/components/toolbar/popup/submitprompt/styles.css +0 -64
  528. package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
  529. package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  530. package/es/components/toolbar/toolbar-button.js +0 -105
  531. package/es/components/toolbar/toolbar-button.js.map +0 -1
  532. package/es/components/toolbar/toolbar-load-button.js +0 -29
  533. package/es/components/toolbar/toolbar-load-button.js.map +0 -1
  534. package/es/components/toolbar/toolbar-save-button.js +0 -27
  535. package/es/components/toolbar/toolbar-save-button.js.map +0 -1
  536. package/es/components/tutorial-view/Modal.js +0 -498
  537. package/es/components/tutorial-view/Modal.js.map +0 -1
  538. package/es/components/tutorial-view/style.css +0 -111
  539. package/es/components/tutorial-view/styles.js +0 -6
  540. package/es/components/tutorial-view/styles.js.map +0 -1
  541. package/es/components/viewer2d/area.js +0 -83
  542. package/es/components/viewer2d/area.js.map +0 -1
  543. package/es/components/viewer2d/export.js +0 -32
  544. package/es/components/viewer2d/export.js.map +0 -1
  545. package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
  546. package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  547. package/es/components/viewer2d/grids/grid-streak.js +0 -38
  548. package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
  549. package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
  550. package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  551. package/es/components/viewer2d/grids/grids.js +0 -36
  552. package/es/components/viewer2d/grids/grids.js.map +0 -1
  553. package/es/components/viewer2d/group.js +0 -54
  554. package/es/components/viewer2d/group.js.map +0 -1
  555. package/es/components/viewer2d/item.js +0 -514
  556. package/es/components/viewer2d/item.js.map +0 -1
  557. package/es/components/viewer2d/layer.js +0 -165
  558. package/es/components/viewer2d/layer.js.map +0 -1
  559. package/es/components/viewer2d/line.js +0 -889
  560. package/es/components/viewer2d/line.js.map +0 -1
  561. package/es/components/viewer2d/ruler.js +0 -101
  562. package/es/components/viewer2d/ruler.js.map +0 -1
  563. package/es/components/viewer2d/rulerDist.js +0 -147
  564. package/es/components/viewer2d/rulerDist.js.map +0 -1
  565. package/es/components/viewer2d/rulerX.js +0 -152
  566. package/es/components/viewer2d/rulerX.js.map +0 -1
  567. package/es/components/viewer2d/rulerY.js +0 -154
  568. package/es/components/viewer2d/rulerY.js.map +0 -1
  569. package/es/components/viewer2d/scene.js +0 -141
  570. package/es/components/viewer2d/scene.js.map +0 -1
  571. package/es/components/viewer2d/snap.js +0 -75
  572. package/es/components/viewer2d/snap.js.map +0 -1
  573. package/es/components/viewer2d/state.js +0 -79
  574. package/es/components/viewer2d/state.js.map +0 -1
  575. package/es/components/viewer2d/utils.js +0 -163
  576. package/es/components/viewer2d/utils.js.map +0 -1
  577. package/es/components/viewer2d/vertex.js +0 -67
  578. package/es/components/viewer2d/vertex.js.map +0 -1
  579. package/es/components/viewer2d/viewer2d.js +0 -1402
  580. package/es/components/viewer2d/viewer2d.js.map +0 -1
  581. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
  582. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  583. package/es/components/viewer3d/dcm.js +0 -402
  584. package/es/components/viewer3d/dcm.js.map +0 -1
  585. package/es/components/viewer3d/fbm.js +0 -415
  586. package/es/components/viewer3d/fbm.js.map +0 -1
  587. package/es/components/viewer3d/front3D.js +0 -67
  588. package/es/components/viewer3d/front3D.js.map +0 -1
  589. package/es/components/viewer3d/grid-creator.js +0 -26
  590. package/es/components/viewer3d/grid-creator.js.map +0 -1
  591. package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
  592. package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  593. package/es/components/viewer3d/grids/grid-streak.js +0 -28
  594. package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
  595. package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
  596. package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  597. package/es/components/viewer3d/libs/first-person-controls.js +0 -68
  598. package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
  599. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
  600. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  601. package/es/components/viewer3d/libs/mtl-loader.js +0 -358
  602. package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
  603. package/es/components/viewer3d/libs/obj-loader.js +0 -463
  604. package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
  605. package/es/components/viewer3d/libs/orbit-controls.js +0 -699
  606. package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
  607. package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
  608. package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  609. package/es/components/viewer3d/lrm.js +0 -306
  610. package/es/components/viewer3d/lrm.js.map +0 -1
  611. package/es/components/viewer3d/model.js +0 -709
  612. package/es/components/viewer3d/model.js.map +0 -1
  613. package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
  614. package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  615. package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
  616. package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  617. package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
  618. package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  619. package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
  620. package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  621. package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
  622. package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  623. package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
  624. package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  625. package/es/components/viewer3d/scene-creator.js +0 -3607
  626. package/es/components/viewer3d/scene-creator.js.map +0 -1
  627. package/es/components/viewer3d/three-memory-cleaner.js +0 -52
  628. package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
  629. package/es/components/viewer3d/viewer3d-first-person.js +0 -316
  630. package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
  631. package/es/components/viewer3d/viewer3d.js +0 -2504
  632. package/es/components/viewer3d/viewer3d.js.map +0 -1
  633. package/es/components/wizardstep/button/styles.js +0 -60
  634. package/es/components/wizardstep/button/styles.js.map +0 -1
  635. package/es/components/wizardstep/export.js +0 -5
  636. package/es/components/wizardstep/export.js.map +0 -1
  637. package/es/components/wizardstep/index.js +0 -971
  638. package/es/components/wizardstep/index.js.map +0 -1
  639. package/es/components/wizardstep/styles.js +0 -61
  640. package/es/components/wizardstep/styles.js.map +0 -1
  641. package/es/components/wizardstep/wizardstep-content-button.js +0 -217
  642. package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
  643. package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
  644. package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  645. package/es/constants.js +0 -637
  646. package/es/constants.js.map +0 -1
  647. package/es/hooks/useCheckCart.js +0 -53
  648. package/es/hooks/useCheckCart.js.map +0 -1
  649. package/es/hooks/useGetPricesBySku.js +0 -74
  650. package/es/hooks/useGetPricesBySku.js.map +0 -1
  651. package/es/hooks/useValidateToken.js +0 -201
  652. package/es/hooks/useValidateToken.js.map +0 -1
  653. package/es/index.js +0 -17
  654. package/es/index.js.map +0 -1
  655. package/es/models.js +0 -511
  656. package/es/models.js.map +0 -1
  657. package/es/plugins/SVGLoader.js +0 -1413
  658. package/es/plugins/SVGLoader.js.map +0 -1
  659. package/es/plugins/autosave.js +0 -34
  660. package/es/plugins/autosave.js.map +0 -1
  661. package/es/plugins/console-debugger.js +0 -38
  662. package/es/plugins/console-debugger.js.map +0 -1
  663. package/es/plugins/export.js +0 -10
  664. package/es/plugins/export.js.map +0 -1
  665. package/es/plugins/keyboard.js +0 -102
  666. package/es/plugins/keyboard.js.map +0 -1
  667. package/es/reducers/areas-reducer.js +0 -13
  668. package/es/reducers/areas-reducer.js.map +0 -1
  669. package/es/reducers/export.js +0 -26
  670. package/es/reducers/export.js.map +0 -1
  671. package/es/reducers/groups-reducer.js +0 -39
  672. package/es/reducers/groups-reducer.js.map +0 -1
  673. package/es/reducers/holes-reducer.js +0 -63
  674. package/es/reducers/holes-reducer.js.map +0 -1
  675. package/es/reducers/items-reducer.js +0 -144
  676. package/es/reducers/items-reducer.js.map +0 -1
  677. package/es/reducers/lines-reducer.js +0 -46
  678. package/es/reducers/lines-reducer.js.map +0 -1
  679. package/es/reducers/project-reducer.js +0 -130
  680. package/es/reducers/project-reducer.js.map +0 -1
  681. package/es/reducers/reducer.js +0 -20
  682. package/es/reducers/reducer.js.map +0 -1
  683. package/es/reducers/scene-reducer.js +0 -29
  684. package/es/reducers/scene-reducer.js.map +0 -1
  685. package/es/reducers/user-reducer.js +0 -42
  686. package/es/reducers/user-reducer.js.map +0 -1
  687. package/es/reducers/vertices-reducer.js +0 -20
  688. package/es/reducers/vertices-reducer.js.map +0 -1
  689. package/es/reducers/viewer2d-reducer.js +0 -76
  690. package/es/reducers/viewer2d-reducer.js.map +0 -1
  691. package/es/reducers/viewer3d-reducer.js +0 -57
  692. package/es/reducers/viewer3d-reducer.js.map +0 -1
  693. package/es/shared-style.js +0 -67
  694. package/es/shared-style.js.map +0 -1
  695. package/es/styles/export.js +0 -6
  696. package/es/styles/export.js.map +0 -1
  697. package/es/styles/tabs.css +0 -40
  698. package/es/translator/en.js +0 -105
  699. package/es/translator/en.js.map +0 -1
  700. package/es/translator/it.js +0 -80
  701. package/es/translator/it.js.map +0 -1
  702. package/es/translator/ru.js +0 -80
  703. package/es/translator/ru.js.map +0 -1
  704. package/es/translator/translator.js +0 -85
  705. package/es/translator/translator.js.map +0 -1
  706. package/es/utils/browser.js +0 -34
  707. package/es/utils/browser.js.map +0 -1
  708. package/es/utils/email-validator.js +0 -5
  709. package/es/utils/email-validator.js.map +0 -1
  710. package/es/utils/export.js +0 -26
  711. package/es/utils/export.js.map +0 -1
  712. package/es/utils/geometry.js +0 -2237
  713. package/es/utils/geometry.js.map +0 -1
  714. package/es/utils/get-edges-of-subgraphs.js +0 -27
  715. package/es/utils/get-edges-of-subgraphs.js.map +0 -1
  716. package/es/utils/graph-cycles.js +0 -239
  717. package/es/utils/graph-cycles.js.map +0 -1
  718. package/es/utils/graph-inner-cycles.js +0 -47
  719. package/es/utils/graph-inner-cycles.js.map +0 -1
  720. package/es/utils/graph.js +0 -150
  721. package/es/utils/graph.js.map +0 -1
  722. package/es/utils/helper.js +0 -337
  723. package/es/utils/helper.js.map +0 -1
  724. package/es/utils/history.js +0 -30
  725. package/es/utils/history.js.map +0 -1
  726. package/es/utils/id-broker.js +0 -20
  727. package/es/utils/id-broker.js.map +0 -1
  728. package/es/utils/logger.js +0 -9
  729. package/es/utils/logger.js.map +0 -1
  730. package/es/utils/math.js +0 -51
  731. package/es/utils/math.js.map +0 -1
  732. package/es/utils/molding.js +0 -840
  733. package/es/utils/molding.js.map +0 -1
  734. package/es/utils/name-generator.js +0 -19
  735. package/es/utils/name-generator.js.map +0 -1
  736. package/es/utils/objects-utils.js +0 -51
  737. package/es/utils/objects-utils.js.map +0 -1
  738. package/es/utils/phone-validator.js +0 -5
  739. package/es/utils/phone-validator.js.map +0 -1
  740. package/es/utils/process-black-list.js +0 -19
  741. package/es/utils/process-black-list.js.map +0 -1
  742. package/es/utils/react-if.js +0 -19
  743. package/es/utils/react-if.js.map +0 -1
  744. package/es/utils/snap-scene.js +0 -100
  745. package/es/utils/snap-scene.js.map +0 -1
  746. package/es/utils/snap.js +0 -238
  747. package/es/utils/snap.js.map +0 -1
  748. package/es/utils/threeCSG.es6.js +0 -499
  749. package/es/utils/threeCSG.es6.js.map +0 -1
  750. package/es/version.js +0 -2
  751. package/es/version.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewer3DElevationDownload.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","_classCallCheck","a","n","TypeError","_defineProperties","key","_createClass","i","_toPrimitive","toPrimitive","call","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_inherits","create","_setPrototypeOf","React","PropTypes","ReactDOM","Three","parseData","updateScene","deleteSpecifiedMeshObjects","createBacksplash","checkCabinetOverlap","disposeScene","disposeObject","diff","SharedStyle","MODE_DRAWING_ITEM_3D","UNIT_CENTIMETER","SECONDARY_PURPLE_COLOR","ARRAY_ELEVATION_VIEW_MODES","MODE_FRONT_ELEVATION_VIEW","MODE_RIGHT_ELEVATION_VIEW","MODE_LEFT_ELEVATION_VIEW","MODE_BACK_ELEVATION_VIEW","BASE_CABINET_LAYOUTPOS","WALL_CABINET_LAYOUTPOS","TALL_CABINET_LAYOUTPOS","isUndefined","verticesDistance","convert","GeometryUtils","RGBELoader","CameraControls","install","THREE","returnReplaceableDeepSearchType","vectorIntersectWithMesh","almostEqual","Viewer3DElevationDownload","_React$Component","props","_this","state","isLoading","showflag","toolObj","angleObj","waitForRender","lastMousePosition","width","height","renderingID","mode","window","__elevationRendererDownload","renderer","__threeRendererDownload","WebGLRenderer","preserveDrawingBuffer","alpha","antialias","shadowMap","enabled","shadowMapSoft","domElement","style","display","componentDidMount","nextProps","_this2","scene3D","camera","pivot","cameraControls","clock","actions","areaActions","context","holesActions","itemsActions","sceneActions","linesActions","projectActions","catalog","self","scene","setupLight","inbBox","includes","ambilight","AmbientLight","add","addDirLight","inColor","inIntensity","inPosition","dirLight","DirectionalLight","castShadow","shadow","mapSize","x","shadowMapSize","y","near","far","shadowCameraFar","top","shadowCameraSize","bottom","left","right","position","copy","targetObject","Object3D","bboxCenter","target","updateMatrixWorld","addSpotLight","inTarget","inDistance","spotLight","SpotLight","intensity","color","setHex","angle","distance","penumbra","decay","Vector3","z","Math","max","abs","min","dirLightPos","ceiling","getObjectByName","ceilBBox","Box3","setFromObject","spot1","spot2","spot3","spot4","spotlightDis","setState","setIsLoading3D","_parseData","promise","planData","then","objToRemove","plan","traverse","obj","geometry","removeFromParent","bbox","radius","angleInDegrees","angleInRadians","PI","eyeX","sin","eyeZ","cos","setLookAt","boundingBox","area","getIn","selectedLayer","layer","areas","lights","snapBox","msg","layers","id","visible","items","item","doorStyle","name","confirm","init","render","data","_loop","aVertices","lines","vertices","_loop3","realVec","vec","ceilHeight","from","unit","to","datas","vertex","fLen","sX","sY","eX","eY","len","sqrt","cLen","cX","cY","endLen","vec2","Vector2","light","toIntersect","mouse","gridPlane","grid","raycaster","Raycaster","selectedObject","currentObject","isSelected","bRotate","bMove","bMoveUP","gridMatrix","Matrix4","rayDirection","gridPlanOrigin","Point","sPoint","snapFlag","snapAnimI","snapDelta","t_i","targetPoint","targetRot","targetUVec","targetCRotation","targetObj","targetNumber","allItemRect","allItemSnap","allLines","allLineRects","allLineSnap","allRect","allArea","backsplashVisible","holeItems","getHoleItems","removeSnapBox","remove","camToGrid","camPos","mapCursorPosition","altitude","subVectors","camD","rayD","intersectPt","multiplyScalar","applyMatrix4","pointLineDistance","point","line","pX","pY","l1x","l1y","l2x","l2y","pLine","Line","pAngle","lAngle","pDistance","oDistance","directDistance","lineDistance","dX","dY","dPoint","getInterSect","shape1","shape2","count","sl1","sl2","j","el1","el2","flag","getLineInterSect","getRectPoints","pos","rot","rX","rY","cRot","floor","prepareSnap","getAllLines","buildRectFromLines","getAllItems","getAllItemSnap","getAllLineSnap","cur","others","concat","validateSnaps","getAllArea","lineRect","areainfo","sz","size","get","rect","vert","collisionCheck","tObj","_this3","undefined","userData","layerId","layoutpos","catid","type","cat","elements","info","oPos","clone","sBounding","children","depth","oVertices","itemId","sceneGraph","console","log","ocatid","ocat","olayoutpos","tRot","rotation","tPos","tBounding","twidth","tdepth","tVertices","_loop2","properties","v","_ret","collisionHoleCheck","currentItem","selectedItem","otherItem","needSnap","holes","holeID","hole","theight","trot","collisionSlide","item3D","originPos","sVertices","cur_category","selected","category","itemID","toJS","exchange","layerID","targetData","targetPos","vArray","dteArray","lineArray","vdistanceArray","cVecArray","inFlag","v1","v2","tPosDistance","realDistance","tPosDistance1","realDistance1","k","temp","temp1","temp2","tX","tY","set","snap","parent","source","sRot","layoutType","altitudeLength","snapBoxGeom","BoxGeometry","snapBoxObj","Mesh","MeshBasicMaterial","transparent","blending","MultiplyBlending","removeSnapBoxObj","box","BoxHelper","material","linewidth","depthTest","renderOrder","deltaX","deltaZ","sPos","tPoses","pZ","tNum","curDis","cx","cz","selectedObj","rotRad","snapLine","lineId","snapLineThickness","iX","iY","lineVec","oLength","normalize","vec2Legnth","lineLength","transLength","directPoint","directLine","dLength","reduceLen","scale","realAngle","result","sourcePos","firstMove","prevX","prevY","selObj","createToolObject","canvas","document","createElement","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","img2","clockWise","lastAngle","createAngleObject","rotate","lineWidth","toolTexture","Texture","needsUpdate","Sprite","SpriteMaterial","map","sizeAttenuation","angleTexture","getPoint","alti","offsetX","offsetY","setFromCamera","ray","direction","updateMouseCoord","getIntersectWallPoint","arrMesh","mesh","intersects","intersectObjects","mouseDownEvent","event","matrixWorld","invert","itemInfo","sCount","transflag","meshes","object","isMesh","toolIntersects","pow","uv","indexOf","isNaN","unselectAll","removeReplacingSupport","selItem","image","centerPos","beginRotatingItem3D","beginDraggingHole3D","beginDraggingItem3D","mouseButtons","ACTION","NONE","setClearColor","Color","COLORS","white","setSize","canvasWrapper","findDOMNode","refs","appendChild","setTimeout","itemPos","err","JSON","stringify","Clock","Scene","background","rulerUnit","maxX","maxY","minX","minY","toArray","vertex0","vertex1","x1","y1","x2","y2","l0","l1","line_length","posX","posY","cameraRect","OrthographicCamera","aspectRatio","PerspectiveCamera","enable","loadENV","load","texture","mapping","EquirectangularReflectionMapping","environment","dispose","dollyToCursor","infinityDolly","minDistance","maxDistance","Infinity","zoomSpeed","cam","delta","getDelta","update","updateMatrix","elemID","LODs","rotateY","indexAttribute","getIndex","firstFaceIndices","getX","normalAttribute","attributes","normal","fromBufferAttribute","sub","vertex2","posVec","cameraLine","child","opacity","dot","requestAnimationFrame","componentWillUnmount","cancelAnimationFrame","renderLists","componentWillReceiveProps","_this4","aspect","updateProjectionMatrix","implementBacksplash","allItems","getAllItemSpecified","calcRect","getCalcRectFromItem3D","isSnappedLine","setBacksplashVisible","implementWarningBox","prepareSnapSpec","layer1","changedValues","showfg","_this$state","_updateScene","p1Value","alignItems","justifyContent","animation","alt","pointerEvents","ref","Component","default","propTypes","isRequired","number","replaceCabinet","func","contextTypes"],"sources":["../../../../../../src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx"],"sourcesContent":["'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport * as Three from 'three';\nimport {\n parseData,\n updateScene,\n deleteSpecifiedMeshObjects,\n createBacksplash,\n checkCabinetOverlap\n} from '../../../../viewer3d/scene-creator';\nimport { disposeScene } from '../../../../viewer3d/three-memory-cleaner';\nimport { disposeObject } from '../../../../viewer3d/three-memory-cleaner';\nimport diff from 'immutablediff';\nimport * as SharedStyle from '../../../../../shared-style';\nimport {\n MODE_DRAWING_ITEM_3D,\n UNIT_CENTIMETER,\n SECONDARY_PURPLE_COLOR,\n ARRAY_ELEVATION_VIEW_MODES,\n MODE_FRONT_ELEVATION_VIEW,\n MODE_RIGHT_ELEVATION_VIEW,\n MODE_LEFT_ELEVATION_VIEW,\n MODE_BACK_ELEVATION_VIEW,\n BASE_CABINET_LAYOUTPOS,\n WALL_CABINET_LAYOUTPOS,\n TALL_CABINET_LAYOUTPOS\n} from '../../../../../constants';\nimport { isUndefined } from 'util';\nimport { verticesDistance } from '../../../../../utils/geometry';\nimport convert from 'convert-units';\nimport { GeometryUtils } from '../../../../../utils/export';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';\nimport CameraControls from 'camera-controls';\nCameraControls.install({ THREE: Three });\nimport { returnReplaceableDeepSearchType } from '../../../../viewer2d/utils';\nimport { vectorIntersectWithMesh } from '../../../../../utils/objects-utils';\nimport { almostEqual } from '../../../../../utils/geometry';\n\nexport default class Viewer3DElevationDownload extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n showflag: true,\n toolObj: null,\n angleObj: null,\n waitForRender: 0\n };\n this.lastMousePosition = {};\n this.width = props.width;\n this.height = props.height;\n this.renderingID = 0;\n\n let { mode } = props.state;\n\n if (!window.__elevationRendererDownload) {\n window.__elevationRendererDownload = {};\n }\n\n this.renderer =\n window.__threeRendererDownload ||\n window.__elevationRendererDownload[mode] ||\n new Three.WebGLRenderer({\n preserveDrawingBuffer: true,\n alpha: true,\n antialias: true\n });\n\n this.renderer.shadowMap.enabled = true;\n this.renderer.shadowMapSoft = true;\n if (mode == 'MODE_3D_VIEW') {\n window.__threeRendererDownload = this.renderer;\n } else {\n window.__elevationRendererDownload[mode] = this.renderer;\n }\n\n this.renderer.domElement.style.display = 'none';\n }\n\n componentDidMount(nextProps) {\n let scene3D, camera, pivot, cameraControls, clock;\n\n const actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n const self = this;\n const { state } = this.props;\n const { mode, scene } = state;\n\n function setupLight(scene, inbBox) {\n if (ARRAY_ELEVATION_VIEW_MODES.includes(mode)) {\n const ambilight = new Three.AmbientLight('0xffffff', 3);\n scene.add(ambilight);\n } else {\n const shadowMapSize = 2048;\n const shadowCameraSize =\n Math.max(\n Math.abs(inbBox.min.x - inbBox.max.x),\n Math.abs(inbBox.min.y - inbBox.max.y),\n Math.abs(inbBox.min.z - inbBox.max.z)\n ) / 2;\n const shadowCameraFar = shadowCameraSize * 10;\n const bboxCenter = new Three.Vector3(\n (inbBox.min.x + inbBox.max.x) / 2,\n inbBox.min.y,\n (inbBox.min.z + inbBox.max.z) / 2\n );\n\n function addDirLight(inColor, inIntensity, inPosition) {\n const dirLight = new Three.DirectionalLight(inColor, inIntensity);\n dirLight.castShadow = true;\n dirLight.shadow.mapSize.x = shadowMapSize;\n dirLight.shadow.mapSize.y = shadowMapSize;\n dirLight.shadow.camera.near = 0;\n dirLight.shadow.camera.far = shadowCameraFar;\n\n dirLight.shadow.camera.top = shadowCameraSize * 1.5;\n dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.left = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.right = shadowCameraSize * 1.5;\n dirLight.position.copy(inPosition);\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(bboxCenter);\n scene.add(targetObject);\n\n dirLight.target = targetObject;\n dirLight.target.updateMatrixWorld();\n\n scene.add(dirLight);\n }\n\n function addSpotLight(\n inColor,\n inIntensity,\n inPosition,\n inTarget,\n inDistance\n ) {\n const spotLight = new Three.SpotLight();\n spotLight.intensity = inIntensity;\n spotLight.color.setHex(inColor);\n spotLight.position.copy(inPosition);\n spotLight.angle = 1.3;\n spotLight.distance = inDistance;\n spotLight.penumbra = 1.8;\n spotLight.decay = 0.01;\n\n spotLight.castShadow = true;\n spotLight.shadow.intensity = 2;\n spotLight.shadow.mapSize.width = 4096;\n spotLight.shadow.mapSize.height = 4096;\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(\n new Three.Vector3(inTarget.x, 0, inTarget.z)\n );\n scene.add(targetObject);\n\n spotLight.target = targetObject;\n spotLight.target.updateMatrixWorld();\n scene.add(spotLight);\n }\n\n const dirLightPos = new Three.Vector3(\n inbBox.max.x,\n inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),\n inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)\n );\n\n addDirLight('white', 1.5, dirLightPos);\n\n const ceiling = scene3D.getObjectByName('ceil');\n if (ceiling) {\n const ceilBBox = new Three.Box3().setFromObject(ceiling);\n\n const spot1 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4\n );\n const spot2 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spot3 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n const spot4 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);\n\n // check if spotlight is inside the room\n vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);\n vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);\n vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);\n vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);\n }\n }\n }\n\n // Load data\n this.setState({ isLoading: true, waitForRender: 0 });\n this.props.setIsLoading3D(true);\n const { promise, planData } = parseData(\n scene,\n actions,\n this.context.catalog,\n camera,\n this.renderer,\n state.mode\n );\n\n promise.then(() => {\n let objToRemove = [];\n planData.plan.traverse(obj => {\n if (obj.geometry === null) {\n objToRemove.push(obj);\n }\n });\n objToRemove.forEach(obj => {\n obj.removeFromParent();\n });\n const bbox = new Three.Box3().setFromObject(planData.plan);\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n //cameraControls.fitToBox(bbox, true);\n if (cameraControls) {\n const radius = 400; // Distance from target\n const angleInDegrees = 5;\n const angleInRadians = (angleInDegrees * Math.PI) / 180;\n\n // Calculate a position angleInDegrees to the right on the horizontal circle\n const eyeX = Math.sin(angleInRadians) * radius;\n const eyeZ = Math.cos(angleInRadians) * radius;\n\n cameraControls.setLookAt(eyeX, 0, eyeZ, 0, 0, 0); // Set camera with Y elevation\n }\n }\n setupLight(scene3D, planData.boundingBox);\n\n self.setState({ waitForRender: 1 });\n });\n\n const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);\n const layer = scene.getIn(['layers', scene.selectedLayer]);\n const areas = [],\n lights = [];\n\n let snapBox = null;\n\n // Check for data\n let msg = '';\n scene.layers.forEach(layer => {\n if (layer.id === scene.selectedLayer || layer.visible) {\n layer.items.forEach(item => {\n if (item.doorStyle === null) {\n if (!msg.includes(item.name + \"'s doorStyle is null.\"))\n msg += item.name + \"'s doorStyle is null.\\n\";\n }\n });\n }\n });\n if (msg !== '') {\n confirm(msg);\n }\n\n init();\n render();\n\n area.forEach(data => {\n areas.push(data);\n });\n for (let i = 0; i < areas.length; i++) {\n let aVertices = [];\n let lines = [];\n let height = 100;\n areas[i].vertices.forEach(data => {\n aVertices.push(data);\n });\n layer.lines.forEach(data => {\n lines.push(data);\n });\n for (let i = 0; i < lines.length; i++) {\n let data = lines[i];\n let realVec = [];\n data.vertices.forEach(vec => {\n realVec.push(vec);\n });\n if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {\n height = convert(layer.ceilHeight)\n .from(layer.unit)\n .to(UNIT_CENTIMETER);\n // height = data.properties.getIn(['height', 'length']);\n break;\n }\n }\n let vertices = [];\n areas[i].vertices.forEach(datas => {\n let vertex = scene.getIn([\n 'layers',\n scene.selectedLayer,\n 'vertices',\n datas\n ]);\n vertices.push(vertex);\n });\n vertices.push(vertices[0]);\n let fLen = vertices.length - 1;\n for (let i = 0; i < fLen; i++) {\n let sX = vertices[i].x;\n let sY = vertices[i].y;\n let eX = vertices[i + 1].x;\n let eY = vertices[i + 1].y;\n let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));\n for (let cLen = 200; cLen < len; cLen += 200) {\n let cX = sX + ((eX - sX) * cLen) / len;\n let cY = sY + ((eY - sY) * cLen) / len;\n let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));\n if (endLen <= 100) continue;\n let vec2 = new Three.Vector2(cX - sX, cY - sY);\n let angle = vec2.angle() + Math.PI / 2;\n cX = Math.cos(angle) * 30 + cX;\n cY = Math.sin(angle) * 30 + cY;\n let spotLight = new Three.SpotLight(0xeeeeee, 1.7);\n spotLight.angle = 0.76;\n spotLight.castShadow = true;\n spotLight.penumbra = 1;\n spotLight.decay = 1.7;\n spotLight.distance = height - 20;\n let target = new Three.Object3D();\n spotLight.target = target;\n lights.push({\n light: spotLight,\n target: target,\n x: cX,\n y: cY,\n height: height\n });\n }\n }\n }\n // //////////////////////////\n\n // OBJECT PICKING\n let toIntersect = [planData.plan];\n let mouse = new Three.Vector2();\n let gridPlane = planData.grid;\n let raycaster = new Three.Raycaster();\n let selectedObject = {};\n let currentObject = null;\n let isSelected = false;\n let bRotate = false;\n let bMove = false;\n let bMoveUP = false;\n /** Transformation matrix of grid */\n const gridMatrix = new Three.Matrix4();\n let rayDirection = new Three.Vector3();\n /** World position of grid plane */\n let gridPlanOrigin = new Three.Vector3();\n let Point = new Three.Vector2();\n let sPoint = new Three.Vector2();\n\n // SNAP FUNCTION VARIABLE\n let snapFlag = false;\n let snapAnimI = 0;\n let snapDelta = 6;\n let t_i = 0;\n let targetPoint = new Three.Vector3();\n let targetRot = 0;\n let targetUVec = new Three.Vector3();\n let targetCRotation = 0;\n let targetObj = null;\n let targetNumber = 0;\n\n let allItemRect;\n let allItemSnap;\n let allLines;\n let allLineRects;\n let allLineSnap;\n let allRect;\n let allArea;\n\n // end snap function variable///////////////////////\n let backsplashVisible = false;\n let holeItems = GeometryUtils.getHoleItems(layer);\n\n let removeSnapBox = () => {\n if (snapBox != null) {\n planData.plan.remove(snapBox);\n disposeObject(snapBox);\n snapBox = null;\n targetObj = null;\n snapFlag = false;\n }\n };\n\n const camToGrid = new Three.Vector3();\n let camPos = camera.position;\n\n const mapCursorPosition = (e, altitude) => {\n camToGrid.subVectors(gridPlanOrigin, camPos);\n\n let camD = camToGrid.y + (altitude ? altitude : 0);\n let rayD = rayDirection.y;\n\n const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);\n intersectPt.y = gridPlanOrigin.y;\n intersectPt.applyMatrix4(gridMatrix);\n\n return { x: intersectPt.x, y: -intersectPt.z };\n };\n\n /* for Snap Functions*/\n\n let pointLineDistance = function (point, line) {\n // return distance from point to line and directional point of line\n let pX = point.x;\n let pY = point.y;\n let l1x = line[0].x;\n let l1y = line[0].y;\n let l2x = line[1].x;\n let l2y = line[1].y;\n let pLine = new Three.Vector2(l1x - pX, l1y - pY);\n let Line = new Three.Vector2(l1x - l2x, l1y - l2y);\n let pAngle = pLine.angle();\n let lAngle = Line.angle();\n let pDistance = pLine.length();\n let oDistance = Line.length();\n let directDistance = Math.sin(pAngle - lAngle) * pDistance;\n let lineDistance = Math.cos(pAngle - lAngle) * pDistance;\n let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;\n let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;\n let dPoint = { x: dX, y: dY };\n return { distance: directDistance, point: dPoint };\n };\n let getInterSect = function (shape1, shape2) {\n // return result of intersect of two shape\n let count = 0;\n for (let i = 0; i < shape1.length - 1; i++) {\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\n let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };\n for (let j = 0; j < shape2.length - 1; j++) {\n let el1 = { x: shape2[j].x, y: shape2[j].y };\n let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };\n let flag = GeometryUtils.getLineInterSect(\n sl1.x,\n sl1.y,\n sl2.x,\n sl2.y,\n el1.x,\n el1.y,\n el2.x,\n el2.y\n );\n if (flag) {\n count++;\n if (count > 1) return true;\n }\n }\n }\n return false;\n };\n\n this.getRectPoints = function (width, height, pos, rot) {\n // return 4 points from it's position, width, height, and rotation info\n let rX = width / 2;\n let rY = height / 2;\n let vertices = [];\n let cRot = rot;\n let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rY = -rY;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n vertices.push(vertices[0]);\n vertices.push(vertices[2]);\n return vertices;\n };\n\n const prepareSnap = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItems(\n this.props.state.scene,\n actions.catalog,\n allLineRects\n );\n allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\n allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);\n allRect = allItemRect.others.concat(allLineRects);\n allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);\n allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);\n allArea = GeometryUtils.getAllArea(layer);\n };\n\n // prepareSnapSpec(layer);\n let lineRect = layer => {\n let areainfo = [];\n layer.areas.forEach(area => {\n let sz = area.vertices.size;\n for (var i = 0; i < sz; i++) {\n areainfo.push(area.vertices.get(i));\n }\n });\n let rect = [];\n areainfo.forEach(area => {\n let vert = layer.vertices.get(area);\n rect.push(vert.x, vert.y);\n });\n return rect;\n };\n\n this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {\n //collision check from one object to every other object excpet target object\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let layoutpos = 'utype';\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n layoutpos = cat.info.layoutpos;\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n let olayoutpos = ocat.info.layoutpos;\n if (\n !(\n (layoutpos === BASE_CABINET_LAYOUTPOS &&\n olayoutpos === WALL_CABINET_LAYOUTPOS) ||\n (layoutpos === WALL_CABINET_LAYOUTPOS &&\n olayoutpos === BASE_CABINET_LAYOUTPOS)\n )\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n datas = [];\n layer.lines.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let item = layer.lines.getIn([data.id]);\n // let llayoutpos = catalog.elements[item.type].info.layoutpos;\n let vertices = [];\n item.vertices.forEach(data => {\n let vertex = layer.vertices.get(data);\n vertices.push({ x: vertex.x, y: vertex.y });\n });\n let vec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let tRot = vec.angle();\n let tPos = new Three.Vector2(\n (vertices[0].x + vertices[1].x) / 2,\n (vertices[0].y + vertices[1].y) / 2\n );\n let tdepth = item.properties.getIn(['thickness', 'length']);\n let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);\n let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionHoleCheck = function (\n obj,\n pos,\n rot,\n tObj,\n item = null,\n catalog\n ) {\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let currentItem;\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n currentItem = {\n selectedItem: item,\n cat\n };\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n if (!ocat)\n ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];\n let otherItem = {\n item,\n cat: ocat\n };\n\n if (\n GeometryUtils.needSnap(currentItem, otherItem) &&\n otherItem.cat.type != 'cabinet'\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n\n let holes = [];\n layer.lines.forEach(line => {\n line.holes.forEach(holeID => {\n let hole = layer.holes.get(holeID);\n holes.push(hole);\n });\n });\n let i = 0;\n for (; i < holes.length; i++) {\n let tPos = new Three.Vector2(holes[i].x, holes[i].y);\n let twidth = holes[i].properties.getIn(['width', 'length']);\n let theight = holes[i].properties.getIn(['thickness', 'length']);\n let trot = holes[i].rotation;\n let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionSlide = function (\n item3D,\n originPos,\n layer,\n sVertices,\n tPos,\n item\n ) {\n let items = [];\n\n let cur_category = '';\n let catalog = actions.catalog;\n if (layer.selected.items.size > 0) {\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\n let catid = selectedItem.type;\n let cat = catalog.elements[catid];\n if (cat === undefined || cat === null)\n cat = catalog.getIn(['elements', catid]);\n cur_category = cat.obj.category;\n }\n\n layer.items.forEach(data => {\n if (data.id == selectedObject.itemID) {\n return;\n }\n\n items.push(data.toJS());\n });\n let oPos = new Three.Vector2(originPos.x, -originPos.z);\n\n // sort from distance\n for (let i = 0; i < items.length - 1; i++) {\n for (let j = i + 1; j < items.length; j++) {\n if (\n verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >\n verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))\n ) {\n let exchange = items[j];\n items[j] = items[i];\n items[i] = exchange;\n }\n }\n }\n let i = 0;\n\n for (; i < items.length; i++) {\n if (!items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n if (target === undefined) {\n return false;\n }\n let targetData = layer.items.getIn([items[i].id]);\n let tRot = targetData.rotation;\n let tPos = new Three.Vector2(targetData.x, targetData.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(sVertices, tVertices)) {\n break;\n }\n }\n if (items.length == 0 || !items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n let targetData = layer.items.getIn([items[i].id]);\n let targetPos = new Three.Vector2(targetData.x, targetData.y);\n let tRot = targetData.rotation;\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n targetPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n // ////////////////////////\n let vArray = [];\n let dteArray = [];\n let lineArray = [];\n let vdistanceArray = [];\n let cVecArray = [];\n let inFlag = false;\n for (let i = 0; i < 4; i++) {\n let v1 = tVertices[i];\n let v2 = tVertices[i + 1];\n let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [\n { x: v1.x, y: v1.y },\n { x: v2.x, y: v2.y }\n ]);\n dteArray.push(data.distance);\n vArray.push(data.point);\n lineArray.push([v1, v2]);\n }\n // if tPos in target object\n let tPosDistance =\n Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[2]).distance);\n let realDistance = new Three.Vector2(\n lineArray[1][0].x - lineArray[1][1].x,\n lineArray[1][0].y - lineArray[1][1].y\n ).length();\n let tPosDistance1 =\n Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[3]).distance);\n let realDistance1 = new Three.Vector2(\n lineArray[0][0].x - lineArray[0][1].x,\n lineArray[0][0].y - lineArray[0][1].y\n ).length();\n if (\n Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&\n Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01\n )\n inFlag = true;\n // ////////////////////\n let key = 0;\n // sort distance from origin point\n for (let j = 0; j < dteArray.length - 1; j++) {\n for (let k = j + 1; k < dteArray.length; k++) {\n if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {\n let temp = dteArray[k];\n dteArray[j] = dteArray[k];\n dteArray[k] = temp;\n let temp1 = vArray[k];\n vArray[j] = vArray[k];\n vArray[k] = temp1;\n let temp2 = lineArray[k];\n lineArray[j] = lineArray[k];\n lineArray[k] = temp2;\n }\n }\n }\n // //////////////////////////////\n for (let i = 0; i < 4; i++) {\n let data = pointLineDistance(sVertices[i], lineArray[key]);\n vdistanceArray.push(data.distance);\n cVecArray.push({\n x: data.point.x - sVertices[i].x,\n y: data.point.y - sVertices[i].y\n });\n }\n\n for (let j = 0; j < vdistanceArray.length; j++) {\n let tX = tPos.x + cVecArray[j].x;\n let tY = tPos.y + cVecArray[j].y;\n if (\n this.collisionCheck(\n item3D,\n new Three.Vector2(tX, tY),\n item.rotation,\n {\n userData: { itemId: null }\n },\n item,\n this.context.catalog\n )\n ) {\n item3D.position.set(tX, originPos.y, -tY);\n sPoint.set(tX, tY);\n break;\n }\n }\n };\n\n this.snap = function (obj, layer) {\n // snap operation\n let target = obj.userData.target;\n for (; target.parent != null; ) {\n if (target.name == 'pivot') break;\n target = target.parent;\n }\n let source = obj.parent.parent.parent;\n if (target.userData.type == 'item') {\n let sRot = layer.getIn(['items', source.userData.itemId]).rotation;\n let tRot = layer.getIn(['items', target.userData.itemId])\n ? layer.getIn(['items', target.userData.itemId]).rotation\n : 0;\n let item = layer.getIn(['items', source.userData.itemId]);\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let tBounding = target.children[0].userData;\n let tPos = target.position.clone();\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 200;\n snapBoxObj.add(box);\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n let deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 +\n (sBounding.max.x - sBounding.min.x) / 2;\n let deltaZ =\n (tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n let sPos = snapBoxObj.position.clone();\n // avaliable snap place///////////////\n let tPoses = [];\n let pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n let pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 -\n (sBounding.max.x - sBounding.min.x) / 2;\n deltaZ =\n -(tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n let distance = Math.sqrt(\n (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +\n (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)\n );\n let tNum = 1;\n tPos = tPoses[0].clone();\n for (let i = 1; i < tPoses.length; i++) {\n let curDis = Math.sqrt(\n (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +\n (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)\n );\n if (curDis < distance) {\n distance = curDis;\n tNum = i + 1;\n tPos = tPoses[i].clone();\n }\n }\n // //////////////////////////////////\n if (\n targetObj != null &&\n targetObj.userData.itemId == target.userData.itemId &&\n tNum == targetNumber\n ) {\n removeSnapBoxObj();\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////\n if (tNum >= 3) tRot += 180;\n\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = tPos;\n snapBox = snapBoxObj;\n let cx = sPos.x - tPos.x;\n let cz = sPos.z - tPos.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n } else {\n let item = layer.getIn(['items', source.userData.itemId]);\n if (holeItems.length) {\n let i;\n for (i = 0; i < holeItems.length; i++) {\n let hole = holeItems[i];\n if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {\n if (\n item.y + selectedObj.size.width / 2 >=\n hole.y - hole.width / 2 &&\n item.y - selectedObj.size.width / 2 <=\n hole.y + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.x <= hole.x &&\n item.x + selectedObj.size.height >= hole.x\n : item.x >= hole.x &&\n item.x - selectedObj.size.height <= hole.x)\n )\n break;\n } else {\n if (\n item.x + selectedObj.size.width / 2 >=\n hole.x - hole.width / 2 &&\n item.x - selectedObj.size.width / 2 <=\n hole.x + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.y <= hole.y &&\n item.y + selectedObj.size.height >= hole.y\n : item.y >= hole.y &&\n item.y - selectedObj.size.height <= hole.y)\n )\n break;\n }\n }\n if (i != holeItems.length) return;\n }\n if (target.userData.type == 'hole') {\n snapFlag = false;\n return;\n } else {\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 100;\n snapBoxObj.add(box);\n\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n\n let snapLine = layer.getIn(['lines', target.userData.lineId]);\n // let snapLineThickness = snapLine.properties.getIn([\n // 'thickness',\n // 'length'\n // ]);\n let snapLineThickness = 10.64;\n let vertices = [];\n if (snapLine === undefined) return;\n snapLine.vertices.forEach(data => {\n let vec = layer.getIn(['vertices', data]);\n vertices.push(vec);\n });\n let iX = source.position.clone().x;\n let iY = -source.position.clone().z;\n let lineVec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let oLength = Math.sqrt(\n lineVec.x * lineVec.x + lineVec.y * lineVec.y\n );\n lineVec.normalize();\n let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);\n let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\n let angle = Math.abs(lineVec.angle() - vec2.angle());\n angle = angle > Math.PI ? 2 * Math.PI - angle : angle;\n let lineLength = Math.cos(angle) * vec2Legnth;\n let transLength = 0;\n if (lineLength < 100) {\n transLength = -lineLength + (snapLineThickness + width) / 2;\n }\n if (lineLength > oLength - 100) {\n transLength =\n -lineLength - (snapLineThickness + width) / 2 + oLength;\n }\n let directPoint = new Three.Vector2(\n lineVec.x * lineLength + vertices[0].x,\n lineVec.y * lineLength + vertices[0].y\n );\n let directLine = new Three.Vector2(\n directPoint.x - iX,\n directPoint.y - iY\n );\n let dLength = Math.sqrt(\n (iX - directPoint.x) * (iX - directPoint.x) +\n (iY - directPoint.y) * (iY - directPoint.y)\n );\n let reduceLen = (snapLineThickness + depth) / 2;\n let scale = (dLength - reduceLen) / dLength;\n let tPos = new Three.Vector2(\n iX + (directPoint.x - iX) * scale + lineVec.x * transLength,\n iY + (directPoint.y - iY) * scale + lineVec.y * transLength\n );\n let realAngle = directLine.angle() - Math.PI / 2;\n let tRot = (realAngle * 180) / Math.PI;\n let sPos = new Three.Vector2(iX, iY);\n let sRot = item.rotation;\n let tNum = 0;\n // //////////////////////////////////////\n // check part////\n let result = this.collisionCheck(\n source,\n tPos,\n tRot,\n target,\n item,\n this.context.catalog\n );\n // console.log('result', result);\n if (result == false) {\n removeSnapBoxObj();\n removeSnapBox();\n return;\n }\n // ////////////////\n if (targetObj === target && snapBox !== null) {\n removeSnapBoxObj();\n snapAnimI = 20;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n snapFlag = false;\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////////\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n snapBox = snapBoxObj;\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n }\n }\n };\n\n /*end of snap functions*/\n let selectedObj = null;\n let firstMove = false;\n let prevX, prevY;\n\n let selObj = null;\n\n let createToolObject = () => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 200;\n canvas.style.width = 50 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = '#FFFFFF';\n ctx.strokeStyle = '#000000';\n ctx.beginPath();\n ctx.arc(50, 50, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img1 = new Image();\n img1.crossOrigin = 'anonymous';\n img1.src = '/assets/img/svg/3d_item_rotation.svg';\n img1.onload = function () {\n ctx.drawImage(img1, 16, 16, 68, 68);\n };\n\n ctx.beginPath();\n ctx.arc(50, 150, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img2 = new Image();\n img2.crossOrigin = 'anonymous';\n img2.src = '/assets/img/svg/3d_item_move.svg';\n img2.onload = function () {\n ctx.drawImage(img2, 16, 116, 68, 68);\n };\n\n return canvas;\n };\n\n let clockWise = true;\n let lastAngle = 0;\n\n let createAngleObject = rotate => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 100;\n canvas.style.width = 100 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.strokeStyle = '#FFFFFF';\n ctx.lineWidth = 10;\n ctx.beginPath();\n ctx.arc(50, 50, 45, 0, 2 * Math.PI);\n ctx.stroke();\n\n ctx.strokeStyle = SECONDARY_PURPLE_COLOR;\n ctx.lineWidth = 6;\n ctx.beginPath();\n if (lastAngle < 15 && lastAngle > -15) {\n if (rotate >= 0) {\n clockWise = false;\n } else {\n clockWise = true;\n }\n if (lastAngle === 0) {\n if (rotate > -180) {\n clockWise = true;\n } else {\n clockWise = false;\n }\n }\n }\n\n ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);\n ctx.stroke();\n\n lastAngle = rotate;\n\n return canvas;\n };\n\n let toolTexture = new Three.Texture(createToolObject());\n toolTexture.needsUpdate = true;\n\n let toolObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })\n );\n toolObj.material.transparent = true;\n toolObj.material.depthTest = false;\n toolObj.scale.set(20, 40, 20);\n toolObj.renderOrder = 3;\n toolObj.name = 'toolObj';\n\n let angleTexture = new Three.Texture(createAngleObject(0));\n angleTexture.needsUpdate = true;\n\n let angleObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })\n );\n\n angleObj.scale.set(0.075, 0.075, 0.075);\n angleObj.material.transparent = true;\n angleObj.material.depthTest = false;\n angleObj.renderOrder = 3;\n angleObj.name = 'angleObj';\n\n /**\n * Calculate plane point of mouse with `event` & `altitude`\n * * Calculate mouse.x & mouse.y\n * * Set raycaster from camera & Set raycaster direction\n * * Calculate Point & dispatch an action\n */\n const getPoint = (e, alti) => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n Point = mapCursorPosition(e, alti);\n this.context.projectActions.updateMouseCoord(Point);\n };\n\n const getIntersectWallPoint = e => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;\n let keys = Object.keys(lines);\n let arrMesh = [];\n keys.forEach(key => {\n lines[key].children[0].children.forEach(mesh => {\n if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);\n });\n });\n if (arrMesh.length > 0) {\n const intersects = raycaster.intersectObjects(arrMesh);\n if (intersects.length > 0) {\n let intersectPt = intersects[0].point;\n intersectPt.applyMatrix4(gridMatrix);\n\n Point = { x: intersectPt.x, y: -intersectPt.z };\n this.context.projectActions.updateMouseCoord(Point);\n return true;\n }\n }\n\n return false;\n };\n\n this.mouseDownEvent = event => {\n gridPlanOrigin = gridPlane.position;\n gridMatrix.copy(gridPlane.matrixWorld).invert();\n let altitude = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n altitude = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(event, altitude);\n\n const state = this.props.state;\n\n this.lastMousePosition.x = mouse.x;\n this.lastMousePosition.y = mouse.y;\n\n const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);\n const sCount =\n layer.selected.areas.size +\n layer.selected.holes.size +\n layer.selected.items.size +\n layer.selected.lines.size;\n\n if (sCount <= 0) {\n isSelected = false;\n } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {\n isSelected = true;\n }\n\n prevX = Point.x;\n prevY = Point.y;\n\n /**\n * 0 - rotate\n * 1 - move up/down\n * 2 - move x/y\n * 3 - camera rotate\n */\n let transflag = 3;\n raycaster.setFromCamera(mouse, camera);\n const meshes = [];\n toIntersect.forEach(object => {\n if (!object) return;\n object.traverse(o => {\n if (o.isMesh) meshes.push(o);\n });\n });\n let intersects = raycaster.intersectObjects(meshes, true);\n\n let toolIntersects = raycaster.intersectObjects([toolObj], true);\n\n if (toolIntersects.length > 0) {\n let distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 2;\n } else {\n distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 0;\n }\n }\n }\n\n if (intersects.length > 0) {\n let i = 0,\n length = intersects.length;\n for (i = 0; i < length; i++) {\n if (\n intersects[i].object.type !== 'BoxHelper' &&\n // intersects[i].object.type === OBJTYPE_MESH &&\n intersects[i].object.name !== 'lineText' &&\n intersects[i].object.name !== 'soul' &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n\n if (intersects[i] !== undefined) {\n if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;\n if (intersects[i].object.name.indexOf('transHole') != -1)\n transflag = 2;\n } else {\n console.log('intersects[i] is undefined in viewer3d/viewer3d.js');\n }\n }\n\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;\n\n if (isSelected) {\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\n let i;\n for (i = 0; i < intersects.length; i++) {\n if (\n intersects[i].object instanceof Three.Mesh &&\n intersects[i].object.name != 'TransformBox' &&\n intersects[i].object.type != 'Line' &&\n intersects[i].object.name != 'lineText' &&\n intersects[i].object.name != 'countertops' &&\n intersects[i].object.type != 'BoxHelper' &&\n intersects[i].object.name != 'floor' &&\n intersects[i].object.name != 'backFace' &&\n intersects[i].object.name != 'soul' &&\n !intersects[i].object.name.includes('backsplash') &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n if (intersects[i] === undefined) {\n if (transflag !== 0 && transflag !== 2) {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n // orbitController.enableRotate = true;\n return;\n }\n }\n if (selectedObject !== undefined) {\n sPoint.set(Point.x, Point.y);\n if (transflag == 0) {\n scene3D.remove(toolObj);\n let alti = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n alti = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(\n { offsetX: event.offsetX - 50, offsetY: event.offsetY },\n alti\n );\n let selectedItem =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(selectedItem)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n\n lastAngle = 0;\n\n angleObj.position.set(\n planData.plan.position.x + Point.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : selItem.properties.get('altitude').get('length') +\n planData.plan.position.y,\n planData.plan.position.z - Point.y\n );\n\n angleTexture.image = createAngleObject(0);\n angleTexture.needsUpdate = true;\n\n scene3D.add(angleObj);\n this.setState({ angleObj: angleObj });\n let centerPos = Point;\n getPoint(event, alti);\n\n this.context.itemsActions.beginRotatingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y,\n centerPos.x,\n centerPos.y\n );\n bRotate = true;\n } else if (transflag == 1) {\n bMoveUP = true;\n } else if (transflag == 2) {\n switch (true) {\n case 'holeID' in selectedObject:\n this.context.holesActions.beginDraggingHole3D(\n selectedObject.layerID,\n selectedObject.holeID,\n Point.x,\n Point.y\n );\n break;\n default:\n this.context.itemsActions.beginDraggingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y\n );\n break;\n }\n bMove = true;\n scene3D.remove(toolObj);\n }\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(mode))\n cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;\n }\n } else {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n // orbitController.enableRotate = true;\n return;\n }\n }\n };\n\n this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color\n this.renderer.setSize(this.width, this.height);\n\n // Add the output of the renderer to the html element\n const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);\n canvasWrapper.appendChild(this.renderer.domElement);\n\n //\n\n if (\n scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=\n 0\n ) {\n // if selected Object\n isSelected = true;\n selectedObject.layerID = scene.selectedLayer;\n selectedObject.itemID = scene\n .getIn(['layers', scene.selectedLayer, 'selected', 'items'])\n .toJS()[0];\n setTimeout(() => {\n try {\n currentObject =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(currentObject)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n let itemPos = currentObject.position.clone();\n toolObj.position.set(\n planData.plan.position.x + itemPos.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : planData.plan.position.y + currentObject.children[0].position.y,\n planData.plan.position.z + itemPos.z\n );\n\n scene3D.add(toolObj);\n this.setState({ toolObj: toolObj });\n } catch (err) {\n console.log(\n 'selectedObject : ' +\n JSON.stringify(selectedObject) +\n '\\nError: ' +\n err\n );\n }\n }, 2000);\n }\n\n // Scene functions\n\n function init() {\n clock = new Three.Clock();\n scene3D = new Three.Scene();\n scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\n // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);\n window.scene3D = scene3D;\n // Camera\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n let { layers } = scene;\n let selectedLayer = layers.get(scene.selectedLayer);\n let ceilHeight = convert(selectedLayer.ceilHeight)\n .from(scene.rulerUnit)\n .to(scene.unit);\n let vertices = selectedLayer.vertices.toJS();\n let maxX = 0,\n maxY = 0,\n minX = 0,\n minY = 0;\n let lines = [];\n selectedLayer.lines.toArray().forEach(line => {\n let vertex0 = selectedLayer.vertices.get(line.vertices.get(0));\n let vertex1 = selectedLayer.vertices.get(line.vertices.get(1));\n let { x: x1, y: y1 } = vertex0;\n let { x: x2, y: y2 } = vertex1;\n let data = line.toJS();\n data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };\n switch (mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 < x2) {\n lines.push(data);\n }\n break;\n case MODE_BACK_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 > x2) {\n lines.push(data);\n }\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 < y2) {\n lines.push(data);\n }\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 > y2) {\n lines.push(data);\n }\n break;\n default:\n break;\n }\n });\n vertices.toArray().forEach(vertex => {\n if (lines.filter(line => line.vertices.includes(vertex.id)).length) {\n maxX = Math.max(vertex.x, maxX);\n maxY = Math.max(vertex.y, maxY);\n if (minX === 0) minX = vertex.x;\n if (minY === 0) minY = vertex.y;\n minX = Math.min(vertex.x, minX);\n minY = Math.min(vertex.y, minY);\n }\n });\n let line_length, angle, posX, posY;\n switch (state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = minY - 100;\n posX = (minX + maxX) / 2;\n angle = 0;\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = minX - 100;\n posY = (minY + maxY) / 2;\n angle = -Math.PI / 2;\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = maxX + 100;\n posY = (minY + maxY) / 2;\n angle = Math.PI / 2;\n break;\n case MODE_BACK_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = maxY + 100;\n posX = (minX + maxX) / 2;\n angle = Math.PI;\n break;\n }\n let scale = Math.min(\n (self.width * 0.85) / line_length,\n (self.height * 0.85) / ceilHeight\n );\n // let frontRect = {width: line_length * scale, height: ceilHeight * scale};\n let cameraRect = {\n width: self.width / scale,\n height: self.height / scale\n };\n camera = new Three.OrthographicCamera(\n -cameraRect.width / 2,\n cameraRect.width / 2,\n cameraRect.height / 2,\n -cameraRect.height / 2,\n 1,\n 10000\n );\n camera.position.set(posX, ceilHeight / 2, -posY);\n camera.rotation.set(0, angle, 0);\n } else {\n const aspectRatio = self.width / self.height;\n camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);\n camera.position.set(0, 0, 1);\n }\n camera.layers.enable(1);\n\n function loadENV() {\n new RGBELoader().load(\n '/assets/brown_photostudio_02_1k.hdr',\n function (texture) {\n texture.mapping = Three.EquirectangularReflectionMapping;\n scene3D.environment = texture;\n texture.dispose();\n }\n );\n }\n\n // Camera Controls\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n cameraControls = new CameraControls(camera, self.renderer.domElement);\n cameraControls.dollyToCursor = true;\n cameraControls.infinityDolly = true;\n cameraControls.minDistance = 50;\n cameraControls.maxDistance = Infinity;\n cameraControls.zoomSpeed = 1;\n\n loadENV();\n }\n\n scene3D.add(planData.plan);\n scene3D.add(planData.grid);\n scene3D.add(camera);\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n planData.cam.add(camera);\n scene3D.add(planData.cam);\n } else {\n pivot = new Three.Object3D();\n pivot.add(camera);\n scene3D.add(pivot);\n }\n\n // LIGHT\n\n let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light\n }\n\n function render() {\n const delta = clock.getDelta(); // Get time delta for smooth updates\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode))\n cameraControls.update(delta);\n for (let i = 0; i < lights.length; i++) {\n lights[i].light.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y + lights[i].height - 10,\n planData.plan.position.z - lights[i].y\n );\n lights[i].target.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y,\n planData.plan.position.z - lights[i].y\n );\n }\n\n camera.updateMatrix();\n camera.updateMatrixWorld();\n\n for (let elemID in planData.sceneGraph.LODs) {\n planData.sceneGraph.LODs[elemID].update(camera);\n }\n if (snapBox !== null) {\n if (snapAnimI >= 15) {\n if ('x' in targetPoint)\n snapBox.position.set(\n targetPoint.x,\n snapBox.position.y,\n targetPoint.z\n );\n snapFlag = false;\n t_i++;\n } else {\n if (snapAnimI == 0) {\n targetCRotation =\n ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *\n 180) /\n Math.PI) %\n 360;\n if (targetCRotation > 180) targetCRotation -= 360;\n if (targetCRotation < -180) targetCRotation += 360;\n targetCRotation = (targetCRotation / 180) * Math.PI;\n }\n if (snapAnimI < 10) {\n snapBox.rotateY(targetCRotation / 10);\n } else {\n snapBox.position.set(\n snapBox.position.clone().x - targetUVec.x / 10,\n snapBox.position.clone().y - targetUVec.y / 10,\n snapBox.position.clone().z - targetUVec.z / 10\n );\n }\n snapAnimI++;\n }\n }\n\n if (t_i === 20) {\n //stop snap after 5s\n removeSnapBox();\n }\n\n // hide hole if wall is not visible\n let layerID = self.props.state.scene.selectedLayer;\n let layer = self.props.state.scene.layers.get(layerID);\n layer.holes.forEach(data => {\n let line = planData.sceneGraph.layers[layerID].lines[data.line];\n let hole = planData.sceneGraph.layers[layerID].holes[data.id];\n if (line instanceof Three.Object3D && !line.isMesh) {\n line = line.children[0].children[0];\n // index(faces) of the line\n const indexAttribute = line.geometry.getIndex();\n const firstFaceIndices = [\n indexAttribute.getX(0),\n indexAttribute.getX(1),\n indexAttribute.getX(2)\n ];\n\n if (firstFaceIndices == undefined) return;\n // normal vector of the line\n const normalAttribute = line.geometry.attributes.normal;\n let normal = new Three.Vector3()\n .fromBufferAttribute(normalAttribute, 0)\n .clone();\n normal = normal\n .applyMatrix4(line.matrixWorld)\n .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))\n .normalize();\n let vertices = layer.lines.get(data.line).vertices.toJS();\n let vertex1 = layer.vertices.get(vertices[0]);\n let vertex2 = layer.vertices.get(vertices[1]);\n let cX = (vertex1.x + vertex2.x) / 2;\n let cY = (vertex1.y + vertex2.y) / 2;\n let posVec = new Three.Vector3(cX, 150, -cY);\n posVec = posVec.add(planData.plan.position.clone());\n let cameraLine = camera.position.clone().sub(posVec);\n if (hole) {\n hole.traverse(child => {\n if (child.isMesh) {\n child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;\n child.material.transparent =\n cameraLine.dot(normal) > 0 ? false : true;\n child.material.needsUpdate = true;\n }\n });\n }\n }\n // /////////////////////////////////////\n });\n\n self.renderer.render(scene3D, camera);\n self.renderingID = requestAnimationFrame(render);\n\n if (self.state.waitForRender > 0) {\n self.state.waitForRender++;\n if (self.state.waitForRender > 2) {\n self.setState({ isLoading: false, waitForRender: 0 });\n setTimeout(() => self.props.setIsLoading3D(false), 100);\n console.log('257 line: false');\n self.renderer.domElement.style.display = 'block';\n }\n }\n }\n\n //\n\n window.planData = planData;\n this.planData = planData;\n this.camera = camera;\n this.cameraControls = cameraControls;\n this.scene3D = scene3D;\n\n //\n\n prepareSnap(layer);\n }\n\n componentWillUnmount() {\n cancelAnimationFrame(this.renderingID);\n\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(this.props.state.mode)) {\n if (this.cameraControls !== undefined) this.cameraControls.dispose();\n }\n\n disposeScene(this.scene3D);\n this.scene3D.remove(this.planData.plan);\n this.scene3D.remove(this.planData.grid);\n\n this.scene3D = null;\n this.planData = null;\n this.camera = null;\n this.cameraControls = null;\n this.renderer.renderLists.dispose();\n }\n\n componentWillReceiveProps(nextProps) {\n let { width, height } = nextProps;\n let actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n this.width = width;\n this.height = height;\n\n this.renderer.setSize(width, height);\n\n let allLines;\n let allLineRects;\n let allItemRect;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n let data = nextProps.state.scene;\n let layer = data.getIn(['layers', data.selectedLayer]);\n const self = this;\n\n function implementBacksplash() {\n let allItems = GeometryUtils.getAllItemSpecified(\n nextProps.state.scene,\n actions.catalog,\n BASE_CABINET_LAYOUTPOS\n );\n let i,\n items = [];\n for (i = 0; i < allItems.others.length; i++)\n items.push(allItems.others[i]);\n if (allItems.cur) items.push(allItems.cur);\n\n for (i = 0; i < items.length; i++) {\n let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);\n let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);\n actions.itemsActions.setBacksplashVisible(\n items[i].itemInfo.id,\n visible\n );\n\n createBacksplash(\n items[i],\n nextProps.state.scene.getIn([\n 'layers',\n nextProps.state.scene.selectedLayer\n ]),\n planData,\n nextProps.state.scene\n );\n }\n }\n\n function implementWarningBox() {\n let holeItems = GeometryUtils.getHoleItems(layer);\n let i,\n items = [];\n for (i = 0; i < allItemRect.others.length; i++)\n items.push(allItemRect.others[i]);\n if (allItemRect.cur) items.push(allItemRect.cur);\n\n for (i = 0; i < items.length; i++)\n checkCabinetOverlap(\n { x: items[i].pos.x, y: items[i].pos.y },\n items[i],\n holeItems,\n planData\n );\n }\n\n let prepareSnapSpec = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItemSpecified(\n this.props.state.scene,\n actions.catalog,\n [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]\n );\n };\n\n let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);\n\n if (this.state.showflag) {\n prepareSnapSpec(layer);\n implementBacksplash();\n implementWarningBox();\n this.setState({ showflag: false });\n }\n if (\n nextProps.state.scene !== this.props.state.scene ||\n (nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') !==\n this.props.state.doorStyle.get('name'))\n ) {\n let changedValues = diff(this.props.state.scene, nextProps.state.scene);\n prepareSnapSpec(layer);\n if (\n nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') ===\n this.props.state.doorStyle.get('name')\n ) {\n self.setState({ isLoading: true, waitForRender: 0 });\n this.props.setIsLoading3D(true);\n self.renderer.domElement.style.display = 'none';\n }\n if (nextProps.state.scene.showfg == true) {\n implementBacksplash();\n implementWarningBox();\n } else {\n deleteSpecifiedMeshObjects('TransformBox');\n }\n let { toolObj, angleObj } = this.state;\n var { promise } = updateScene(\n this.planData,\n nextProps.state.scene,\n this.props.state.scene,\n changedValues.toJS(),\n actions,\n this.context.catalog,\n nextProps.state.mode,\n toolObj,\n angleObj\n );\n promise.then(p1Value => {\n self.setState({ waitForRender: 1 });\n });\n }\n }\n\n render() {\n const { isLoading } = this.state;\n if (isLoading) {\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'none');\n this.renderer.domElement.style.display = 'none';\n return (\n <div\n style={{\n alignItems: ' center',\n width: this.props.width,\n height: this.props.height,\n display: 'inline-flex',\n justifyContent: 'center'\n }}\n >\n <img\n style={{\n width: '70px',\n height: '70px',\n animation: 'spin 2s linear infinite'\n }}\n src={'/assets/img/loading_large.gif'}\n alt=\"img\"\n />\n </div>\n );\n } else {\n this.renderer.domElement.style.pointerEvents = 'auto';\n this.renderer.domElement.style.opacity = '1';\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'block');\n return React.createElement('div', { ref: 'canvasWrapper' });\n }\n }\n}\n\nViewer3DElevationDownload.propTypes = {\n state: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n replaceCabinet: PropTypes.func.isRequired\n};\n\nViewer3DElevationDownload.contextTypes = {\n areaActions: PropTypes.object.isRequired,\n holesActions: PropTypes.object.isRequired,\n itemsActions: PropTypes.object.isRequired,\n linesActions: PropTypes.object.isRequired,\n sceneActions: PropTypes.object.isRequired,\n projectActions: PropTypes.object.isRequired,\n catalog: PropTypes.object\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,175 +0,0 @@
1
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
2
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
3
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
7
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
8
- import React, { useEffect, useState } from 'react';
9
- import State3D from '../../../../viewer3d/ruler-utils/state3D';
10
- import { getSignedUrl } from '../../../../../utils/helper';
11
- import Viewer3D from '../../../../viewer3d/viewer3d';
12
- var ViewerElevationDownLoad = function ViewerElevationDownLoad(_ref) {
13
- var state = _ref.state,
14
- setIsLoadingElevation = _ref.setIsLoadingElevation,
15
- catalog = _ref.catalog;
16
- var width = 682,
17
- height = 500;
18
- var pdfID = "".concat(state.mode, "_pdfID");
19
- var svgID = "".concat(state.mode, "_svgID");
20
- useEffect(function () {
21
- if (!window.__elevationImg) {
22
- window.__elevationImg = {};
23
- }
24
- return function () {
25
- return window.__elevationImg[state.mode] = '';
26
- };
27
- }, []);
28
- var saveSVGScreenshotToFile = /*#__PURE__*/function () {
29
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
30
- var maxWidthSVGElement, images, readBlob, _iterator, _step, image, url, response, blob, content, serializer, img, img2, canvas2D3DPlain1, canvas2D3DPlain, canvas42DPlain, ctx, heightAtt, widthAtt, _t, _t2;
31
- return _regenerator().w(function (_context) {
32
- while (1) switch (_context.p = _context.n) {
33
- case 0:
34
- maxWidthSVGElement = document.getElementById("".concat(svgID));
35
- if (!(maxWidthSVGElement !== null)) {
36
- _context.n = 13;
37
- break;
38
- }
39
- images = maxWidthSVGElement.getElementsByTagName('image');
40
- readBlob = function readBlob(b) {
41
- return new Promise(function (res) {
42
- var reader = new FileReader();
43
- reader.onloadend = function () {
44
- res(reader.result);
45
- };
46
- reader.onerror = function () {
47
- res(b);
48
- };
49
- reader.readAsDataURL(b);
50
- });
51
- };
52
- _context.p = 1;
53
- _iterator = _createForOfIteratorHelper(images);
54
- _context.p = 2;
55
- _iterator.s();
56
- case 3:
57
- if ((_step = _iterator.n()).done) {
58
- _context.n = 8;
59
- break;
60
- }
61
- image = _step.value;
62
- url = getSignedUrl(image.getAttribute('href'));
63
- _context.n = 4;
64
- return fetch(url, {
65
- cache: 'no-store'
66
- });
67
- case 4:
68
- response = _context.v;
69
- _context.n = 5;
70
- return response.blob();
71
- case 5:
72
- blob = _context.v;
73
- _context.n = 6;
74
- return readBlob(blob);
75
- case 6:
76
- content = _context.v;
77
- image.setAttribute('href', content);
78
- case 7:
79
- _context.n = 3;
80
- break;
81
- case 8:
82
- _context.n = 10;
83
- break;
84
- case 9:
85
- _context.p = 9;
86
- _t = _context.v;
87
- _iterator.e(_t);
88
- case 10:
89
- _context.p = 10;
90
- _iterator.f();
91
- return _context.f(10);
92
- case 11:
93
- _context.n = 13;
94
- break;
95
- case 12:
96
- _context.p = 12;
97
- _t2 = _context.v;
98
- case 13:
99
- serializer = new XMLSerializer();
100
- img = new Image();
101
- img2 = new Image(); // I create the new canvas to draw
102
- canvas2D3DPlain1 = document.getElementById("".concat(pdfID));
103
- if (canvas2D3DPlain1 !== null) {
104
- canvas2D3DPlain = canvas2D3DPlain1.getElementsByTagName('canvas')[0];
105
- canvas42DPlain = document.createElement('canvas');
106
- ctx = canvas42DPlain.getContext('2d'); // Set width and height for the new canvas
107
- heightAtt = document.createAttribute('height');
108
- heightAtt.value = maxWidthSVGElement.height.baseVal.value;
109
- canvas42DPlain.setAttributeNode(heightAtt);
110
- widthAtt = document.createAttribute('width');
111
- widthAtt.value = maxWidthSVGElement.width.baseVal.value;
112
- canvas42DPlain.setAttributeNode(widthAtt);
113
- ctx.fillStyle = 'white';
114
- ctx.fillRect(0, 0, canvas42DPlain.width, canvas42DPlain.height);
115
- img.crossOrigin = 'anonymous';
116
- img.src = "data:image/svg+xml;base64,".concat(window.btoa(serializer.serializeToString(maxWidthSVGElement)));
117
- img2.crossOrigin = 'anonymous';
118
- img2.src = canvas2D3DPlain.toDataURL();
119
- img2.onload = function () {
120
- ctx.globalAlpha = 1;
121
- ctx.drawImage(img2, 0, 0, maxWidthSVGElement.width.baseVal.value, maxWidthSVGElement.height.baseVal.value);
122
- ctx.drawImage(img, 0, 0, maxWidthSVGElement.width.baseVal.value, maxWidthSVGElement.height.baseVal.value);
123
- window.__elevationImg[state.mode] = canvas42DPlain.toDataURL();
124
- };
125
- } else {
126
- window.__elevationImg[state.mode] = '';
127
- }
128
- case 14:
129
- return _context.a(2);
130
- }
131
- }, _callee, null, [[2, 9, 10, 11], [1, 12]]);
132
- }));
133
- return function saveSVGScreenshotToFile() {
134
- return _ref2.apply(this, arguments);
135
- };
136
- }();
137
- var _setIsLoadingElevation = function _setIsLoadingElevation(key, value) {
138
- if (!value) {
139
- saveSVGScreenshotToFile();
140
- }
141
- setIsLoadingElevation(key, value);
142
- };
143
- return /*#__PURE__*/React.createElement("div", {
144
- id: pdfID,
145
- style: {
146
- position: 'relative',
147
- transform: "scale(0.5,0.5)",
148
- width: 6,
149
- height: 0
150
- }
151
- }, /*#__PURE__*/React.createElement("svg", {
152
- id: svgID,
153
- width: width,
154
- height: height,
155
- style: {
156
- position: 'absolute'
157
- }
158
- }, /*#__PURE__*/React.createElement("g", {
159
- transform: "translate(".concat(width / 2, ", ").concat(height / 2, ")")
160
- }, /*#__PURE__*/React.createElement(State3D, {
161
- state: state,
162
- catalog: catalog,
163
- width: width,
164
- height: height,
165
- downloadFlag: true
166
- }))), /*#__PURE__*/React.createElement(Viewer3D, {
167
- state: state,
168
- setIsLoadingElevation: _setIsLoadingElevation,
169
- width: width,
170
- height: height,
171
- downloadFlag: true
172
- }));
173
- };
174
- export default ViewerElevationDownLoad;
175
- //# sourceMappingURL=viewerElevationDownload.js.map