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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/package.json +1 -2
  2. package/src/@history.js +0 -3
  3. package/src/AppContext.js +0 -5
  4. package/src/KitchenConfigurator.jsx +0 -1517
  5. package/src/KitchenConfiguratorApp.jsx +0 -443
  6. package/src/actions/area-actions.js +0 -15
  7. package/src/actions/export.js +0 -38
  8. package/src/actions/groups-actions.js +0 -102
  9. package/src/actions/holes-actions.js +0 -152
  10. package/src/actions/items-actions.js +0 -393
  11. package/src/actions/lines-actions.js +0 -103
  12. package/src/actions/project-actions.js +0 -391
  13. package/src/actions/scene-actions.js +0 -44
  14. package/src/actions/user-actions.js +0 -75
  15. package/src/actions/vertices-actions.js +0 -34
  16. package/src/actions/viewer2d-actions.js +0 -79
  17. package/src/actions/viewer3d-actions.js +0 -32
  18. package/src/catalog/areas/area/planner-element.jsx +0 -43
  19. package/src/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  20. package/src/catalog/areas/area/textures/grass.jpg +0 -0
  21. package/src/catalog/areas/area/textures/parquet.jpg +0 -0
  22. package/src/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  23. package/src/catalog/areas/area/textures/tile1.jpg +0 -0
  24. package/src/catalog/back.png +0 -0
  25. package/src/catalog/catalog.js +0 -258
  26. package/src/catalog/doors.png +0 -0
  27. package/src/catalog/doorways.png +0 -0
  28. package/src/catalog/envMap/nx.hdr +0 -0
  29. package/src/catalog/envMap/ny.hdr +0 -0
  30. package/src/catalog/envMap/nz.hdr +0 -0
  31. package/src/catalog/envMap/px.hdr +0 -0
  32. package/src/catalog/envMap/py.hdr +0 -0
  33. package/src/catalog/envMap/pz.hdr +0 -0
  34. package/src/catalog/factories/area-factory-3d.js +0 -252
  35. package/src/catalog/factories/area-factory.jsx +0 -102
  36. package/src/catalog/factories/export.js +0 -9
  37. package/src/catalog/factories/wall-factory-3d.js +0 -296
  38. package/src/catalog/factories/wall-factory.jsx +0 -321
  39. package/src/catalog/holes/door-closet/planner-element.jsx +0 -251
  40. package/src/catalog/holes/door-double/door_double.png +0 -0
  41. package/src/catalog/holes/door-double/planner-element.jsx +0 -391
  42. package/src/catalog/holes/door-exterior/planner-element.jsx +0 -245
  43. package/src/catalog/holes/door-interior/planner-element.jsx +0 -256
  44. package/src/catalog/holes/door-panic/panicDoor.png +0 -0
  45. package/src/catalog/holes/door-panic/planner-element.jsx +0 -594
  46. package/src/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  47. package/src/catalog/holes/door-panic-double/planner-element.jsx +0 -574
  48. package/src/catalog/holes/door-sliding/planner-element.jsx +0 -256
  49. package/src/catalog/holes/doorway-framed/planner-element.jsx +0 -169
  50. package/src/catalog/holes/doorway-frameless/planner-element.jsx +0 -116
  51. package/src/catalog/holes/gate/gate.jpg +0 -0
  52. package/src/catalog/holes/window-clear/planner-element.jsx +0 -181
  53. package/src/catalog/holes/window-clear/texture.png +0 -0
  54. package/src/catalog/holes/window-cross/planner-element.jsx +0 -180
  55. package/src/catalog/holes/window-cross/texture.png +0 -0
  56. package/src/catalog/holes/window-double-hung/planner-element.jsx +0 -366
  57. package/src/catalog/holes/window-double-hung/texture.png +0 -0
  58. package/src/catalog/holes/window-vertical/planner-element.jsx +0 -290
  59. package/src/catalog/holes/window-vertical/texture.png +0 -0
  60. package/src/catalog/lines/wall/planner-element.jsx +0 -73
  61. package/src/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  62. package/src/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  63. package/src/catalog/lines/wall/textures/bricks.jpg +0 -0
  64. package/src/catalog/lines/wall/textures/bricks2.jpg +0 -0
  65. package/src/catalog/lines/wall/textures/bricks3.jpg +0 -0
  66. package/src/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  67. package/src/catalog/lines/wall/textures/morden.jpg +0 -0
  68. package/src/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  69. package/src/catalog/lines/wall/textures/painted.jpg +0 -0
  70. package/src/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  71. package/src/catalog/lines/wall/textures/plaster.jpg +0 -0
  72. package/src/catalog/lines/wall/wall.png +0 -0
  73. package/src/catalog/molding/molding-dcm/planner-element.jsx +0 -35
  74. package/src/catalog/molding/molding-dcm/texture.png +0 -0
  75. package/src/catalog/molding/molding-fbm/planner-element.jsx +0 -35
  76. package/src/catalog/molding/molding-fbm/texture.png +0 -0
  77. package/src/catalog/molding/molding-lrm/planner-element.jsx +0 -35
  78. package/src/catalog/molding/molding-lrm/texture.png +0 -0
  79. package/src/catalog/properties/export.js +0 -33
  80. package/src/catalog/properties/property-checkbox.jsx +0 -123
  81. package/src/catalog/properties/property-color.jsx +0 -52
  82. package/src/catalog/properties/property-enum.jsx +0 -87
  83. package/src/catalog/properties/property-hidden.jsx +0 -22
  84. package/src/catalog/properties/property-lenght-measure.jsx +0 -113
  85. package/src/catalog/properties/property-length-measure.jsx +0 -129
  86. package/src/catalog/properties/property-length-measure_hole.jsx +0 -110
  87. package/src/catalog/properties/property-number.jsx +0 -63
  88. package/src/catalog/properties/property-read-only.jsx +0 -37
  89. package/src/catalog/properties/property-string.jsx +0 -59
  90. package/src/catalog/properties/property-toggle.jsx +0 -51
  91. package/src/catalog/properties/shared-property-style.js +0 -13
  92. package/src/catalog/utils/FuseUtils.js +0 -61
  93. package/src/catalog/utils/exporter.js +0 -173
  94. package/src/catalog/utils/geom-utils.js +0 -301
  95. package/src/catalog/utils/item-loader.jsx +0 -2122
  96. package/src/catalog/utils/load-obj.js +0 -113
  97. package/src/catalog/utils/mtl-loader.js +0 -462
  98. package/src/catalog/utils/obj-loader.js +0 -544
  99. package/src/catalog/windows.png +0 -0
  100. package/src/class/FuseUtils.js +0 -61
  101. package/src/class/area.js +0 -159
  102. package/src/class/export.js +0 -37
  103. package/src/class/group.js +0 -565
  104. package/src/class/guide.js +0 -44
  105. package/src/class/hole.js +0 -1359
  106. package/src/class/item.js +0 -2050
  107. package/src/class/layer.js +0 -926
  108. package/src/class/line.js +0 -1780
  109. package/src/class/project.js +0 -875
  110. package/src/class/vertex.js +0 -409
  111. package/src/components/atoms/Snackbar/index.jsx +0 -43
  112. package/src/components/atoms/radio-button/index.jsx +0 -20
  113. package/src/components/atoms/radio-button/styles.js +0 -56
  114. package/src/components/button/MainButton.jsx +0 -157
  115. package/src/components/button/ToggleMeasureButton.jsx +0 -65
  116. package/src/components/catalog-view/catalog-breadcrumb.jsx +0 -53
  117. package/src/components/catalog-view/catalog-item.jsx +0 -229
  118. package/src/components/catalog-view/catalog-list.jsx +0 -173
  119. package/src/components/catalog-view/catalog-page-item.jsx +0 -110
  120. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +0 -80
  121. package/src/components/configurator/custom-configurator.jsx +0 -77
  122. package/src/components/configurator/project-configurator.jsx +0 -120
  123. package/src/components/content.jsx +0 -136
  124. package/src/components/export.js +0 -36
  125. package/src/components/firstsetting/button/styles.js +0 -223
  126. package/src/components/firstsetting/export.js +0 -9
  127. package/src/components/firstsetting/firstsetting-content-button.jsx +0 -198
  128. package/src/components/firstsetting/firstsetting-toggle-button.jsx +0 -101
  129. package/src/components/firstsetting/firstsetting.jsx +0 -814
  130. package/src/components/footerbar/button/ControlButton.jsx +0 -43
  131. package/src/components/footerbar/button/DirectionButton.jsx +0 -54
  132. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +0 -36
  133. package/src/components/footerbar/button/ToggleButton.jsx +0 -58
  134. package/src/components/footerbar/button/ToggleConvertButton.jsx +0 -48
  135. package/src/components/footerbar/button/ToggleMeasureButton.jsx +0 -33
  136. package/src/components/footerbar/button/styles.js +0 -217
  137. package/src/components/footerbar/export.js +0 -9
  138. package/src/components/footerbar/footer-content-button.jsx +0 -198
  139. package/src/components/footerbar/footer-toggle-button.jsx +0 -101
  140. package/src/components/footerbar/footerbar.jsx +0 -1103
  141. package/src/components/footerbar/styles.js +0 -263
  142. package/src/components/header/button/MenuButton.jsx +0 -46
  143. package/src/components/header/button/SaveButton.jsx +0 -54
  144. package/src/components/header/button/styles.js +0 -181
  145. package/src/components/header/export.js +0 -5
  146. package/src/components/header/header.jsx +0 -631
  147. package/src/components/header/header.style.css +0 -47
  148. package/src/components/header/styles.js +0 -320
  149. package/src/components/login/Login.js +0 -77
  150. package/src/components/login/LoginForm/index.js +0 -108
  151. package/src/components/login/Register.js +0 -83
  152. package/src/components/login/RegisterForm/index.js +0 -171
  153. package/src/components/login/jwtService.js +0 -201
  154. package/src/components/login/style.css +0 -158
  155. package/src/components/login/style.scss +0 -260
  156. package/src/components/molecules/slider/index.jsx +0 -15
  157. package/src/components/molecules/slider/styles.js +0 -0
  158. package/src/components/molecules/slider/styles.scss +0 -3
  159. package/src/components/myprojects/export.js +0 -5
  160. package/src/components/myprojects/index.jsx +0 -445
  161. package/src/components/myprojects/styles.js +0 -241
  162. package/src/components/sidebar/custom-accordion.jsx +0 -48
  163. package/src/components/sidebar/export.js +0 -15
  164. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +0 -73
  165. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +0 -101
  166. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +0 -149
  167. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +0 -316
  168. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +0 -108
  169. package/src/components/sidebar/panel-element-editor/element-editor.jsx +0 -1070
  170. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  171. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +0 -104
  172. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +0 -155
  173. package/src/components/sidebar/panel-group-editor.jsx +0 -272
  174. package/src/components/sidebar/panel-groups.jsx +0 -310
  175. package/src/components/sidebar/panel-guides.jsx +0 -192
  176. package/src/components/sidebar/panel-layer-elements.jsx +0 -298
  177. package/src/components/sidebar/panel-layers.jsx +0 -381
  178. package/src/components/sidebar/panel.jsx +0 -71
  179. package/src/components/sidebar/sidebar.jsx +0 -106
  180. package/src/components/sidebar/toolbar-panel.jsx +0 -139
  181. package/src/components/sign/export.js +0 -7
  182. package/src/components/sign/main/index.jsx +0 -523
  183. package/src/components/sign/main/styles.js +0 -163
  184. package/src/components/style/button.jsx +0 -95
  185. package/src/components/style/cancel-button.jsx +0 -20
  186. package/src/components/style/content-container.jsx +0 -29
  187. package/src/components/style/content-title.jsx +0 -20
  188. package/src/components/style/delete-button.jsx +0 -23
  189. package/src/components/style/export.jsx +0 -48
  190. package/src/components/style/form-block.jsx +0 -13
  191. package/src/components/style/form-color-input.jsx +0 -27
  192. package/src/components/style/form-label.jsx +0 -15
  193. package/src/components/style/form-number-input.jsx +0 -196
  194. package/src/components/style/form-number-input_2.jsx +0 -191
  195. package/src/components/style/form-select.jsx +0 -38
  196. package/src/components/style/form-slider.jsx +0 -36
  197. package/src/components/style/form-submit-button.jsx +0 -23
  198. package/src/components/style/form-text-input.jsx +0 -65
  199. package/src/components/toolbar/button/ControlButton.jsx +0 -41
  200. package/src/components/toolbar/button/DirectionButton.jsx +0 -34
  201. package/src/components/toolbar/button/RightButton.jsx +0 -103
  202. package/src/components/toolbar/button/ToggleButton.jsx +0 -41
  203. package/src/components/toolbar/button/index.jsx +0 -55
  204. package/src/components/toolbar/button/styles.js +0 -127
  205. package/src/components/toolbar/components/DoorStyleMenu.jsx +0 -103
  206. package/src/components/toolbar/components/Pricing.jsx +0 -126
  207. package/src/components/toolbar/components/ReviewForQuote.jsx +0 -635
  208. package/src/components/toolbar/export.js +0 -21
  209. package/src/components/toolbar/main/Alert.js +0 -122
  210. package/src/components/toolbar/main/TakePictureModal.jsx +0 -104
  211. package/src/components/toolbar/main/confirm-popup.jsx +0 -99
  212. package/src/components/toolbar/main/index.jsx +0 -5687
  213. package/src/components/toolbar/main/lShaped.json +0 -311
  214. package/src/components/toolbar/main/longNarrow.json +0 -238
  215. package/src/components/toolbar/main/myComponents.js +0 -123
  216. package/src/components/toolbar/main/oRectangle.json +0 -220
  217. package/src/components/toolbar/main/rectangle.json +0 -238
  218. package/src/components/toolbar/main/style.css +0 -107
  219. package/src/components/toolbar/main/styles.js +0 -696
  220. package/src/components/toolbar/plugin-item.jsx +0 -123
  221. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +0 -73
  222. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +0 -102
  223. package/src/components/toolbar/popup/appliance/index.jsx +0 -83
  224. package/src/components/toolbar/popup/autosaveprompt/index.jsx +0 -150
  225. package/src/components/toolbar/popup/autosaveprompt/styles.css +0 -64
  226. package/src/components/toolbar/popup/autosaveprompt/styles.js +0 -40
  227. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +0 -73
  228. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +0 -119
  229. package/src/components/toolbar/popup/cabinet/index.jsx +0 -85
  230. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +0 -63
  231. package/src/components/toolbar/popup/doorStyle/index.jsx +0 -71
  232. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +0 -139
  233. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -2
  234. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +0 -157
  235. package/src/components/toolbar/popup/downloadsummary/index.jsx +0 -643
  236. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +0 -51
  237. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +0 -175
  238. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +0 -283
  239. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +0 -2257
  240. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -93
  241. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +0 -132
  242. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +0 -2198
  243. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +0 -152
  244. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +0 -149
  245. package/src/components/toolbar/popup/downloadsummary/styles.css +0 -177
  246. package/src/components/toolbar/popup/downloadsummary/styles.js +0 -453
  247. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +0 -34
  248. package/src/components/toolbar/popup/finishingtouch/index.jsx +0 -58
  249. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +0 -112
  250. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +0 -116
  251. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +0 -101
  252. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +0 -254
  253. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
  254. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
  255. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
  256. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
  257. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -86
  258. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +0 -109
  259. package/src/components/toolbar/popup/floorplan/index.jsx +0 -60
  260. package/src/components/toolbar/popup/index.jsx +0 -241
  261. package/src/components/toolbar/popup/newproject/index.jsx +0 -59
  262. package/src/components/toolbar/popup/newproject/styles.css +0 -64
  263. package/src/components/toolbar/popup/newproject/styles.js +0 -41
  264. package/src/components/toolbar/popup/product/appliance.jsx +0 -54
  265. package/src/components/toolbar/popup/product/cabinetproduct.jsx +0 -15
  266. package/src/components/toolbar/popup/product/doorstyle.jsx +0 -58
  267. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +0 -47
  268. package/src/components/toolbar/popup/product/floor.jsx +0 -36
  269. package/src/components/toolbar/popup/product/floorproduct.jsx +0 -42
  270. package/src/components/toolbar/popup/product/index.jsx +0 -36
  271. package/src/components/toolbar/popup/product/primary.jsx +0 -77
  272. package/src/components/toolbar/popup/product/productline.jsx +0 -93
  273. package/src/components/toolbar/popup/product/reviewItem.jsx +0 -427
  274. package/src/components/toolbar/popup/product/reviewMolding.jsx +0 -310
  275. package/src/components/toolbar/popup/product/style.css +0 -54
  276. package/src/components/toolbar/popup/product/styles.js +0 -260
  277. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +0 -146
  278. package/src/components/toolbar/popup/savedesign/index.jsx +0 -495
  279. package/src/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
  280. package/src/components/toolbar/popup/savedesign/styles.js +0 -151
  281. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +0 -87
  282. package/src/components/toolbar/popup/styles.js +0 -909
  283. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +0 -192
  284. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +0 -96
  285. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +0 -54
  286. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +0 -25
  287. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +0 -116
  288. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -38
  289. package/src/components/toolbar/popup/submitforquote/index.jsx +0 -698
  290. package/src/components/toolbar/popup/submitforquote/styles.css +0 -105
  291. package/src/components/toolbar/popup/submitforquote/styles.js +0 -294
  292. package/src/components/toolbar/popup/submitprompt/index.jsx +0 -89
  293. package/src/components/toolbar/popup/submitprompt/styles.css +0 -64
  294. package/src/components/toolbar/popup/submitprompt/styles.js +0 -42
  295. package/src/components/toolbar/toolbar-button.jsx +0 -90
  296. package/src/components/toolbar/toolbar-load-button.jsx +0 -36
  297. package/src/components/toolbar/toolbar-save-button.jsx +0 -32
  298. package/src/components/tutorial-view/Modal.jsx +0 -584
  299. package/src/components/tutorial-view/style.css +0 -111
  300. package/src/components/tutorial-view/styles.js +0 -65
  301. package/src/components/viewer2d/area.jsx +0 -98
  302. package/src/components/viewer2d/export.js +0 -48
  303. package/src/components/viewer2d/grids/grid-horizontal-streak.jsx +0 -40
  304. package/src/components/viewer2d/grids/grid-streak.jsx +0 -32
  305. package/src/components/viewer2d/grids/grid-vertical-streak.jsx +0 -41
  306. package/src/components/viewer2d/grids/grids.jsx +0 -30
  307. package/src/components/viewer2d/group.jsx +0 -57
  308. package/src/components/viewer2d/item.jsx +0 -618
  309. package/src/components/viewer2d/layer.jsx +0 -214
  310. package/src/components/viewer2d/line.jsx +0 -1358
  311. package/src/components/viewer2d/ruler.jsx +0 -136
  312. package/src/components/viewer2d/rulerDist.jsx +0 -192
  313. package/src/components/viewer2d/rulerX.jsx +0 -141
  314. package/src/components/viewer2d/rulerY.jsx +0 -138
  315. package/src/components/viewer2d/scene.jsx +0 -94
  316. package/src/components/viewer2d/snap.jsx +0 -118
  317. package/src/components/viewer2d/state.jsx +0 -77
  318. package/src/components/viewer2d/utils.js +0 -195
  319. package/src/components/viewer2d/vertex.jsx +0 -76
  320. package/src/components/viewer2d/viewer2d.jsx +0 -1830
  321. package/src/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -3078
  322. package/src/components/viewer3d/dcm.js +0 -226
  323. package/src/components/viewer3d/fbm.js +0 -383
  324. package/src/components/viewer3d/front3D.jsx +0 -63
  325. package/src/components/viewer3d/grid-creator.js +0 -25
  326. package/src/components/viewer3d/grids/grid-horizontal-streak.js +0 -41
  327. package/src/components/viewer3d/grids/grid-streak.js +0 -34
  328. package/src/components/viewer3d/grids/grid-vertical-streak.js +0 -42
  329. package/src/components/viewer3d/libs/first-person-controls.js +0 -70
  330. package/src/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1265
  331. package/src/components/viewer3d/libs/mtl-loader.js +0 -462
  332. package/src/components/viewer3d/libs/obj-loader.js +0 -653
  333. package/src/components/viewer3d/libs/orbit-controls.js +0 -945
  334. package/src/components/viewer3d/libs/pointer-lock-controls.js +0 -67
  335. package/src/components/viewer3d/lrm.js +0 -358
  336. package/src/components/viewer3d/model.js +0 -830
  337. package/src/components/viewer3d/pointer-lock-navigation.js +0 -140
  338. package/src/components/viewer3d/ruler-utils/itemRect.jsx +0 -91
  339. package/src/components/viewer3d/ruler-utils/layer3D.jsx +0 -528
  340. package/src/components/viewer3d/ruler-utils/ruler3D.jsx +0 -218
  341. package/src/components/viewer3d/ruler-utils/scene3D.jsx +0 -87
  342. package/src/components/viewer3d/ruler-utils/state3D.jsx +0 -25
  343. package/src/components/viewer3d/scene-creator.js +0 -5172
  344. package/src/components/viewer3d/three-memory-cleaner.js +0 -65
  345. package/src/components/viewer3d/viewer3d-first-person.js +0 -395
  346. package/src/components/viewer3d/viewer3d.js +0 -3376
  347. package/src/components/wizardstep/button/styles.js +0 -677
  348. package/src/components/wizardstep/export.js +0 -5
  349. package/src/components/wizardstep/index.jsx +0 -1372
  350. package/src/components/wizardstep/styles.js +0 -688
  351. package/src/components/wizardstep/wizardstep-content-button.jsx +0 -198
  352. package/src/components/wizardstep/wizardstep-toggle-button.jsx +0 -101
  353. package/src/constants.js +0 -731
  354. package/src/hooks/useCheckCart.js +0 -38
  355. package/src/hooks/useGetPricesBySku.js +0 -59
  356. package/src/hooks/useValidateToken.js +0 -181
  357. package/src/index.js +0 -32
  358. package/src/models.js +0 -541
  359. package/src/plugins/SVGLoader.js +0 -1991
  360. package/src/plugins/autosave.js +0 -39
  361. package/src/plugins/console-debugger.js +0 -36
  362. package/src/plugins/export.js +0 -11
  363. package/src/plugins/keyboard.js +0 -194
  364. package/src/reducers/areas-reducer.js +0 -13
  365. package/src/reducers/export.js +0 -39
  366. package/src/reducers/groups-reducer.js +0 -73
  367. package/src/reducers/holes-reducer.js +0 -125
  368. package/src/reducers/items-reducer.js +0 -286
  369. package/src/reducers/lines-reducer.js +0 -96
  370. package/src/reducers/project-reducer.js +0 -239
  371. package/src/reducers/reducer.js +0 -59
  372. package/src/reducers/scene-reducer.js +0 -41
  373. package/src/reducers/user-reducer.js +0 -30
  374. package/src/reducers/vertices-reducer.js +0 -34
  375. package/src/reducers/viewer2d-reducer.js +0 -81
  376. package/src/reducers/viewer3d-reducer.js +0 -65
  377. package/src/shared-style.js +0 -72
  378. package/src/styles/export.js +0 -7
  379. package/src/styles/tabs.css +0 -40
  380. package/src/translator/en.js +0 -106
  381. package/src/translator/it.js +0 -80
  382. package/src/translator/ru.js +0 -80
  383. package/src/translator/translator.js +0 -81
  384. package/src/utils/browser.js +0 -36
  385. package/src/utils/email-validator.js +0 -5
  386. package/src/utils/export.js +0 -39
  387. package/src/utils/geometry.js +0 -2572
  388. package/src/utils/get-edges-of-subgraphs.js +0 -29
  389. package/src/utils/graph-cycles.js +0 -259
  390. package/src/utils/graph-inner-cycles.js +0 -49
  391. package/src/utils/graph.js +0 -147
  392. package/src/utils/helper.js +0 -431
  393. package/src/utils/history.js +0 -37
  394. package/src/utils/id-broker.js +0 -9
  395. package/src/utils/logger.js +0 -8
  396. package/src/utils/math.js +0 -51
  397. package/src/utils/molding.js +0 -973
  398. package/src/utils/name-generator.js +0 -5
  399. package/src/utils/objects-utils.js +0 -56
  400. package/src/utils/phone-validator.js +0 -4
  401. package/src/utils/process-black-list.js +0 -10
  402. package/src/utils/react-if.jsx +0 -20
  403. package/src/utils/snap-scene.js +0 -102
  404. package/src/utils/snap.js +0 -184
  405. package/src/utils/threeCSG.es6.js +0 -578
  406. package/src/version.js +0 -1
package/src/class/item.js DELETED
@@ -1,2050 +0,0 @@
1
- import convert from 'convert-units';
2
- import { Layer, Group, Hole } from './export';
3
- import {
4
- IDBroker,
5
- NameGenerator,
6
- GeometryUtils,
7
- MoldingUtils
8
- } from '../utils/export';
9
- import { Map, fromJS } from 'immutable';
10
- import path from 'path';
11
- import {
12
- MODE_IDLE,
13
- MODE_IDLE_3D,
14
- MODE_DRAWING_ITEM,
15
- MODE_DRAWING_ITEM_3D,
16
- MODE_DRAGGING_ITEM,
17
- MODE_DRAGGING_ITEM_3D,
18
- MODE_ROTATING_ITEM,
19
- MODE_ROTATING_ITEM_3D,
20
- MOLDING_LOCATIONS,
21
- INSTALLATION_SUFFIX_TYPE
22
- } from '../constants';
23
- import { debugUtil } from '../utils/helper';
24
- import { isUndefined } from 'util';
25
- import { hasMoldingLayout } from '../utils/molding';
26
- import { getInstallationSuffix } from '../components/viewer2d/utils';
27
- let allItemRect;
28
- let allItemSnap;
29
- let allLines;
30
- let allLineRects;
31
- let allLineSnap;
32
- let allRect;
33
- let time1;
34
- let time2;
35
-
36
- class Item {
37
- static create(
38
- state,
39
- layerID,
40
- type,
41
- x,
42
- y,
43
- width,
44
- height,
45
- rotation,
46
- isDuplication,
47
- molding = []
48
- ) {
49
- let itemID = IDBroker.acquireID();
50
-
51
- let item = state.catalog.factoryElement(
52
- type,
53
- {
54
- id: itemID,
55
- itemID: state.catalog.getIn(['elements', type, 'itemID']),
56
- name: NameGenerator.generateName(
57
- 'items',
58
- state.catalog.getIn(['elements', type, 'info', 'title'])
59
- ),
60
- sku_number: state.catalog.getIn(['elements', type, 'obj']).toJS()
61
- .sku_number,
62
- //style: state.catalog.getIn(['elements', type, 'info', 'door']),
63
- category: state.catalog.getIn(['elements', type, 'type']),
64
- layoutpos: state.catalog.getIn(['elements', type, 'info', 'layoutpos']),
65
- cabinet_category: state.catalog.getIn(['elements', type, 'obj']).toJS()
66
- .cabinet_category,
67
- type,
68
- height,
69
- width,
70
- x,
71
- y,
72
- rotation,
73
- isDuplication
74
- },
75
- null,
76
- state
77
- );
78
-
79
- if (item.category === 'cabinet') {
80
- const layer = state.getIn(['scene', 'layers', layerID]);
81
- if (state.doorStyle !== null && state.doorStyle !== undefined) {
82
- const temp = layer.doorStyle ? layer.doorStyle : state.doorStyle.toJS();
83
- let cds = temp?.doorStyles?.cds.find(
84
- elem =>
85
- elem.itemID === state.catalog.getIn(['elements', type, 'itemID'])
86
- );
87
- let tmpDS = temp;
88
- if (cds !== undefined && cds !== null) {
89
- tmpDS.doorStyles = {
90
- ...temp.doorStyles,
91
- ...cds.data[0],
92
- cabinet_door_style_id: cds.cabinet_door_style_id
93
- };
94
- item = item.merge({
95
- doorStyle: fromJS(tmpDS)
96
- });
97
- } else {
98
- let styleObj = state.oStyle?.toJS()?.oStyle;
99
- if (styleObj) {
100
- for (let x in styleObj) {
101
- cds = styleObj[x].data.doorStyles.cds.find(
102
- elem =>
103
- elem.itemID ===
104
- state.catalog.getIn(['elements', type, 'itemID'])
105
- );
106
- if (cds !== null && cds !== undefined && cds) {
107
- tmpDS = styleObj[x].data;
108
- tmpDS.doorStyles = {
109
- ...tmpDS.doorStyles,
110
- ...cds.data[0],
111
- cabinet_door_style_id: cds.cabinet_door_style_id
112
- };
113
- item = item.merge({
114
- doorStyle: fromJS(tmpDS)
115
- });
116
- break;
117
- }
118
- }
119
- }
120
- }
121
- } else {
122
- let styleObj = state.oStyle?.toJS()?.oStyle;
123
- if (styleObj) {
124
- for (let x in styleObj) {
125
- cds = styleObj[x].data.doorStyles.cds.find(
126
- elem =>
127
- elem.itemID ===
128
- state.catalog.getIn(['elements', type, 'itemID'])
129
- );
130
- if (cds !== null && cds !== undefined && cds) {
131
- let tmpDS = styleObj[x].data;
132
- tmpDS.doorStyles = {
133
- ...tmpDS.doorStyles,
134
- ...cds.data[0],
135
- cabinet_door_style_id: cds.cabinet_door_style_id
136
- };
137
- item = item.merge({
138
- doorStyle: fromJS(tmpDS)
139
- });
140
- break;
141
- }
142
- }
143
- }
144
- }
145
- }
146
-
147
- if (item.get('type') === 'cabinet' && item.get('doorStyle').size === 0) {
148
- return { updatedState: state, item: null };
149
- }
150
-
151
- let setSizeOfItemByDoorStyle = () => {
152
- let doorStyle = item.get('doorStyle').toJS();
153
- var cds = doorStyle?.doorStyles?.cds?.find(
154
- elem => elem.itemID === item.itemID
155
- );
156
- let euro_cds = [];
157
- if (cds !== undefined) {
158
- euro_cds = cds && cds.data.filter(element => element.is_euro_cds);
159
- }
160
- if (
161
- doorStyle.door_style_name === 'Euro & Frameless' &&
162
- euro_cds.length > 0
163
- ) {
164
- let newProperties = item.get('properties').toJS();
165
- if (newProperties.hasOwnProperty('depth')) {
166
- if (!newProperties.hasOwnProperty('oldDepth')) {
167
- newProperties['oldDepth'] = new Map({
168
- length: newProperties.depth.length,
169
- _length: newProperties.depth._length,
170
- _unit: newProperties.depth._unit
171
- });
172
- }
173
- newProperties['depth'] = new Map({
174
- length: convert(euro_cds[0].euro_length).from('in').to('cm'),
175
- _length: euro_cds[0].euro_length,
176
- _unit: 'in'
177
- });
178
- }
179
- if (newProperties.hasOwnProperty('height')) {
180
- if (!newProperties.hasOwnProperty('oldHeight')) {
181
- newProperties['oldHeight'] = new Map({
182
- length: newProperties.height.length,
183
- _length: newProperties.height._length,
184
- _unit: newProperties.height._unit
185
- });
186
- }
187
- newProperties['height'] = new Map({
188
- length: convert(euro_cds[0].euro_height).from('in').to('cm'),
189
- _length: euro_cds[0].euro_height,
190
- _unit: 'in'
191
- });
192
- }
193
- if (newProperties.hasOwnProperty('width')) {
194
- if (!newProperties.hasOwnProperty('oldWidth')) {
195
- newProperties['oldWidth'] = new Map({
196
- length: newProperties.width.length,
197
- _length: newProperties.width._length,
198
- _unit: newProperties.width._unit
199
- });
200
- }
201
- newProperties['width'] = new Map({
202
- length: convert(euro_cds[0].euro_width).from('in').to('cm') - 10,
203
- _length: euro_cds[0].euro_width,
204
- _unit: 'in'
205
- });
206
- }
207
- item = item.merge({ properties: fromJS(newProperties) });
208
- } else {
209
- let properties = item.get('properties').toJS();
210
- if (properties.hasOwnProperty('oldDepth')) {
211
- properties['depth'] = new Map({
212
- length: properties.oldDepth.length,
213
- _length: properties.oldDepth._length,
214
- _unit: properties.oldDepth._unit
215
- });
216
- }
217
- if (properties.hasOwnProperty('oldHeight')) {
218
- properties['height'] = new Map({
219
- length: properties.oldHeight.length,
220
- _length: properties.oldHeight._length,
221
- _unit: properties.oldHeight._unit
222
- });
223
- }
224
- if (properties.hasOwnProperty('oldWidth')) {
225
- properties['width'] = new Map({
226
- length: properties.oldWidth.length,
227
- _length: properties.oldWidth._length,
228
- _unit: properties.oldWidth._unit
229
- });
230
- }
231
- item = item.merge({ properties: fromJS(properties) });
232
- }
233
- };
234
- item.category === 'cabinet' && setSizeOfItemByDoorStyle();
235
-
236
- item = this.updateDoorHandle(
237
- item,
238
- state.getIn(['scene', 'layers', layerID])
239
- );
240
-
241
- state = state.setIn(['scene', 'layers', layerID, 'items', itemID], item);
242
-
243
- if (item.type.includes('Light')) {
244
- let ceilHeight = state.getIn(['scene', 'layers', layerID, 'ceilHeight']);
245
- let ceilUnit = state.getIn(['scene', 'layers', layerID, 'unit']);
246
- ceilHeight = convert(ceilHeight).from(ceilUnit).to('cm');
247
- let newAltitude =
248
- ceilHeight - item.properties.getIn(['height', 'length']);
249
- newAltitude = convert(newAltitude).from('cm').to(ceilUnit);
250
- item = item.setIn(['properties', 'altitude', '_length'], newAltitude);
251
- state = state.setIn(['scene', 'layers', layerID, 'items', item.id], item);
252
- }
253
-
254
- if (item.category === 'cabinet') {
255
- // If create a copied object, copied object has original object's molding property.And if create a object, it has a layer's molding property.
256
- let layerMolding = state
257
- .getIn(['scene', 'layers', layerID, 'molding'])
258
- .filter(md => hasMoldingLayout(md, item.layoutpos));
259
- state = state.setIn(
260
- ['scene', 'layers', layerID, 'items', itemID, 'molding'],
261
- layerMolding.length ? layerMolding : molding
262
- );
263
- }
264
- return { updatedState: state, item };
265
- }
266
-
267
- static updateDoorHandle(item, layer) {
268
- const doorHandle = layer.get('doorHandle');
269
-
270
- if (doorHandle == '') return item;
271
- const dataJSON = item.toJS();
272
- let itemID = dataJSON.id;
273
- var doorStyle = dataJSON.doorStyle;
274
- var tmpDS = {
275
- ...doorStyle,
276
- handle_gltf: doorHandle,
277
- metalness: 0.2,
278
- roughness: 0.1
279
- };
280
- let cnt = 0;
281
- for (let prop in doorStyle.doorStyles) cnt++;
282
- if (cnt !== 0) {
283
- for (var i = 1; i < 10; i++) {
284
- tmpDS['doorStyles']['door_handle_' + i + '_gltf'] = doorHandle;
285
- tmpDS['doorStyles']['fixed_drawer_door_handle_' + i + '_gltf'] =
286
- doorHandle;
287
- tmpDS['doorStyles']['drawer_door_handle_' + i + '_gltf'] = doorHandle;
288
- }
289
- }
290
-
291
- item = item.mergeIn(['doorStyle'], fromJS(tmpDS));
292
-
293
- return item;
294
- }
295
-
296
- static select(state, layerID, itemID) {
297
- state = Layer.select(state, layerID).updatedState;
298
- state = Layer.selectElement(state, layerID, 'items', itemID).updatedState;
299
- state = state.merge({
300
- replacingSupport: new Map({
301
- layerID,
302
- itemID
303
- })
304
- });
305
-
306
- return { updatedState: state };
307
- }
308
-
309
- static selectHole(state, layerID, holeID) {
310
- state = Layer.select(state, layerID).updatedState;
311
- state = Layer.selectElement(state, layerID, 'holes', holeID).updatedState;
312
-
313
- return { updatedState: state };
314
- }
315
-
316
- static editWidth(state, newWidth, layerID, itemID) {
317
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
318
- let properties = item.properties;
319
- if (newWidth === 0) {
320
- alert('You can not set width to 0');
321
- return { updatedState: state };
322
- }
323
- let width = new Map({
324
- _length: newWidth,
325
- _unit: 'in',
326
- length: convert(newWidth).from('in').to('cm')
327
- });
328
- properties = properties.set('width', width);
329
- state = state.mergeIn(
330
- ['scene', 'layers', layerID, 'items', itemID, 'properties'],
331
- properties
332
- );
333
- return { updatedState: state };
334
- }
335
-
336
- static prepareSnap(state, layerID) {
337
- let layer = state.getIn(['scene', 'layers', layerID]);
338
- let scene = state.get('scene');
339
- let catalog = state.catalog.toJS();
340
- allLines = GeometryUtils.getAllLines(layer);
341
- allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
342
- allItemRect = GeometryUtils.getAllItems(scene, catalog, allLineRects);
343
- allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
344
- allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);
345
- allRect = allItemRect.others.concat(allLineRects);
346
- allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
347
- allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
348
- }
349
-
350
- static duplicateSelected(state, currentObject) {
351
- let layerID = state.getIn(['scene', 'selectedLayer']);
352
- let layer = state.getIn(['scene', 'layers', layerID]);
353
- let objectID = currentObject.id;
354
- let myObject;
355
- let x = currentObject.x;
356
- let y = currentObject.y;
357
- let sceneComponentType, width, depth, rotRad;
358
- switch (currentObject.prototype) {
359
- case 'items':
360
- myObject = state.getIn(['scene', 'layers', layerID, 'items', objectID]);
361
- sceneComponentType = myObject.type;
362
- width = myObject.properties.getIn(['width', 'length']);
363
- depth = myObject.properties.getIn(['depth', 'length']);
364
- rotRad = (myObject.rotation * Math.PI) / 180;
365
- this.prepareSnap(state, layerID);
366
- let val = {
367
- pos: {
368
- x: x + width * Math.cos(rotRad),
369
- y: y + width * Math.sin(rotRad)
370
- },
371
- rotRad: rotRad
372
- };
373
- val.size = allItemRect.cur.size;
374
- val.layoutpos = allItemRect.cur.layoutpos;
375
- val.is_corner = allItemRect.cur.is_corner;
376
- let isrectSect = GeometryUtils.validInterSect(allRect, val);
377
- if (isrectSect) {
378
- // Duplicated object has a original object's molding property
379
- let { updatedState: stateI, item } = this.create(
380
- state,
381
- layerID,
382
- sceneComponentType,
383
- x + width * Math.cos(rotRad),
384
- y + width * Math.sin(rotRad),
385
- 200,
386
- 100,
387
- (rotRad * 180) / Math.PI,
388
- true,
389
- myObject.molding
390
- );
391
- if (item === null) {
392
- alert('There are no Door Colors in this cabinet.');
393
- state = state.merge({
394
- mode: MODE_IDLE,
395
- drawingSupport: new Map()
396
- });
397
- } else {
398
- state = Item.select(stateI, layerID, item.id).updatedState;
399
- state = state.setIn(['drawingSupport', 'currentID'], item.id);
400
- }
401
- } else {
402
- let val = {
403
- pos: {
404
- x: x - width * Math.cos(rotRad),
405
- y: y - width * Math.sin(rotRad)
406
- },
407
- rotRad: rotRad
408
- };
409
- val.size = allItemRect.cur.size;
410
- val.layoutpos = allItemRect.cur.layoutpos;
411
- val.is_corner = allItemRect.cur.is_corner;
412
- let isRect = GeometryUtils.validInterSect(allRect, val);
413
- if (isRect) {
414
- let { updatedState: stateI, item } = this.create(
415
- state,
416
- layerID,
417
- sceneComponentType,
418
- x - width * Math.cos(rotRad),
419
- y - width * Math.sin(rotRad),
420
- 200,
421
- 100,
422
- (rotRad * 180) / Math.PI,
423
- true,
424
- myObject.molding
425
- );
426
- if (item === null) {
427
- alert('There are no Door Colors in this cabinet.');
428
- state = state.merge({
429
- mode: MODE_IDLE,
430
- drawingSupport: new Map()
431
- });
432
- } else {
433
- state = Item.select(stateI, layerID, item.id).updatedState;
434
- state = state.setIn(['drawingSupport', 'currentID'], item.id);
435
- }
436
- } else {
437
- let val = {
438
- pos: {
439
- x: x - depth * Math.sin(rotRad),
440
- y: y - depth * Math.cos(rotRad)
441
- },
442
- rotRad: rotRad
443
- };
444
- val.size = allItemRect.cur.size;
445
- val.layoutpos = allItemRect.cur.layoutpos;
446
- val.is_corner = allItemRect.cur.is_corner;
447
- let isRectDown = GeometryUtils.validInterSect(allRect, val);
448
- if (isRectDown) {
449
- let { updatedState: stateI, item } = this.create(
450
- state,
451
- layerID,
452
- sceneComponentType,
453
- x - depth * Math.sin(rotRad),
454
- y - depth * Math.cos(rotRad),
455
- 200,
456
- 100,
457
- (rotRad * 180) / Math.PI,
458
- true,
459
- myObject.molding
460
- );
461
- if (item === null) {
462
- alert('There are no Door Colors in this cabinet.');
463
- state = state.merge({
464
- mode: MODE_IDLE,
465
- drawingSupport: new Map()
466
- });
467
- } else {
468
- state = Item.select(stateI, layerID, item.id).updatedState;
469
- state = state.setIn(['drawingSupport', 'currentID'], item.id);
470
- }
471
- } else {
472
- let val = {
473
- pos: {
474
- x: x + depth * Math.sin(rotRad),
475
- y: y + depth * Math.cos(rotRad)
476
- },
477
- rotRad: rotRad
478
- };
479
- val.size = allItemRect.cur.size;
480
- val.layoutpos = allItemRect.cur.layoutpos;
481
- val.is_corner = allItemRect.cur.is_corner;
482
- let isRectUp = GeometryUtils.validInterSect(allRect, val);
483
- if (isRectUp) {
484
- let { updatedState: stateI, item } = this.create(
485
- state,
486
- layerID,
487
- sceneComponentType,
488
- x + depth * Math.sin(rotRad),
489
- y + depth * Math.cos(rotRad),
490
- 200,
491
- 100,
492
- (rotRad * 180) / Math.PI,
493
- true,
494
- myObject.molding
495
- );
496
- if (item === null) {
497
- alert('There are no Door Colors in this cabinet.');
498
- state = state.merge({
499
- mode: MODE_IDLE,
500
- drawingSupport: new Map()
501
- });
502
- } else {
503
- state = Item.select(stateI, layerID, item.id).updatedState;
504
- state = state.setIn(['drawingSupport', 'currentID'], item.id);
505
- }
506
- } else {
507
- console.log('there is no space');
508
- alert('No more space!');
509
- }
510
- }
511
- }
512
- }
513
- break;
514
- case 'holes':
515
- this.prepareSnap(state, layerID);
516
- myObject = state.getIn(['scene', 'layers', layerID, 'holes', objectID]);
517
- let line = state.getIn([
518
- 'scene',
519
- 'layers',
520
- layerID,
521
- 'lines',
522
- myObject.line
523
- ]);
524
- sceneComponentType = myObject.type;
525
- width = myObject.get('properties').get('width').get('length');
526
- let myOffset = myObject.offset;
527
- let v0 = layer.getIn(['vertices', line.vertices.get(0)]);
528
- let v1 = layer.getIn(['vertices', line.vertices.get(1)]);
529
- let lineLength = GeometryUtils.pointsDistance(v0.x, v0.y, v1.x, v1.y);
530
- let delta = width / 2 / lineLength + 0.00001;
531
- let allHoles = state.getIn(['scene', 'layers', layerID, 'holes']);
532
- let rightAble = true;
533
- let leftAble = true;
534
- if (myOffset + 3 * delta > 1) rightAble = false;
535
- else if (myOffset - 3 * delta < 0) leftAble = false;
536
- if (allHoles.size === 0) {
537
- let { updatedState: stateH, hole } = this.createHole(
538
- state,
539
- layerID,
540
- sceneComponentType,
541
- myObject.line,
542
- myOffset + delta * 2,
543
- myObject.get('properties')
544
- );
545
- state = this.selectHole(stateH, layerID, hole.id).updatedState;
546
- state = state.setIn(['drawingSupport', 'currentID'], hole.id);
547
- } else {
548
- allHoles.forEach(hole => {
549
- if (hole.line === line.id)
550
- if (!hole.selected) {
551
- let newDelta =
552
- hole.get('properties').get('width').get('length') /
553
- 2 /
554
- lineLength;
555
- if (myOffset < hole.offset) {
556
- if (myOffset + delta * 3 > hole.offset - newDelta) {
557
- rightAble = false;
558
- }
559
- } else {
560
- if (myOffset - delta * 3 < hole.offset + newDelta) {
561
- leftAble = false;
562
- }
563
- }
564
- }
565
- });
566
- }
567
- if (rightAble) {
568
- let { updatedState: stateH, hole } = this.createHole(
569
- state,
570
- layerID,
571
- sceneComponentType,
572
- myObject.line,
573
- myOffset + delta * 2,
574
- myObject.get('properties')
575
- );
576
- state = this.selectHole(stateH, layerID, hole.id).updatedState;
577
- state = state.setIn(['drawingSupport', 'currentID'], hole.id);
578
- } else {
579
- if (leftAble) {
580
- let { updatedState: stateH, hole } = this.createHole(
581
- state,
582
- layerID,
583
- sceneComponentType,
584
- myObject.line,
585
- myOffset - delta * 2,
586
- myObject.get('properties')
587
- );
588
- state = this.selectHole(stateH, layerID, hole.id).updatedState;
589
- state = state.setIn(['drawingSupport', 'currentID'], hole.id);
590
- } else alert('No more space');
591
- }
592
- break;
593
- case 'lines':
594
- alert('Duplicating lines is not currently supported yet.');
595
- break;
596
- default:
597
- break;
598
- }
599
- return { updatedState: state };
600
- }
601
-
602
- static storeDistArray(state, layerID, itemID, distArray) {
603
- let curDistArray = state.getIn([
604
- 'scene',
605
- 'layers',
606
- layerID,
607
- 'items',
608
- itemID,
609
- 'distArray'
610
- ]);
611
- let isEqualDist = (a, b) => {
612
- return a == b;
613
- };
614
- if (curDistArray) {
615
- let equal = curDistArray.every((curElement, index) => {
616
- return isEqualDist(curElement[0], distArray[index][0]);
617
- });
618
- if (!equal) {
619
- state = state.setIn(
620
- ['scene', 'layers', layerID, 'items', itemID, 'distArray'],
621
- distArray
622
- );
623
- }
624
- }
625
-
626
- return { updatedState: state };
627
- }
628
-
629
- static validateItemPositions(state, layerID) {
630
- let layer = state.getIn(['scene', 'layers', layerID]);
631
-
632
- function isItemInRect(item) {
633
- let { width, height } = state.getIn(['scene']);
634
- return item.x >= 0 && item.x <= width && item.y >= 0 && item.y <= height;
635
- }
636
-
637
- layer.items.forEach(item => {
638
- if (!isItemInRect(item))
639
- state = this.remove(state, layerID, item.id).updatedState;
640
- });
641
- return { updatedState: state };
642
- }
643
-
644
- static remove(state, layerID, itemID) {
645
- state = this.unselect(state, layerID, itemID).updatedState;
646
- state = Layer.removeElement(state, layerID, 'items', itemID).updatedState;
647
-
648
- state
649
- .getIn(['scene', 'groups'])
650
- .forEach(
651
- group =>
652
- (state = Group.removeElement(
653
- state,
654
- group.id,
655
- layerID,
656
- 'items',
657
- itemID
658
- ).updatedState)
659
- );
660
-
661
- return { updatedState: state };
662
- }
663
-
664
- static replaceItem(state, selectedPos, currentObject, selectedObject) {
665
- state = this.remove(
666
- state,
667
- state.scene.selectedLayer,
668
- selectedPos.selectedItemId
669
- ).updatedState;
670
- state = this.create(
671
- state,
672
- state.scene.selectedLayer,
673
- selectedObject.name,
674
- selectedPos.x,
675
- selectedPos.y,
676
- selectedObject.info.width,
677
- selectedObject.info.height,
678
- selectedPos.rotation,
679
- false
680
- ).updatedState;
681
- // state = this.select(state, state.scene.selectedLayer, selectedPos.selectedItemId).updatedState;
682
- return { updatedState: state };
683
- }
684
-
685
- static unselect(state, layerID, itemID) {
686
- state = Layer.unselect(state, layerID, 'items', itemID).updatedState;
687
- return { updatedState: state };
688
- }
689
-
690
- static selectToolDrawingItem(state, sceneComponentType) {
691
- state = state.merge({
692
- mode: MODE_DRAWING_ITEM,
693
- drawingSupport: new Map({
694
- type: sceneComponentType
695
- })
696
- });
697
-
698
- return { updatedState: state };
699
- }
700
-
701
- static selectToolDrawingItem3D(state, sceneComponentType) {
702
- state = state.merge({
703
- mode: MODE_DRAWING_ITEM_3D,
704
- drawingSupport: new Map({
705
- type: sceneComponentType
706
- })
707
- });
708
- state = state.mergeIn(['scene', 'loadFlag'], false);
709
- return { updatedState: state };
710
- }
711
-
712
- static endCreatingCabinet(state) {
713
- state = state.merge({
714
- isOpen: false,
715
- openedType: 0
716
- });
717
- return { updatedState: state };
718
- }
719
- static updatePopupOpen(state, value) {
720
- state = state.merge({
721
- openedType: value
722
- });
723
- return { updatedState: state };
724
- }
725
-
726
- static updateDrawingItem(state, layerID, x, y) {
727
- if (state.hasIn(['drawingSupport', 'currentID'])) {
728
- let mode = state.get('mode');
729
- if ([MODE_DRAWING_ITEM_3D].includes(mode)) {
730
- state = state.updateIn(
731
- [
732
- 'scene',
733
- 'layers',
734
- layerID,
735
- 'items',
736
- state.getIn(['drawingSupport', 'currentID'])
737
- ],
738
- item => item && item.merge({ x, y })
739
- );
740
- state = state.merge({ mode: MODE_IDLE_3D });
741
- }
742
- if ([MODE_DRAWING_ITEM].includes(mode)) {
743
- state = state.merge({ mode: MODE_IDLE });
744
- state = state.updateIn(
745
- [
746
- 'scene',
747
- 'layers',
748
- layerID,
749
- 'items',
750
- state.getIn(['drawingSupport', 'currentID'])
751
- ],
752
- item => item && item.merge({ x, y })
753
- );
754
- }
755
- } else {
756
- let { updatedState: stateI, item } = this.create(
757
- state,
758
- layerID,
759
- state.getIn(['drawingSupport', 'type']),
760
- x,
761
- y,
762
- 200,
763
- 100,
764
- 0,
765
- false
766
- );
767
- if (item === null) {
768
- alert('There are no Door Colors in this cabinet.');
769
- state = state.merge({
770
- mode: MODE_IDLE,
771
- drawingSupport: new Map()
772
- });
773
- } else {
774
- state = Item.select(stateI, layerID, item.id).updatedState;
775
- state = state.setIn(['drawingSupport', 'currentID'], item.id);
776
- }
777
- }
778
-
779
- return { updatedState: state };
780
- }
781
-
782
- static updateDraggingItemChanged(state, x, y, layerID, itemID) {
783
- let { scene } = state;
784
- // let originalX = draggingSupport.get('originalX');
785
- // let originalY = draggingSupport.get('originalY');
786
-
787
- // let diffX = x;
788
- // let diffY = y;
789
-
790
- let item = scene.getIn(['layers', layerID, 'items', itemID]);
791
- // let tX = originalX - diffX;
792
- // let tY = originalY - diffY;
793
- // tX = tX > 500 ? 500 : tX < 0 ? 0 : tX;
794
- // tY = tY > 500 ? 500 : tY < 0 ? 0 : tY;
795
- item = item.merge({
796
- x: x,
797
- y: y
798
- });
799
-
800
- state = state.merge({
801
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
802
- });
803
- time2 = debugUtil();
804
- false &&
805
- console.log(
806
- 'FPS:',
807
- Math.round(1000 / (time2 - time1)),
808
- ' Delta Time:',
809
- (time2 - time1) / 1000,
810
- '(s)'
811
- );
812
- return { updatedState: state };
813
- }
814
-
815
- static endDrawingItem(state, layerID, x, y) {
816
- let catalog = state.catalog;
817
- state = this.updateDrawingItem(state, layerID, x, y, catalog).updatedState;
818
- state = Layer.unselectAll(state, layerID).updatedState;
819
- let popup = state.get('popup');
820
-
821
- state = state.merge({
822
- drawingSupport: Map({
823
- type: state.drawingSupport.get('type')
824
- }),
825
- isOpen: !popup
826
- });
827
- state = Layer.unselectAll(state, layerID).updatedState;
828
- this.updateMolding(state);
829
- return { updatedState: state };
830
- }
831
-
832
- static beginDraggingItem(state, layerID, itemID, x, y) {
833
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
834
-
835
- time1 = debugUtil();
836
- if (isUndefined(item)) return;
837
- state = state.merge({
838
- mode: MODE_DRAGGING_ITEM,
839
- draggingSupport: Map({
840
- layerID,
841
- itemID,
842
- startPointX: x,
843
- startPointY: y,
844
- originalX: item.x,
845
- originalY: item.y
846
- })
847
- });
848
-
849
- return { updatedState: state };
850
- }
851
-
852
- static beginDraggingItem3D(state, layerID, itemID, x, y) {
853
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
854
- state = state.setIn(['scene', 'isEndDragging'], false);
855
- if (isUndefined(item)) return { updatedState: state };
856
- state = state.merge({
857
- mode: MODE_DRAGGING_ITEM_3D,
858
- draggingSupport: Map({
859
- layerID,
860
- itemID,
861
- startPointX: x,
862
- startPointY: y,
863
- originalX: item.x,
864
- originalY: item.y
865
- })
866
- });
867
-
868
- return { updatedState: state };
869
- }
870
-
871
- static updateDraggingItem(state, x, y) {
872
- let { draggingSupport, scene } = state;
873
-
874
- let layerID = draggingSupport.get('layerID');
875
- let itemID = draggingSupport.get('itemID');
876
- let startPointX = draggingSupport.get('startPointX');
877
- let startPointY = draggingSupport.get('startPointY');
878
- let originalX = draggingSupport.get('originalX');
879
- let originalY = draggingSupport.get('originalY');
880
-
881
- let diffX = startPointX - x;
882
- let diffY = startPointY - y;
883
-
884
- let item = scene.getIn(['layers', layerID, 'items', itemID]);
885
- if (isUndefined(item)) return { updatedState: state };
886
- let tX = originalX - diffX;
887
- let tY = originalY - diffY;
888
- tX = tX > scene.width ? scene.width : tX < 0 ? 0 : tX;
889
- tY = tY > scene.height ? scene.height : tY < 0 ? 0 : tY;
890
- item = item.merge({
891
- x: tX,
892
- y: tY
893
- });
894
-
895
- state = state.merge({
896
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
897
- });
898
-
899
- return { updatedState: state };
900
- }
901
-
902
- static updateDraggingItem3DX(state, x) {
903
- let { draggingSupport, scene } = state;
904
-
905
- let layerID = draggingSupport.get('layerID');
906
- let itemID = draggingSupport.get('itemID');
907
- let startPointX = draggingSupport.get('startPointX');
908
- let originalX = draggingSupport.get('originalX');
909
-
910
- let diffX = startPointX - x;
911
-
912
- let item = scene.getIn(['layers', layerID, 'items', itemID]);
913
- item = item.merge({
914
- x: originalX - diffX
915
- });
916
-
917
- state = state.merge({
918
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
919
- });
920
-
921
- return { updatedState: state };
922
- }
923
-
924
- static updateDraggingItem3DY(state, y) {
925
- let { draggingSupport, scene } = state;
926
-
927
- let layerID = draggingSupport.get('layerID');
928
- let itemID = draggingSupport.get('itemID');
929
- let startPointY = draggingSupport.get('startPointY');
930
- let originalY = draggingSupport.get('originalY');
931
-
932
- let diffY = startPointY - y;
933
-
934
- let item = scene.getIn(['layers', layerID, 'items', itemID]);
935
- item = item.merge({
936
- y: originalY - diffY
937
- });
938
-
939
- state = state.merge({
940
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
941
- });
942
-
943
- return { updatedState: state };
944
- }
945
-
946
- static endDraggingItem(state, x, y) {
947
- state = this.updateDraggingItem(state, x, y).updatedState;
948
- state = state.merge({ mode: MODE_IDLE });
949
-
950
- return { updatedState: state };
951
- }
952
-
953
- static endDraggingItem3D(state) {
954
- // state = this.updateDraggingItem(state, x, y).updatedState;
955
- state = state.merge({ mode: MODE_IDLE_3D });
956
- state = state.setIn(['scene', 'isEndDragging'], true);
957
-
958
- return { updatedState: state };
959
- }
960
-
961
- static beginRotatingItem(state, layerID, itemID, x, y) {
962
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
963
- let originRotation = item.get('rotation');
964
-
965
- state = state.merge({
966
- mode: MODE_ROTATING_ITEM,
967
- rotatingSupport: Map({
968
- layerID,
969
- itemID,
970
- x,
971
- y,
972
- originRotation
973
- })
974
- });
975
-
976
- return { updatedState: state };
977
- }
978
-
979
- static beginRotatingItem3D(state, layerID, itemID, x, y) {
980
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
981
- let originRotation = item.get('rotation');
982
-
983
- state = state.merge({
984
- mode: MODE_ROTATING_ITEM_3D,
985
- rotatingSupport: Map({
986
- layerID,
987
- itemID,
988
- x,
989
- y,
990
- originRotation
991
- })
992
- });
993
-
994
- return { updatedState: state };
995
- }
996
-
997
- static updateRotatingItem(state, x, y) {
998
- let { rotatingSupport, scene } = state;
999
- let layerID = rotatingSupport.get('layerID');
1000
- let itemID = rotatingSupport.get('itemID');
1001
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
1002
- let origin = {
1003
- x: rotatingSupport.get('x'),
1004
- y: rotatingSupport.get('y'),
1005
- originRotation: rotatingSupport.get('originRotation')
1006
- };
1007
-
1008
- let newRot =
1009
- (Math.atan2(origin.y - item.y, origin.x - item.x) * 180) / Math.PI + 90;
1010
- let deltaRot = newRot - origin.originRotation;
1011
-
1012
- let deltaX = x - item.x;
1013
- let deltaY = y - item.y;
1014
-
1015
- let rotation = (Math.atan2(deltaY, deltaX) * 180) / Math.PI + 90;
1016
- rotation -= deltaRot;
1017
- if (-5 < rotation && rotation < 5) rotation = 0;
1018
- if (-95 < rotation && rotation < -85) rotation = -90;
1019
- if (-185 < rotation && rotation < -175) rotation = -180;
1020
- if (85 < rotation && rotation < 95) rotation = 90;
1021
- if (-270 < rotation && rotation < -265) rotation = 90;
1022
- if (175 < rotation && rotation < 185) rotation = 180;
1023
- if (265 < rotation && rotation < 275) rotation = -90;
1024
-
1025
- item = item.merge({
1026
- rotation
1027
- });
1028
-
1029
- state = state.merge({
1030
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
1031
- });
1032
-
1033
- return { updatedState: state };
1034
- }
1035
-
1036
- static updateRotatingItemChanged(state, rotation, layerID, itemID) {
1037
- let scene = state.scene;
1038
-
1039
- // let originalX = draggingSupport.get('originalX');
1040
- // let originalY = draggingSupport.get('originalY');
1041
-
1042
- // let diffX = x;
1043
- // let diffY = y;
1044
-
1045
- let item = scene.getIn(['layers', layerID, 'items', itemID]);
1046
- // let tX = originalX - diffX;
1047
- // let tY = originalY - diffY;
1048
- // tX = tX > 500 ? 500 : tX < 0 ? 0 : tX;
1049
- // tY = tY > 500 ? 500 : tY < 0 ? 0 : tY;
1050
- item = item.merge({
1051
- rotation: rotation
1052
- });
1053
-
1054
- state = state.merge({
1055
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
1056
- });
1057
-
1058
- return { updatedState: state };
1059
- }
1060
-
1061
- static endRotatingItem(state, x, y) {
1062
- //state = this.updateRotatingItem(state, x, y).updatedState;
1063
- state = state.merge({ mode: MODE_IDLE });
1064
-
1065
- return { updatedState: state };
1066
- }
1067
-
1068
- static endRotatingItem3D(state, x, y) {
1069
- state = this.updateRotatingItem(state, x, y).updatedState;
1070
- state = state.merge({ mode: MODE_IDLE_3D });
1071
-
1072
- return { updatedState: state };
1073
- }
1074
-
1075
- static replaceSubmodule(state, url) {
1076
- let { replacingSupport, scene } = state;
1077
- url = 'catalog/texture.png';
1078
- let urlData = url.split('/');
1079
- let newURL = '';
1080
- let addURL = false;
1081
- for (let i = 0; i < urlData.length; i++) {
1082
- if (urlData[i] == '') {
1083
- continue;
1084
- }
1085
- newURL += '/' + urlData[i];
1086
- }
1087
- let layerID = replacingSupport.get('layerID');
1088
- let itemID = replacingSupport.get('itemID');
1089
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
1090
- let submodule = [];
1091
- let normalMap = [];
1092
-
1093
- for (let i = 0; i < item.submodule.size; i++)
1094
- submodule.push(item.submodule.get(i));
1095
- for (let i = 0; i < item.normalMap.size; i++)
1096
- normalMap.push(item.normalMap.get(i));
1097
- //let submodule = state.getIn(['scene', 'layers', layerID, 'items', itemID, 'submodule']);
1098
- urlData = newURL.split('/');
1099
- let flag = false;
1100
- if (urlData[urlData.length - 1].includes('.gltf')) {
1101
- for (let i = 0; i < submodule.length; i++) {
1102
- let pathData = submodule[i].split('/');
1103
- if (pathData[pathData.length - 2] === urlData[urlData.length - 2]) {
1104
- submodule[i] = newURL;
1105
- flag = true;
1106
- }
1107
- }
1108
- if (!flag) submodule.push(newURL);
1109
- item = item.merge({
1110
- submodule
1111
- });
1112
- } else {
1113
- for (let i = 0; i < normalMap.length; i++) {
1114
- let pathData = normalMap[i].split('/');
1115
- if (pathData[pathData.length - 2] === urlData[urlData.length - 2]) {
1116
- normalMap[i] = newURL;
1117
- flag = true;
1118
- }
1119
- }
1120
- if (!flag) normalMap.push(newURL);
1121
-
1122
- item = item.merge({
1123
- normalMap
1124
- });
1125
- }
1126
-
1127
- state = state.merge({
1128
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
1129
- });
1130
- state = state.merge({ mode: MODE_IDLE_3D });
1131
-
1132
- return { updatedState: state };
1133
- }
1134
-
1135
- static setProperties(state, layerID, itemID, properties) {
1136
- state = state.mergeIn(
1137
- ['scene', 'layers', layerID, 'items', itemID, 'properties'],
1138
- properties
1139
- );
1140
-
1141
- return { updatedState: state };
1142
- }
1143
-
1144
- static setJsProperties(state, layerID, itemID, properties) {
1145
- return this.setProperties(state, layerID, itemID, fromJS(properties));
1146
- }
1147
-
1148
- static updateProperties(state, layerID, itemID, properties) {
1149
- properties.forEach((v, k) => {
1150
- if (
1151
- state.hasIn([
1152
- 'scene',
1153
- 'layers',
1154
- layerID,
1155
- 'items',
1156
- itemID,
1157
- 'properties',
1158
- k
1159
- ])
1160
- )
1161
- state = state.mergeIn(
1162
- ['scene', 'layers', layerID, 'items', itemID, 'properties', k],
1163
- v
1164
- );
1165
- });
1166
-
1167
- return { updatedState: state };
1168
- }
1169
-
1170
- static updateJsProperties(state, layerID, itemID, properties) {
1171
- return this.updateProperties(state, layerID, itemID, fromJS(properties));
1172
- }
1173
-
1174
- static setAttributes(state, layerID, itemID, itemAttributes) {
1175
- state = state.mergeIn(
1176
- ['scene', 'layers', layerID, 'items', itemID],
1177
- itemAttributes
1178
- );
1179
- return { updatedState: state };
1180
- }
1181
-
1182
- static setJsAttributes(state, layerID, itemID, itemAttributes) {
1183
- itemAttributes = fromJS(itemAttributes);
1184
- return this.setAttributes(state, layerID, itemID, itemAttributes);
1185
- }
1186
-
1187
- static animateObject(state, value) {
1188
- let { replacingSupport, scene } = state;
1189
- let layerID = replacingSupport.get('layerID');
1190
- let itemID = replacingSupport.get('itemID');
1191
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
1192
- if (item !== undefined) {
1193
- let animCount = item.get('animate');
1194
- item = item.merge({
1195
- animValue: value,
1196
- animate: animCount + 1
1197
- });
1198
-
1199
- state = state.merge({
1200
- scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
1201
- });
1202
- state = state.merge({ mode: MODE_IDLE_3D });
1203
- }
1204
-
1205
- return { updatedState: state };
1206
- }
1207
-
1208
- static removeReplacingSupport(state) {
1209
- state = state.merge({
1210
- replacingSupport: new Map()
1211
- });
1212
- return { updatedState: state };
1213
- }
1214
-
1215
- static setInitialDoorStyle(state, doorStyle, oStyle) {
1216
- if (doorStyle === undefined) {
1217
- state = state.merge({
1218
- oStyle: new Map({
1219
- oStyle
1220
- })
1221
- });
1222
- } else {
1223
- state = state.merge({
1224
- doorStyle: doorStyle,
1225
- oStyle: new Map({
1226
- oStyle
1227
- })
1228
- });
1229
- let { scene } = state;
1230
- let layerID = scene.get('selectedLayer');
1231
- let layers = scene.layers.get(layerID);
1232
- let items = layers.items;
1233
- items.forEach(data => {
1234
- {
1235
- let itemID = data.id;
1236
-
1237
- var tmpDS = {
1238
- ...data.doorStyle,
1239
- doorStyles: {
1240
- ...data.doorStyle.doorStyles,
1241
- counttop: doorStyle.doorStyles.counttop
1242
- }
1243
- };
1244
- data = data.mergeIn(['doorStyle'], fromJS(tmpDS));
1245
- layers = layers.mergeIn(['items', itemID], data);
1246
- state = state.merge({
1247
- scene: scene.mergeIn(['layers', layerID], layers)
1248
- });
1249
- }
1250
- });
1251
- }
1252
- return { updatedState: state };
1253
- }
1254
-
1255
- static setDoorStyle(state, doorStyle, pathes, isAll) {
1256
- var keys = Object.keys(doorStyle.doorStyles);
1257
- keys = keys.filter(elem => !elem.endsWith('_gltf'));
1258
- var tmp = {};
1259
- for (let x in keys) {
1260
- tmp[keys[x]] = doorStyle.doorStyles[keys[x]];
1261
- }
1262
- state = state.setIn(
1263
- ['scene', 'layers', state.scene.selectedLayer, 'doorStyle'],
1264
- doorStyle
1265
- );
1266
- state = state.merge({
1267
- doorStyle: doorStyle
1268
- });
1269
- let layerID = state.scene.get('selectedLayer');
1270
- let temp_layer_molding = state.scene.getIn(['layers', layerID, 'molding']);
1271
- temp_layer_molding = temp_layer_molding.filter(md =>
1272
- doorStyle.doorStyles.cds.some(ds => md.itemID === ds.itemID)
1273
- );
1274
- state = state.setIn(
1275
- ['scene', 'layers', layerID, 'molding'],
1276
- temp_layer_molding
1277
- );
1278
- let itemIDs = state.scene.layers
1279
- .getIn([layerID, 'selected', 'items'])
1280
- .toJS();
1281
-
1282
- let setDoorStyleOfItem = data => {
1283
- if (data.category !== 'cabinet') return; //CDS should effect to cabinets
1284
- let itemID = data.id;
1285
- const curItem = state.getIn([
1286
- 'scene',
1287
- 'layers',
1288
- layerID,
1289
- 'items',
1290
- itemID
1291
- ]);
1292
- const layer = state.getIn(['scene', 'layers', layerID]);
1293
- let tmpMolding = [...curItem.molding];
1294
- let temp_item_molding = [...curItem.molding];
1295
- temp_item_molding = temp_item_molding.filter(md =>
1296
- doorStyle.doorStyles.cds.some(ds => ds.itemID === md.itemID)
1297
- );
1298
- tmpMolding.forEach(md => {
1299
- const itemGroup = MoldingUtils.getItemGroupFromMolding(
1300
- layer,
1301
- curItem,
1302
- md
1303
- );
1304
- itemGroup.forEach(it => {
1305
- state = state.setIn(
1306
- ['scene', 'layers', layerID, 'items', it.id, 'molding'],
1307
- temp_item_molding
1308
- );
1309
- });
1310
- });
1311
- var cds = doorStyle.doorStyles.cds.find(
1312
- elem => elem.itemID === data.itemID
1313
- );
1314
- let euro_cds = [];
1315
- if (cds !== undefined) {
1316
- euro_cds = cds && cds.data.filter(element => element.is_euro_cds);
1317
- }
1318
- let cds_data;
1319
- if (
1320
- doorStyle.door_style_name === 'Euro & Frameless' &&
1321
- euro_cds.length > 0
1322
- ) {
1323
- cds_data = cds
1324
- ? { ...euro_cds[0], cabinet_door_style_id: cds.cabinet_door_style_id }
1325
- : {};
1326
- let newProperties = state.scene
1327
- .getIn(['layers', layerID, 'items', itemID, 'properties'])
1328
- .toJS();
1329
- if (newProperties.hasOwnProperty('depth')) {
1330
- if (!newProperties.hasOwnProperty('oldDepth')) {
1331
- newProperties['oldDepth'] = new Map({
1332
- length: newProperties.depth.length,
1333
- _length: newProperties.depth._length,
1334
- _unit: newProperties.depth._unit
1335
- });
1336
- }
1337
- newProperties['depth'] = new Map({
1338
- length: convert(euro_cds[0].euro_length).from('in').to('cm'),
1339
- _length: euro_cds[0].euro_length,
1340
- _unit: 'in'
1341
- });
1342
- }
1343
- if (newProperties.hasOwnProperty('height')) {
1344
- if (!newProperties.hasOwnProperty('oldHeight')) {
1345
- newProperties['oldHeight'] = new Map({
1346
- length: newProperties.height.length,
1347
- _length: newProperties.height._length,
1348
- _unit: newProperties.height._unit
1349
- });
1350
- }
1351
- newProperties['height'] = new Map({
1352
- length: convert(euro_cds[0].euro_height).from('in').to('cm'),
1353
- _length: euro_cds[0].euro_height,
1354
- _unit: 'in'
1355
- });
1356
- }
1357
- if (newProperties.hasOwnProperty('width')) {
1358
- if (!newProperties.hasOwnProperty('oldWidth')) {
1359
- newProperties['oldWidth'] = new Map({
1360
- length: newProperties.width.length,
1361
- _length: newProperties.width._length,
1362
- _unit: newProperties.width._unit
1363
- });
1364
- }
1365
- newProperties['width'] = new Map({
1366
- length: convert(euro_cds[0].euro_width).from('in').to('cm') - 10,
1367
- _length: euro_cds[0].euro_width,
1368
- _unit: 'in'
1369
- });
1370
- }
1371
- state = this.setJsProperties(
1372
- state,
1373
- layerID,
1374
- itemID,
1375
- newProperties
1376
- ).updatedState;
1377
- } else {
1378
- cds_data = cds
1379
- ? { ...cds.data[0], cabinet_door_style_id: cds.cabinet_door_style_id }
1380
- : {};
1381
- let properties = state.scene
1382
- .getIn(['layers', layerID, 'items', itemID, 'properties'])
1383
- .toJS();
1384
- if (properties.hasOwnProperty('oldDepth')) {
1385
- properties['depth'] = new Map({
1386
- length: properties.oldDepth.length,
1387
- _length: properties.oldDepth._length,
1388
- _unit: properties.oldDepth._unit
1389
- });
1390
- }
1391
- if (properties.hasOwnProperty('oldHeight')) {
1392
- properties['height'] = new Map({
1393
- length: properties.oldHeight.length,
1394
- _length: properties.oldHeight._length,
1395
- _unit: properties.oldHeight._unit
1396
- });
1397
- }
1398
- if (properties.hasOwnProperty('oldWidth')) {
1399
- properties['width'] = new Map({
1400
- length: properties.oldWidth.length,
1401
- _length: properties.oldWidth._length,
1402
- _unit: properties.oldWidth._unit
1403
- });
1404
- }
1405
- state = this.setJsProperties(
1406
- state,
1407
- layerID,
1408
- itemID,
1409
- properties
1410
- ).updatedState;
1411
- }
1412
- var tmpDS = {
1413
- id: doorStyle.id,
1414
- brightness: doorStyle.brightness,
1415
- color: doorStyle.color,
1416
- glossness: doorStyle.glossness,
1417
- name: doorStyle.name,
1418
- door_style_name: doorStyle.door_style_name,
1419
- texture: doorStyle.texture,
1420
- thumbnail: doorStyle.thumbnail,
1421
- type: doorStyle.type,
1422
- sku: doorStyle.sku,
1423
- color_sku_alias: doorStyle.color_sku_alias, // alias name of color_sku for the current dealer
1424
- install: getInstallationSuffix(
1425
- INSTALLATION_SUFFIX_TYPE.NAME,
1426
- doorStyle
1427
- ),
1428
- doorStyles: {
1429
- ...tmp,
1430
- ...cds_data
1431
- }
1432
- };
1433
- state = state.mergeIn(
1434
- ['scene', 'layers', layerID, 'items', itemID, 'doorStyle'],
1435
- fromJS(tmpDS)
1436
- );
1437
- };
1438
-
1439
- if (isAll) {
1440
- let items = state.scene.layers.get(layerID).items;
1441
- items.forEach(setDoorStyleOfItem);
1442
- } else {
1443
- if (itemIDs.length > 0) {
1444
- for (let i = 0; i < itemIDs.length; i++) {
1445
- let itemID = itemIDs[i];
1446
- let items = state.scene.layers.get(layerID).items;
1447
- items.forEach(data => {
1448
- if (itemID === data.id) {
1449
- setDoorStyleOfItem(data);
1450
- }
1451
- });
1452
- }
1453
- }
1454
- }
1455
- return { updatedState: state };
1456
- }
1457
- static setCounterTop(state, counterTop) {
1458
- let { scene } = state;
1459
- let layerID = scene.get('selectedLayer');
1460
- let layers = scene.layers.get(layerID);
1461
- layers = layers.mergeIn(['counterTop'], counterTop);
1462
- state = state.merge({
1463
- scene: scene.mergeIn(['layers', layerID], layers)
1464
- });
1465
- let items = layers.items;
1466
- items.forEach(data => {
1467
- {
1468
- const dataJSON = data.toJS();
1469
- let itemID = dataJSON.id;
1470
- let newCounter = dataJSON.counterTop;
1471
- newCounter = { ...newCounter, ...counterTop };
1472
- data = data.mergeIn(['counterTop'], newCounter);
1473
- layers = layers.mergeIn(['items', itemID], data);
1474
- state = state.merge({
1475
- scene: scene.mergeIn(['layers', layerID], layers)
1476
- });
1477
- }
1478
- });
1479
-
1480
- return { updatedState: state };
1481
- }
1482
-
1483
- static setItemsDoorHandle(state, scene, layer, layerID, elements_item) {
1484
- elements_item.forEach(data => {
1485
- let itemID = data.id;
1486
- let item = this.updateDoorHandle(data, layer);
1487
- layer = layer.mergeIn(['items', itemID], item);
1488
- state = state.merge({
1489
- scene: scene.mergeIn(['layers', layerID], layer)
1490
- });
1491
- });
1492
- return { updatedState: state };
1493
- }
1494
-
1495
- static setDoorHandle(state, doorHandle) {
1496
- let { scene } = state;
1497
- let layerID = scene.get('selectedLayer');
1498
- let layer = scene.layers.get(layerID);
1499
-
1500
- layer = layer.mergeIn(['doorHandle'], doorHandle);
1501
- state = state.merge({
1502
- scene: scene.mergeIn(['layers', layerID], layer)
1503
- });
1504
-
1505
- let items = layer.items;
1506
- let selectedItems = items.filter(element => element.selected === true); // find selected items (default 1 selected)
1507
-
1508
- if (selectedItems.size === 0) {
1509
- state = this.setItemsDoorHandle(
1510
- state,
1511
- scene,
1512
- layer,
1513
- layerID,
1514
- items
1515
- ).updatedState;
1516
- } else {
1517
- state = this.setItemsDoorHandle(
1518
- state,
1519
- scene,
1520
- layer,
1521
- layerID,
1522
- selectedItems
1523
- ).updatedState;
1524
- }
1525
- return { updatedState: state };
1526
- }
1527
- static setHandleMaterial(state, material) {
1528
- let { scene } = state;
1529
- let layerID = scene.get('selectedLayer');
1530
- let layers = scene.layers.get(layerID);
1531
- let items = layers.items;
1532
- items.forEach(data => {
1533
- const dataJSON = data.toJS();
1534
- let itemID = dataJSON.id;
1535
- var doorStyle = dataJSON.doorStyle;
1536
- var tmpDS = {
1537
- ...doorStyle,
1538
- metalness: material.metalness,
1539
- roughness: material.roughness
1540
- };
1541
- data = data.mergeIn(['doorStyle'], fromJS(tmpDS));
1542
- layers = layers.mergeIn(['items', itemID], data);
1543
- state = state.merge({
1544
- scene: scene.mergeIn(['layers', layerID], layers)
1545
- });
1546
- });
1547
- return { updatedState: state };
1548
- }
1549
-
1550
- static setWallColor(state, wallColor) {
1551
- let { scene } = state;
1552
- let layerID = scene.get('selectedLayer');
1553
- let layer = scene.layers.get(layerID);
1554
-
1555
- layer = layer.merge({ wallColor });
1556
- state = state.merge({
1557
- scene: scene.mergeIn(['layers', layerID], layer)
1558
- });
1559
-
1560
- let lines = layer.lines;
1561
- lines.forEach(data => {
1562
- const dataJSON = data.toJS();
1563
- let lineID = dataJSON.id;
1564
- data = data.mergeIn(['wallColor'], wallColor);
1565
- layer = layer.mergeIn(['lines', lineID], data);
1566
- state = state.merge({
1567
- scene: scene.mergeIn(['layers', layerID], layer)
1568
- });
1569
- });
1570
- return { updatedState: state };
1571
- }
1572
-
1573
- static setBacksplash(state, backsplash) {
1574
- let { scene } = state;
1575
- let layerID = scene.get('selectedLayer');
1576
- let layer = scene.layers.get(layerID);
1577
- const dataJSON = layer.toJS();
1578
- let newBack = dataJSON.backsplash;
1579
- let flag = true; // selected or not
1580
- // if backsplash is already set
1581
- if (layer.getIn(['backsplash']).uri === backsplash.uri) {
1582
- // unselect
1583
- newBack = { ...newBack, uri: '' };
1584
- flag = false;
1585
- }
1586
- // else then, set backsplash
1587
- else newBack = { ...newBack, ...backsplash };
1588
- layer = layer.mergeIn(['backsplash'], newBack);
1589
- layer = layer.set('backsplashApplied', flag);
1590
- state = state.merge({
1591
- scene: scene.mergeIn(['layers', layerID], layer)
1592
- });
1593
- return { updatedState: state };
1594
- }
1595
-
1596
- static setMolding(state, molding, isAll) {
1597
- let { scene } = state;
1598
- let layerID = scene.get('selectedLayer');
1599
- let layer = scene.layers.get(layerID);
1600
- if (isAll) {
1601
- let tempLayerMolding = layer.molding;
1602
- let flag = tempLayerMolding.some(mol => mol.name === molding.name);
1603
- if (flag) {
1604
- tempLayerMolding = tempLayerMolding.filter(
1605
- mol => mol.name !== molding.name
1606
- );
1607
- } else {
1608
- if (
1609
- tempLayerMolding.some(
1610
- mol =>
1611
- mol.molding_type === molding.molding_type &&
1612
- mol.location_type === molding.location_type
1613
- )
1614
- ) {
1615
- tempLayerMolding = tempLayerMolding.filter(
1616
- mol =>
1617
- mol.molding_type !== molding.molding_type ||
1618
- mol.location_type !== molding.location_type
1619
- );
1620
- }
1621
- tempLayerMolding = tempLayerMolding.concat(molding);
1622
- }
1623
- layer = layer.set('molding', tempLayerMolding);
1624
- state = state.merge({
1625
- scene: scene.mergeIn(['layers', layerID], layer)
1626
- });
1627
- layer.items.toArray().forEach(item => {
1628
- if (MoldingUtils.isEnableItemForMolding(layer, item, molding)) {
1629
- let tempItemMolding = item.molding;
1630
- if (flag) {
1631
- if (tempItemMolding.some(mol => mol.name === molding.name)) {
1632
- tempItemMolding = tempItemMolding.filter(
1633
- mol => mol.name !== molding.name
1634
- );
1635
- }
1636
- } else {
1637
- if (
1638
- tempItemMolding.some(
1639
- mol =>
1640
- mol.molding_type === molding.molding_type &&
1641
- mol.location_type === molding.location_type
1642
- )
1643
- ) {
1644
- tempItemMolding = tempItemMolding.filter(
1645
- mol =>
1646
- mol.molding_type !== molding.molding_type ||
1647
- mol.location_type !== molding.location_type
1648
- );
1649
- }
1650
- tempItemMolding = tempItemMolding.concat(molding);
1651
- }
1652
- state = state.setIn(
1653
- ['scene', 'layers', layerID, 'items', item.id, 'molding'],
1654
- tempItemMolding
1655
- );
1656
- }
1657
- });
1658
- } else {
1659
- const selectedItem = layer.getIn([
1660
- 'items',
1661
- layer.selected.toJS().items[0]
1662
- ]);
1663
- if (MoldingUtils.isEnableItemForMolding(layer, selectedItem, molding)) {
1664
- let moldingGroup = MoldingUtils.getItemGroupFromMolding(
1665
- layer,
1666
- selectedItem,
1667
- molding
1668
- );
1669
- let tempSelItemMolding = selectedItem.molding;
1670
- let flag = tempSelItemMolding.some(mol => mol.name === molding.name);
1671
- moldingGroup.forEach(item => {
1672
- let tempItemMolding = item.molding;
1673
- if (flag) {
1674
- if (tempItemMolding.some(mol => mol.name === molding.name)) {
1675
- tempItemMolding = tempItemMolding.filter(
1676
- mol => mol.name !== molding.name
1677
- );
1678
- }
1679
- } else {
1680
- if (
1681
- tempItemMolding.some(
1682
- mol =>
1683
- mol.molding_type === molding.molding_type &&
1684
- mol.location_type === molding.location_type
1685
- )
1686
- ) {
1687
- tempItemMolding = tempItemMolding.filter(
1688
- mol =>
1689
- mol.molding_type !== molding.molding_type ||
1690
- mol.location_type !== molding.location_type
1691
- );
1692
- }
1693
- tempItemMolding = tempItemMolding.concat(molding);
1694
- }
1695
- state = state.setIn(
1696
- ['scene', 'layers', layerID, 'items', item.id, 'molding'],
1697
- tempItemMolding
1698
- );
1699
- });
1700
- }
1701
- }
1702
- return { updatedState: state };
1703
- }
1704
-
1705
- static updateMolding(state) {
1706
- const { scene } = state;
1707
- const layerID = scene.get('selectedLayer');
1708
- const layer = scene.layers.get(layerID);
1709
- const selectedItem = layer.getIn(['items', layer.selected.toJS().items[0]]);
1710
- let snappedItemGroup = []; // The array that include snapped items with selected item.
1711
- if (!!selectedItem && selectedItem.category === 'cabinet') {
1712
- let itemGroups = [];
1713
- layer.items.toArray().forEach(curItem => {
1714
- if (selectedItem.id !== curItem.id && curItem.category === 'cabinet') {
1715
- if (MoldingUtils.isItemSnappedItem(selectedItem, curItem)) {
1716
- snappedItemGroup.push(curItem); // add the snapped item.
1717
- // add the snapped item that has same molding location type, layoutpos and height to itemGroups.
1718
- if (curItem.molding.length) {
1719
- curItem.molding.forEach(md => {
1720
- // This code check whether the curItem can be grouped with selected Item in molding.
1721
- if (
1722
- MoldingUtils.tryMergeMDItem(
1723
- layer,
1724
- selectedItem,
1725
- curItem,
1726
- [selectedItem],
1727
- md
1728
- )
1729
- ) {
1730
- itemGroups.push({
1731
- base_item: curItem,
1732
- group: MoldingUtils.getItemGroupFromMolding(
1733
- layer,
1734
- curItem,
1735
- md
1736
- ),
1737
- molding: md
1738
- });
1739
- }
1740
- });
1741
- }
1742
- }
1743
- }
1744
- });
1745
- const updateSelectItemMolding = () => {
1746
- for (let i = 0; i < snappedItemGroup.length; i++) {
1747
- // check whether snapped item is same as selected item in layoutpos(Wall, Tall, Base)
1748
- if (
1749
- MoldingUtils.isSameMoldingLayoutpos(
1750
- selectedItem,
1751
- snappedItemGroup[i]
1752
- )
1753
- ) {
1754
- // check whether snapped item is same in location(same location type and height).
1755
- let delMoldings = [];
1756
- for (let k = 0; k < selectedItem.molding.length; k++) {
1757
- if (
1758
- MoldingUtils.isItemSameItemByLocation(
1759
- selectedItem,
1760
- snappedItemGroup[i],
1761
- selectedItem.molding[k].location_type
1762
- )
1763
- ) {
1764
- delMoldings.push(selectedItem.molding[k].itemID);
1765
- }
1766
- }
1767
- let resultMol = [];
1768
- selectedItem.molding.forEach(mol => {
1769
- if (!delMoldings.some(id => id === mol.itemID)) {
1770
- resultMol.push(mol);
1771
- }
1772
- });
1773
- state = state.setIn(
1774
- ['scene', 'layers', layerID, 'items', selectedItem.id, 'molding'],
1775
- resultMol
1776
- );
1777
- }
1778
- }
1779
- };
1780
- const emptyMoldingArray = () => {
1781
- let temp_items = [selectedItem];
1782
- let groupMoldings = [];
1783
- itemGroups.forEach(itGroup => {
1784
- groupMoldings.push(itGroup.molding);
1785
- itGroup.group.forEach(it => {
1786
- if (!temp_items.some(i => i.id === it.id)) {
1787
- temp_items.push(it);
1788
- }
1789
- });
1790
- });
1791
- temp_items.forEach(item => {
1792
- let finalMoldings = [];
1793
- let tempMoldings = state.getIn([
1794
- 'scene',
1795
- 'layers',
1796
- layerID,
1797
- 'items',
1798
- item.id,
1799
- 'molding'
1800
- ]);
1801
- tempMoldings.forEach(molding => {
1802
- if (!groupMoldings.some(ml => ml.itemID === molding.itemID)) {
1803
- finalMoldings.push(molding);
1804
- }
1805
- });
1806
- state = state.setIn(
1807
- ['scene', 'layers', layerID, 'items', item.id, 'molding'],
1808
- finalMoldings
1809
- );
1810
- });
1811
- updateSelectItemMolding();
1812
- };
1813
- const setLocationMolding = location => {
1814
- let locationMolding = itemGroups
1815
- .filter(it => it.molding.location_type === location)
1816
- .sort((a, b) => {
1817
- if (a.group.length === b.group.length) {
1818
- return (
1819
- GeometryUtils.pointsDistance(
1820
- a.base_item.x,
1821
- a.base_item.y,
1822
- selectedItem.x,
1823
- selectedItem.y
1824
- ) -
1825
- GeometryUtils.pointsDistance(
1826
- b.base_item.x,
1827
- b.base_item.y,
1828
- selectedItem.x,
1829
- selectedItem.y
1830
- )
1831
- );
1832
- } else {
1833
- return a.group.length - b.group.length;
1834
- }
1835
- });
1836
- if (locationMolding.length) {
1837
- let locationMoldingItems = MoldingUtils.getItemGroupFromMolding(
1838
- layer,
1839
- selectedItem,
1840
- locationMolding[0].molding
1841
- );
1842
- locationMoldingItems.forEach(item => {
1843
- let tempMoldings = state.getIn([
1844
- 'scene',
1845
- 'layers',
1846
- layerID,
1847
- 'items',
1848
- item.id,
1849
- 'molding'
1850
- ]);
1851
- if (
1852
- !tempMoldings.some(
1853
- mol => mol.itemID === locationMolding[0].molding.itemID
1854
- )
1855
- )
1856
- tempMoldings.push(locationMolding[0].molding);
1857
- state = state.setIn(
1858
- ['scene', 'layers', layerID, 'items', item.id, 'molding'],
1859
- tempMoldings
1860
- );
1861
- });
1862
- }
1863
- };
1864
- if (
1865
- itemGroups.length &&
1866
- layer.items.some(
1867
- it =>
1868
- MoldingUtils.isItemSnappedItem(selectedItem, it) &&
1869
- it.category === 'cabinet'
1870
- )
1871
- ) {
1872
- emptyMoldingArray();
1873
- for (let i = 0; i < MOLDING_LOCATIONS.length; i++) {
1874
- setLocationMolding(MOLDING_LOCATIONS[i]);
1875
- }
1876
- } else if (!itemGroups.length && selectedItem.molding.length) {
1877
- // Delete the selected Item's molding property if selItem attached the group that has no molding.
1878
- // If snapped items have no moldings and one item's property is same as selected Item, selected Item's molding should be deleted.
1879
- updateSelectItemMolding();
1880
- }
1881
- }
1882
- return { updatedState: state };
1883
- }
1884
-
1885
- static setBacksplashVisible(state, itemID, backsplashVisible) {
1886
- let { scene } = state;
1887
- let layerID = scene.get('selectedLayer');
1888
- let layer = scene.layers.get(layerID);
1889
- layer = layer.mergeIn(
1890
- ['items', itemID, 'backsplashVisible'],
1891
- backsplashVisible
1892
- );
1893
- // let cabinet_category = layer.getIn(["items"], itemID).toJS()[itemID].cabinet_category;
1894
- // if (cabinet_category && (cabinet_category.search("Sink") !== -1 || cabinet_category.search("End/Angle") !== -1)) {
1895
- // layer = layer.mergeIn(["items", itemID, "backsplashVisible"], true);
1896
- // } else {
1897
- // layer = layer.mergeIn(["items", itemID, "backsplashVisible"], false);
1898
- // }
1899
- state = state.merge({
1900
- scene: scene.mergeIn(['layers', layerID], layer)
1901
- });
1902
-
1903
- return { updatedState: state };
1904
- }
1905
- static setApplianceMaterial(state, material) {
1906
- let { scene } = state;
1907
- let layerID = scene.get('selectedLayer');
1908
- let layers = scene.layers.get(layerID);
1909
- let items = layers.items;
1910
- items.forEach(data => {
1911
- const dataJSON = data.toJS();
1912
- let itemID = dataJSON.id;
1913
- var newMaterial = {
1914
- metalness: material.metalness,
1915
- roughness: material.roughness
1916
- };
1917
- data = data.mergeIn(['applianceMaterial'], newMaterial);
1918
- layers = layers.mergeIn(['items', itemID], data);
1919
- state = state.merge({
1920
- scene: scene.mergeIn(['layers', layerID], layers)
1921
- });
1922
- });
1923
-
1924
- return { updatedState: state };
1925
- }
1926
-
1927
- static setModelling(state, molding) {
1928
- let { scene } = state;
1929
- let layerID = scene.get('selectedLayer');
1930
- let layers = scene.layers.get(layerID);
1931
- let items = layers.items;
1932
- items.forEach(data => {
1933
- const dataJSON = data.toJS();
1934
- let itemID = dataJSON.id;
1935
- });
1936
- state = state.merge({
1937
- scene: scene.mergeIn(['layers', layerID], layers)
1938
- });
1939
- return { updatedState: state };
1940
- }
1941
-
1942
- static updateItemsAltitude(state, layerID, itemID, value) {
1943
- let item = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
1944
- let properties = item.get('properties');
1945
- let altitude = properties.get('altitude');
1946
- let length = altitude.get('length');
1947
- let _length = altitude.get('_length');
1948
- let _unit = altitude.get('_unit');
1949
- length = length - value;
1950
- switch (_unit) {
1951
- case 'mm':
1952
- _length = length * 10;
1953
- break;
1954
- case 'm':
1955
- _length = length * 0.01;
1956
- break;
1957
- default:
1958
- _length = length;
1959
- }
1960
- if (length <= 0) {
1961
- length = 0;
1962
- _length = 0;
1963
- }
1964
- state = state.mergeIn(
1965
- ['scene', 'layers', layerID, 'items', itemID, 'properties', 'altitude'],
1966
- new Map({
1967
- length: length,
1968
- _length: _length,
1969
- _unit: _unit
1970
- })
1971
- );
1972
- return { updatedState: state };
1973
- }
1974
-
1975
- static createHole(state, layerID, type, lineID, offset, properties) {
1976
- let holeID = IDBroker.acquireID();
1977
- let hole = state.catalog.factoryElement(
1978
- type,
1979
- {
1980
- id: holeID,
1981
- url: state.catalog.getIn(['elements', type, 'info', 'url']),
1982
- type,
1983
- offset,
1984
- line: lineID
1985
- },
1986
- properties
1987
- );
1988
-
1989
- state = state.setIn(['scene', 'layers', layerID, 'holes', holeID], hole);
1990
- state = state.updateIn(
1991
- ['scene', 'layers', layerID, 'lines', lineID, 'holes'],
1992
- holes => holes && holes.push(holeID)
1993
- );
1994
- // get vertex order/////
1995
- let element = state.scene.layers.getIn([layerID, 'lines', lineID]);
1996
- let layer = state.getIn(['scene', 'layers', layerID]);
1997
- let vetName0 = element.vertices.get(0);
1998
- let vetName1 = element.vertices.get(1);
1999
- let verticesArray = [];
2000
- layer.areas.forEach(data => {
2001
- verticesArray.push(data.vertices.toJS());
2002
- });
2003
- for (let i = 0; i < verticesArray.length; i++) {
2004
- let vertices = verticesArray[i];
2005
- if (vertices.includes(vetName0) && vertices.includes(vetName1)) {
2006
- let index0 = vertices.indexOf(vetName0);
2007
- let index1 = vertices.indexOf(vetName1);
2008
- // if vertex order chanege//
2009
- if (index1 + 1 == index0) {
2010
- return { updatedState: state, hole };
2011
- }
2012
- if (index0 == 0 && index1 == vertices.length - 1) {
2013
- return { updatedState: state, hole };
2014
- }
2015
- // ////////////////////////
2016
- }
2017
- }
2018
- // ///////////////////////////
2019
- properties = hole.properties.toJS();
2020
- if (properties.hasOwnProperty('flip_orizzontal')) {
2021
- properties['flip_orizzontal'] = true;
2022
- }
2023
- if (properties.hasOwnProperty('flip_horizontal')) {
2024
- properties['flip_horizontal'] = true;
2025
- }
2026
- state = Hole.setJsProperties(
2027
- state,
2028
- layerID,
2029
- holeID,
2030
- properties
2031
- ).updatedState;
2032
- return { updatedState: state, hole };
2033
- }
2034
-
2035
- static toggleLoadingCabinet(state) {
2036
- let { scene } = state;
2037
- console.log('scene.isLoadingCabinet: ', !scene.isLoadingCabinet);
2038
- // scene = scene.set('isLoadingCabinet', !scene.isLoadingCabinet);
2039
- // state = state.set('scene', scene);
2040
- state = state.setIn(['scene', 'isLoadingCabinet'], !scene.isLoadingCabinet);
2041
- return { updatedState: state };
2042
- }
2043
- static endLoading(state) {
2044
- let { scene } = state;
2045
- state = state.setIn(['scene', 'loadFlag'], true);
2046
- return { updatedState: state };
2047
- }
2048
- }
2049
-
2050
- export { Item as default };