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
@@ -1,1830 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import {
4
- ReactSVGPanZoom,
5
- TOOL_AUTO,
6
- TOOL_NONE,
7
- TOOL_PAN,
8
- TOOL_ZOOM_IN,
9
- TOOL_ZOOM_OUT,
10
- zoom
11
- } from 'react-svg-pan-zoom';
12
- import * as constants from '../../constants';
13
- import {
14
- DECIMAL_PLACES_2,
15
- LINE_THICKNESS,
16
- MIN_ANGLE_DISALLOW_DRAW_WALL,
17
- MODE_ELEVATION_VIEW,
18
- MODE_IDLE,
19
- UNIT_ANGLE
20
- } from '../../constants';
21
- import State from './state';
22
- import * as SharedStyle from '../../shared-style';
23
- import { RulerX, RulerY } from './export';
24
- import { GeometryUtils } from '../../utils/export';
25
- import FormNumberInput from '../style/form-number-input';
26
- import convert from 'convert-units';
27
- import { Map } from 'immutable';
28
- import { formatNumber } from '../../../src/utils/math';
29
- import { isEmpty } from '../../utils/helper';
30
-
31
- // variables
32
- let pinFlag = false;
33
- let sFlag = false; //for all object move
34
- let sPoint = {}; //for all object move
35
- let endPoint = {};
36
- let current_sel_obj_id = null;
37
- let allItemRect;
38
- let allItemSnap;
39
- let allLines;
40
- let allLineRects;
41
- let allLineSnap;
42
- let allRect;
43
- let holeRect;
44
- let allArea;
45
-
46
- // /////////
47
- function mode2Tool(mode) {
48
- if (pinFlag) {
49
- return TOOL_NONE;
50
- }
51
- switch (mode) {
52
- case constants.MODE_2D_PAN:
53
- return TOOL_PAN;
54
- case constants.MODE_2D_ZOOM_IN:
55
- return TOOL_ZOOM_IN;
56
- case constants.MODE_2D_ZOOM_OUT:
57
- return TOOL_ZOOM_OUT;
58
- case constants.MODE_IDLE:
59
- return TOOL_AUTO;
60
- default:
61
- return TOOL_NONE;
62
- }
63
- }
64
-
65
- function mode2PointerEvents(mode) {
66
- switch (mode) {
67
- case constants.MODE_DRAWING_LINE:
68
- case constants.MODE_DRAWING_HOLE:
69
- case constants.MODE_DRAWING_ITEM:
70
- case constants.MODE_DRAGGING_HOLE:
71
- case constants.MODE_DRAGGING_ITEM:
72
- case constants.MODE_DRAGGING_LINE:
73
- case constants.MODE_DRAGGING_VERTEX:
74
- return { pointerEvents: 'none' };
75
-
76
- default:
77
- return {};
78
- }
79
- }
80
-
81
- function mode2Cursor(mode) {
82
- switch (mode) {
83
- case constants.MODE_DRAGGING_HOLE:
84
- case constants.MODE_DRAGGING_LINE:
85
- case constants.MODE_DRAGGING_VERTEX:
86
- case constants.MODE_DRAGGING_ITEM:
87
- return { cursor: 'move' };
88
-
89
- case constants.MODE_ROTATING_ITEM:
90
- return { cursor: 'ew-resize' };
91
-
92
- case constants.MODE_WAITING_DRAWING_LINE:
93
- case constants.MODE_DRAWING_LINE:
94
- return { cursor: 'crosshair' };
95
- default:
96
- return { cursor: 'default' };
97
- }
98
- }
99
-
100
- function mode2DetectAutopan(mode) {
101
- switch (mode) {
102
- case constants.MODE_DRAWING_LINE:
103
- case constants.MODE_DRAGGING_LINE:
104
- case constants.MODE_DRAGGING_VERTEX:
105
- case constants.MODE_DRAGGING_HOLE:
106
- case constants.MODE_DRAGGING_ITEM:
107
- case constants.MODE_DRAWING_HOLE:
108
- case constants.MODE_DRAWING_ITEM:
109
- return true;
110
-
111
- default:
112
- return false;
113
- }
114
- }
115
-
116
- function extractElementData(node) {
117
- while (
118
- !node.attributes.getNamedItem('data-element-root') &&
119
- node.tagName !== 'svg'
120
- ) {
121
- node = node.parentNode;
122
- }
123
- if (node.tagName === 'svg') return null;
124
-
125
- return {
126
- length: node.attributes.getNamedItem('data-length')
127
- ? parseFloat(node.attributes.getNamedItem('data-length').value)
128
- : 0,
129
- part: node.attributes.getNamedItem('data-part')
130
- ? node.attributes.getNamedItem('data-part').value
131
- : undefined,
132
- layer: node.attributes.getNamedItem('data-layer').value,
133
- prototype: node.attributes.getNamedItem('data-prototype').value,
134
- selected: node.attributes.getNamedItem('data-selected').value === 'true',
135
- id: node.attributes.getNamedItem('data-id').value,
136
- direct: node.attributes.getNamedItem('data-direct')
137
- ? node.attributes.getNamedItem('data-direct').value
138
- : 0
139
- };
140
- }
141
-
142
- export default function Viewer2D(
143
- { state, width, height, setToolbar, replaceCabinet },
144
- {
145
- viewer2DActions,
146
- linesActions,
147
- holesActions,
148
- verticesActions,
149
- itemsActions,
150
- areaActions,
151
- projectActions,
152
- catalog
153
- }
154
- ) {
155
- const [rulerEdit, setRulerEdit] = useState(null);
156
- const [rulerEditID, setRulerEditID] = useState(null);
157
- const Viewer = useRef(null);
158
-
159
- let { viewer2D, mode, scene } = state;
160
-
161
- // let relatedLines = [];
162
- const [relatedLines, setRelatedLines] = useState([]);
163
- const [drawStart, setdrawStart] = useState(false);
164
-
165
- useEffect(() => {
166
- // move viewer point to center
167
- let selectedLayer = state.scene.layers.get(state.scene.selectedLayer);
168
-
169
- if (!selectedLayer) {
170
- return;
171
- }
172
-
173
- const vertices = selectedLayer.vertices;
174
-
175
- if (vertices.isEmpty()) {
176
- return;
177
- }
178
-
179
- let bottomX = 0,
180
- bottomY = 100000,
181
- topX = 100000,
182
- topY = 0;
183
-
184
- vertices.forEach(vertex => {
185
- if (bottomX < vertex.x) bottomX = vertex.x;
186
- if (bottomY > vertex.y) bottomY = vertex.y;
187
- if (topX > vertex.x) topX = vertex.x;
188
- if (topY < vertex.y) topY = vertex.y;
189
- });
190
-
191
- let moveX = topX + (bottomX - topX) / 2;
192
- let moveY = 2000 - (bottomY + (topY - bottomY) / 2);
193
-
194
- Viewer.current.setPointOnViewerCenter(moveX, moveY, viewer2D.get('a'));
195
- }, []);
196
-
197
- let layerID = scene.selectedLayer;
198
- let wall_thickness = LINE_THICKNESS / 2;
199
- const layer = scene.getIn(['layers', layerID]);
200
-
201
- let mapCursorPosition = ({ x, y }) => {
202
- return { x, y: -y + scene.height };
203
- };
204
- // let pinBackColor = pinFlag ? "#4488ff" : "black";
205
- // let topRightImg = state.mode == MODE_IDLE || state.mode == MODE_2D_PAN ? "/assets/img/svg/topbar/edit_inactive.svg" : "/assets/img/svg/topbar/edit_active.svg";
206
- // let topBtnAction = state.mode == MODE_IDLE || state.mode == MODE_2D_PAN ? () => linesActions.selectToolDrawingLine("wall") : () => projectActions.setMode(MODE_IDLE);
207
-
208
- let prepareSnap = () => {
209
- let layerID = scene.selectedLayer;
210
- let layer = scene.layers.get(layerID);
211
-
212
- allLines = GeometryUtils.getAllLines(layer);
213
- allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
214
- allItemRect = GeometryUtils.getAllItems(scene, catalog, allLineRects);
215
- allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
216
- allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);
217
- allRect = allItemRect.others.concat(allLineRects);
218
- allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
219
- allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
220
- allArea = GeometryUtils.getAllArea(layer);
221
- };
222
-
223
- let updateRulerDistAttribute = (elementData, value) => {
224
- let newVal = value.get('length');
225
- let oldVal = elementData.length;
226
- let direct = elementData.direct;
227
-
228
- const thisItem = scene
229
- .getIn(['layers', elementData.layer, 'items', elementData.id])
230
- .toJS();
231
-
232
- let oldX = thisItem.x;
233
- let oldY = thisItem.y;
234
- let oldRotRad = (thisItem.rotation / 180) * Math.PI;
235
-
236
- let rotRad = oldRotRad + (direct / 180) * Math.PI;
237
- let delta = oldVal - newVal;
238
-
239
- let newX = oldX + delta * Math.cos(rotRad);
240
- let newY = oldY + delta * Math.sin(rotRad);
241
-
242
- itemsActions.updateDraggingItemChanged(
243
- newX,
244
- newY,
245
- elementData.layer,
246
- elementData.id
247
- );
248
-
249
- setRulerEdit(null);
250
- };
251
-
252
- let updateangleChangeAttribute = (elementData, value) => {
253
- let verArr = elementData.id.split(',');
254
- let oldAngle = elementData.length;
255
- let newAngle = value.getIn(['_length']);
256
- let cenId = verArr[0];
257
- let verId = verArr[1];
258
- let x0 = state.scene.getIn(['layers', layerID, 'vertices', verArr[0], 'x']);
259
- let y0 = state.scene.getIn(['layers', layerID, 'vertices', verArr[0], 'y']);
260
- let x1 = state.scene.getIn(['layers', layerID, 'vertices', verArr[1], 'x']);
261
- let y1 = state.scene.getIn(['layers', layerID, 'vertices', verArr[1], 'y']);
262
- let x, y, delta;
263
-
264
- delta = newAngle - oldAngle;
265
-
266
- if (verArr[2] === 'true') {
267
- delta = -delta;
268
- }
269
-
270
- x =
271
- (x1 - x0) * Math.cos((delta * Math.PI) / 180) -
272
- (y1 - y0) * Math.sin((delta * Math.PI) / 180) +
273
- x0;
274
- y =
275
- (x1 - x0) * Math.sin((delta * Math.PI) / 180) +
276
- (y1 - y0) * Math.cos((delta * Math.PI) / 180) +
277
- y0;
278
-
279
- setRulerEdit(null);
280
- verticesActions.beginDraggingVertex(
281
- elementData.layer,
282
- verArr[1],
283
- x,
284
- y,
285
- state.snapMask
286
- );
287
- verticesActions.updateDraggingVertex(x, y, state.snapMask);
288
- verticesActions.endDraggingVertex(x, y, state.snapMask);
289
- };
290
-
291
- let updateRulerAttribute = (elementData, value) => {
292
- const selectedLine = scene
293
- .getIn(['layers', elementData.layer, 'lines', elementData.id])
294
- .toJS();
295
-
296
- let v_0 = scene.getIn([
297
- 'layers',
298
- elementData.layer,
299
- 'vertices',
300
- selectedLine.vertices[0]
301
- ]);
302
-
303
- let v_1 = scene.getIn([
304
- 'layers',
305
- elementData.layer,
306
- 'vertices',
307
- selectedLine.vertices[1]
308
- ]);
309
-
310
- let [v_a, v_b] = GeometryUtils.orderVertices([v_0, v_1]);
311
- let v_b_new = GeometryUtils.extendLine(
312
- v_a.x,
313
- v_a.y,
314
- v_b.x,
315
- v_b.y,
316
- value.get('length'),
317
- 2
318
- );
319
-
320
- // Blocked function that as wall changed, opposite wall should changed together.
321
- // let layer = scene.getIn(['layers', elementData.layer]);
322
- // let allLines = layer.lines.toArray()
323
- // let relatedLine = allLines.filter(line => { return line.vertices.toArray().includes(v_b.id) && line.id != selectedLine.id })[0];
324
- // let relatedVertexID = relatedLine && (relatedLine.vertices.toArray()[0] == v_b.id ? relatedLine.vertices.toArray()[1] : relatedLine.vertices.toArray()[0]);
325
- // let v_d = relatedVertexID && layer.getIn(['vertices', relatedVertexID]);
326
- // let delta = {
327
- // x : v_b_new.x - v_b.x,
328
- // y : v_b_new.y - v_b.y
329
- // };
330
- // let newPosition = {
331
- // x : v_d.x + delta.x,
332
- // y : v_d.y + delta.y
333
- // }
334
-
335
- var attributesData = {
336
- // (v_0 === v_a ? 'vertexTwo' : 'vertexOne') : v_b.merge(v_b_new)),
337
- lineLength: value
338
- };
339
- if (v_0 === v_a) {
340
- attributesData = {
341
- ...attributesData,
342
- vertexTwo: v_b.merge(v_b_new),
343
- vertexOne: v_a
344
- };
345
- } else {
346
- attributesData = {
347
- ...attributesData,
348
- vertexOne: v_b.merge(v_b_new),
349
- vertexTwo: v_a
350
- };
351
- }
352
- let attributesFormData = new Map({
353
- ...attributesData
354
- });
355
- setRulerEdit(null);
356
- projectActions.setLinesAttributes(attributesFormData, true, {
357
- layerID: elementData.layer,
358
- lineID: elementData.id
359
- });
360
-
361
- // Blocked function that as wall changed, opposite wall should changed together.
362
- // verticesActions.beginDraggingVertex(elementData.layer, relatedVertexID, newPosition.x, newPosition.y, state.snapMask);
363
- // verticesActions.updateDraggingVertex(newPosition.x, newPosition.y, state.snapMask);
364
- // verticesActions.endDraggingVertex(newPosition.x, newPosition.y, state.snapMask);
365
- };
366
-
367
- let updateTwoHoleRulerAttribute = (elementData, value) => {
368
- let elementIds = elementData.id.split(',');
369
- elementData.id = elementIds[1];
370
- elementData.length /= 2;
371
- updateLeftHoleRulerAttribute(elementData, value);
372
- elementData.id = elementIds[0];
373
- updateRightHoleRulerAttribute(elementData, value);
374
- };
375
-
376
- let updateLeftHoleRulerAttribute = (elementData, value) => {
377
- let newVal = value.get('length');
378
- let oldVal = elementData.length;
379
- const thisItem = scene
380
- .getIn(['layers', elementData.layer, 'holes', elementData.id])
381
- .toJS();
382
- let oldX = thisItem.x;
383
- let oldY = thisItem.y;
384
- let oldRotRad = thisItem.rotation;
385
- let delta = oldVal - newVal;
386
- let newX = oldX - delta * Math.cos(oldRotRad);
387
- let newY = oldY - delta * Math.sin(oldRotRad);
388
- holesActions.beginDraggingHole(
389
- elementData.layer,
390
- elementData.id,
391
- newX,
392
- newY
393
- );
394
- holesActions.updateDraggingHoleChanged(
395
- newX,
396
- newY,
397
- elementData.layer,
398
- elementData.id
399
- );
400
- holesActions.endDraggingHole(newX, newY);
401
- setRulerEdit(null);
402
- };
403
-
404
- let updateHoleRulerAttribute = (elementData, value) => {
405
- let newVal = value.get('length');
406
- const thisItem = scene
407
- .getIn(['layers', elementData.layer, 'holes', elementData.id])
408
- .toJS();
409
- let oldX = thisItem.x;
410
- let oldY = thisItem.y;
411
- holesActions.beginDraggingHole(
412
- elementData.layer,
413
- elementData.id,
414
- oldX,
415
- oldY
416
- );
417
- holesActions.updateDraggingHoleRulerChanged(
418
- newVal,
419
- elementData.layer,
420
- elementData.id
421
- );
422
- holesActions.endDraggingHole(oldX, oldY);
423
- setRulerEdit(null);
424
- };
425
-
426
- let updateRightHoleRulerAttribute = (elementData, value) => {
427
- let newVal = value.get('length');
428
- let oldVal = elementData.length;
429
- const thisItem = scene
430
- .getIn(['layers', elementData.layer, 'holes', elementData.id])
431
- .toJS();
432
- let oldX = thisItem.x;
433
- let oldY = thisItem.y;
434
- let oldRotRad = thisItem.rotation;
435
- let delta = oldVal - newVal;
436
- let newX = oldX + delta * Math.cos(oldRotRad);
437
- let newY = oldY + delta * Math.sin(oldRotRad);
438
- holesActions.beginDraggingHole(
439
- elementData.layer,
440
- elementData.id,
441
- newX,
442
- newY
443
- );
444
- holesActions.updateDraggingHoleChanged(
445
- newX,
446
- newY,
447
- elementData.layer,
448
- elementData.id
449
- );
450
- holesActions.endDraggingHole(newX, newY);
451
- setRulerEdit(null);
452
- };
453
-
454
- const getRelatedLines = (tlines, drawingLine, vertices, lines) => {
455
- // if (drawingLine.vertices[0] !== drawingLine.vertices[1]) {
456
- for (let i = 0; i < drawingLine.vertices.length; i++) {
457
- let vertex = vertices[drawingLine.vertices[i]];
458
- for (let j = 0; j < vertex.lines.length; j++) {
459
- if (vertex.lines[j] !== drawingLine.id) {
460
- if (!tlines.some(line => line.id === lines[vertex.lines[j]].id)) {
461
- tlines.push(lines[vertex.lines[j]]);
462
- }
463
- }
464
- }
465
- }
466
- // }
467
- };
468
-
469
- const getEndPoint = (vertices, x, y, mode) => {
470
- let selLineID = state
471
- .getIn(['scene', 'layers', layerID, 'selected', 'lines'])
472
- .first();
473
- if (isEmpty(selLineID)) {
474
- return {
475
- isEndDrag: true,
476
- x: x,
477
- y: y
478
- };
479
- }
480
- let draggingLine = state
481
- .getIn(['scene', 'layers', layerID, 'lines', selLineID])
482
- .toJS();
483
- let allLines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
484
- let dragVertexId = state.getIn(['draggingSupport', 'vertexID']);
485
- dragVertexId = !isEmpty(dragVertexId)
486
- ? dragVertexId
487
- : draggingLine.vertices[1];
488
- let vtx, vty;
489
- let stepUnit = false;
490
- vtx = vertices[dragVertexId].x;
491
- vty = vertices[dragVertexId].y;
492
- if (!vertices[dragVertexId].lines.some(line => line !== draggingLine.id)) {
493
- stepUnit = true;
494
- }
495
- let endDrag = [];
496
- if (!isEmpty(relatedLines) && mode !== 'DRAGGING_LINE') {
497
- vertices[dragVertexId].x = x;
498
- vertices[dragVertexId].y = y;
499
- }
500
- let absAngle, lineAngle;
501
- if (draggingLine.vertices[0] !== draggingLine.vertices[1]) {
502
- for (let i = 0; i < relatedLines.length; i++) {
503
- let line = relatedLines[i];
504
- lineAngle = GeometryUtils.angleBetweenTwoLines(
505
- line,
506
- draggingLine,
507
- vertices
508
- );
509
- absAngle = Math.abs(lineAngle);
510
- let tmpRelated = [];
511
- GeometryUtils.getRelatedLines(
512
- tmpRelated,
513
- line,
514
- vertices,
515
- allLines,
516
- draggingLine.id
517
- );
518
- for (let j = 0; j < tmpRelated.length; j++) {
519
- let tmpAngle = Math.abs(
520
- GeometryUtils.angleBetweenTwoLines(tmpRelated[j], line, vertices)
521
- );
522
- if (
523
- tmpAngle < MIN_ANGLE_DISALLOW_DRAW_WALL ||
524
- tmpAngle > 360 - MIN_ANGLE_DISALLOW_DRAW_WALL
525
- ) {
526
- endDrag.push(false);
527
- } else endDrag.push(true);
528
- }
529
- if (
530
- absAngle < MIN_ANGLE_DISALLOW_DRAW_WALL ||
531
- absAngle > 360 - MIN_ANGLE_DISALLOW_DRAW_WALL
532
- ) {
533
- endDrag.push(false);
534
- } else endDrag.push(true);
535
- }
536
- }
537
-
538
- if (!endDrag.some(flag => flag === false)) {
539
- vtx = x;
540
- vty = y;
541
- } else {
542
- let rest = MIN_ANGLE_DISALLOW_DRAW_WALL - absAngle;
543
- // the origin point of rotation(snapping)
544
- let originVerId = draggingLine.vertices.findIndex(
545
- vertice => vertice !== dragVertexId
546
- );
547
- originVerId =
548
- originVerId < 0
549
- ? draggingLine.vertices[0]
550
- : draggingLine.vertices[originVerId];
551
- if (stepUnit) {
552
- let ox = vertices[originVerId].x;
553
- let oy = vertices[originVerId].y;
554
- // determine the direction of rotation.
555
- rest = lineAngle > 0 ? -rest : rest;
556
- // rotate the current point to last point around the first point of drawing line.
557
- let res = GeometryUtils.rotatePointAroundPoint(x, y, ox, oy, rest);
558
- vtx = res.x;
559
- vty = res.y;
560
- }
561
- }
562
-
563
- // angle snapping as a value of UNIT_ANGLE
564
- if (
565
- !endDrag.some(flag => flag === false) &&
566
- !isEmpty(absAngle) &&
567
- absAngle % UNIT_ANGLE !== 0 &&
568
- stepUnit
569
- ) {
570
- let result = GeometryUtils.snapAngleByUnit(
571
- lineAngle,
572
- vertices,
573
- draggingLine,
574
- vtx,
575
- vty,
576
- dragVertexId
577
- );
578
- vtx = result.x;
579
- vty = result.y;
580
- }
581
-
582
- let result = {
583
- isEndDrag: endDrag,
584
- x: vtx,
585
- y: vty
586
- };
587
- return result;
588
- };
589
-
590
- const getProperties = (item, property) => {
591
- if (!item?.properties?.getIn) return 0;
592
- const length = item.properties.getIn([property, '_length']);
593
- const unit = item.properties.getIn([property, '_unit']);
594
- return length && unit ? convert(length).from(unit).to('cm') : 0;
595
- };
596
-
597
- const point = (x, y) => ({ x, y });
598
-
599
- const getDistant = (x, y, rotRad, curItemInfo, allRect) => {
600
- const center_h = (3 * height) / 8;
601
- const center_x1 = x - center_h * Math.sin(rotRad);
602
- const center_y1 = y + center_h * Math.cos(rotRad);
603
-
604
- const pointArray = [];
605
-
606
- curItemInfo.rectCenterPoint.forEach(centerpoint => {
607
- if (!Array.isArray(centerpoint) || centerpoint.length < 2) return;
608
-
609
- const [pt, angle] = centerpoint;
610
- if (!pt) return;
611
-
612
- // line through centerpoint and reference center
613
- const rectLine =
614
- angle === 180 || angle === 0
615
- ? GeometryUtils.linePassingThroughTwoPoints(
616
- pt.x,
617
- pt.y,
618
- center_x1,
619
- center_y1
620
- )
621
- : GeometryUtils.linePassingThroughTwoPoints(pt.x, pt.y, x, y);
622
-
623
- if (!rectLine) return;
624
-
625
- let minDist;
626
- allRect.forEach(linerect => {
627
- if (!linerect?.rect || linerect.rect.length < 4) return;
628
-
629
- const p0 = GeometryUtils.clone_point(linerect.rect[2]);
630
- const p1 = GeometryUtils.clone_point(linerect.rect[3]);
631
- if (!p0 || !p1 || (p0.x === p1.x && p0.y === p1.y)) return;
632
-
633
- const lineFn = GeometryUtils.linePassingThroughTwoPoints(
634
- p0.x,
635
- p0.y,
636
- p1.x,
637
- p1.y
638
- );
639
- if (!lineFn) return;
640
-
641
- const ip = GeometryUtils.twoLinesIntersection(
642
- lineFn.a,
643
- lineFn.b,
644
- lineFn.c,
645
- rectLine.a,
646
- rectLine.b,
647
- rectLine.c
648
- );
649
- if (!ip) return;
650
-
651
- // intersection must lie within line segment
652
- const segLen = GeometryUtils.pointsDistance(p0.x, p0.y, p1.x, p1.y);
653
- if (
654
- segLen <= GeometryUtils.pointsDistance(p0.x, p0.y, ip.x, ip.y) ||
655
- segLen <= GeometryUtils.pointsDistance(p1.x, p1.y, ip.x, ip.y)
656
- )
657
- return;
658
-
659
- // ensure intersection is farther than pt→center
660
- const distToCenter = GeometryUtils.pointsDistance(ip.x, ip.y, x, y);
661
- const baseDist = GeometryUtils.pointsDistance(pt.x, pt.y, ip.x, ip.y);
662
- if (distToCenter <= baseDist) return;
663
-
664
- const candidate = baseDist;
665
- minDist =
666
- minDist !== undefined ? Math.min(minDist, candidate) : candidate;
667
- });
668
-
669
- pointArray.push([minDist ?? 0, angle]);
670
- });
671
-
672
- return pointArray;
673
- };
674
-
675
- const getCalcRectFromItem = item => {
676
- if (!item?.pos || !item?.size) return { rectCenterPoint: [] };
677
-
678
- const { x, y } = item.pos;
679
- const w = item.size.width / 2;
680
- const h = item.size.height / 2;
681
- const rotRad = item.rotRad;
682
- const mh = (3 * h) / 4;
683
-
684
- const mx = x - w * Math.cos(rotRad) - mh * Math.sin(rotRad);
685
- const my = y - w * Math.sin(rotRad) + mh * Math.cos(rotRad);
686
- const m2x = x + w * Math.cos(rotRad) - mh * Math.sin(rotRad);
687
- const m2y = y + w * Math.sin(rotRad) + mh * Math.cos(rotRad);
688
- const m3x = x - h * Math.sin(rotRad);
689
- const m3y = y + h * Math.cos(rotRad);
690
- const m1x = x + h * Math.sin(rotRad);
691
- const m1y = y - h * Math.cos(rotRad);
692
-
693
- return {
694
- rectCenterPoint: [
695
- [point(mx, my), 180],
696
- [point(m1x, m1y), -90],
697
- [point(m2x, m2y), 0],
698
- [point(m3x, m3y), 90]
699
- ]
700
- };
701
- };
702
-
703
- const calcDistanceArray = () => {
704
- const items = layer?.get('items');
705
- if (!items) return;
706
-
707
- items.forEach(item => {
708
- if (item?.selected === true) {
709
- const { x, y, rotation, id } = item;
710
- if (x == null || y == null) return;
711
-
712
- const val = {
713
- pos: { x, y },
714
- rotRad: (rotation / 180) * Math.PI
715
- };
716
-
717
- const width = getProperties(item, 'width');
718
- const depth = getProperties(item, 'depth');
719
- val.size = { width, height: depth };
720
-
721
- // collect geometry
722
- const allLines = GeometryUtils.getAllLines(layer) || [];
723
- const allLineRects =
724
- GeometryUtils.buildRectFromLines(layer, allLines) || [];
725
- const allItemRect = GeometryUtils.getAllItems(
726
- scene,
727
- catalog,
728
- allLineRects
729
- ) || { others: [] };
730
- const allRect = [...(allItemRect.others || []), ...allLineRects];
731
-
732
- // current item
733
- const curItemInfo = getCalcRectFromItem(val);
734
- const pointArray = getDistant(x, y, val.rotRad, curItemInfo, allRect);
735
-
736
- // store results safely
737
- if (Array.isArray(pointArray)) {
738
- itemsActions.storeDistArray(layerID, id, pointArray);
739
- }
740
- }
741
- });
742
- };
743
-
744
- let onMouseMove = viewerEvent => {
745
- //workaround that allow imageful component to work
746
-
747
- // let evt = new Event('mousemove-planner-event');
748
- // evt.viewerEvent = viewerEvent;
749
- // document.dispatchEvent(evt);
750
- let { x, y } = mapCursorPosition(viewerEvent);
751
- projectActions.updateMouseCoord({ x, y });
752
- if (sFlag) {
753
- let differs = { x: x - sPoint.x, y: y - sPoint.y };
754
- projectActions.selectAll(differs);
755
- } else
756
- switch (mode) {
757
- case constants.MODE_DRAWING_LINE:
758
- // check whether the drawing line is started.
759
- if (drawStart || state.getIn(['scene', 'setLineAttributes'])) {
760
- let lineID = state
761
- .getIn(['scene', 'layers', layerID, 'selected', 'lines'])
762
- .first();
763
-
764
- let vertices = state
765
- .getIn(['scene', 'layers', layerID, 'vertices'])
766
- .toJS();
767
- let lines = state
768
- .getIn(['scene', 'layers', layerID, 'lines'])
769
- .toJS();
770
- let drawingLine = state
771
- .getIn(['scene', 'layers', layerID, 'lines', lineID])
772
- .toJS();
773
- let tlines = [];
774
-
775
- setdrawStart(false);
776
- // get the lines that have same points with drawing line.
777
- getRelatedLines(tlines, drawingLine, vertices, lines);
778
- setRelatedLines(tlines);
779
- linesActions.updateDrawingLine(x, y, tlines, state.snapMask);
780
- } else {
781
- linesActions.updateDrawingLine(x, y, relatedLines, state.snapMask);
782
- }
783
- // Blocked 90 degree snap.
784
- // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
785
- // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
786
- // let dx = Math.abs(x - prevVertex.x);
787
- // let dy = Math.abs(y - prevVertex.y);
788
- // if (dx > dy) y = prevVertex.y
789
- // else x = prevVertex.x;
790
- break;
791
-
792
- case constants.MODE_DRAWING_HOLE:
793
- holesActions.updateDrawingHole(layerID, x, y);
794
- break;
795
-
796
- case constants.MODE_DRAWING_ITEM:
797
- calcDistanceArray();
798
- let layer = scene.layers.get(layerID);
799
- let flag = false;
800
- layer.items.some(item => {
801
- if (item.selected) {
802
- item.counterTop.uri = layer.counterTop.uri;
803
- current_sel_obj_id = item.id;
804
- flag = true;
805
- }
806
- });
807
- if (current_sel_obj_id === null || !flag) {
808
- itemsActions.updateDrawingItem(layerID, x, y);
809
- endPoint.x = x;
810
- endPoint.y = y;
811
- } else {
812
- prepareSnap();
813
- var { nx, ny, rot, rotRad } = GeometryUtils.calcSnap(
814
- allItemRect,
815
- allItemSnap,
816
- allLineRects,
817
- allLineSnap,
818
- allRect,
819
- x,
820
- y,
821
- allArea
822
- );
823
- let val = {
824
- pos: { x, y },
825
- rotRad,
826
- size: allItemRect.cur && allItemRect.cur.size,
827
- layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
828
- is_corner: allItemRect.cur && allItemRect.cur.is_corner
829
- };
830
- let { isSect, snap } = GeometryUtils.getAllHoleRect(scene, val);
831
- if (!isEmpty(snap) && isSect) {
832
- if (snap.length == 1) val.pos = { x: snap[0].x, y: snap[0].y };
833
- else {
834
- if (
835
- (snap[0].x - x) * (snap[0].x - x) +
836
- (snap[0].y - y) * (snap[0].y - y) <
837
- (snap[1].x - x) * (snap[1].x - x) +
838
- (snap[1].y - y) * (snap[1].y - y)
839
- )
840
- val.pos = { x: snap[0].x, y: snap[0].y };
841
- else val.pos = { x: snap[1].x, y: snap[1].y };
842
- }
843
- let interSect = GeometryUtils.validInterSect(
844
- allItemRect.others,
845
- val
846
- );
847
- if (interSect) {
848
- nx = val.pos.x;
849
- ny = val.pos.y;
850
- }
851
- }
852
-
853
- val.pos = { x: nx, y: ny };
854
- let isrectSect = GeometryUtils.validInterSect(
855
- allItemRect.others,
856
- val
857
- );
858
- if (isrectSect && isSect) {
859
- itemsActions.updateDraggingItemChanged(
860
- nx,
861
- ny,
862
- layerID,
863
- current_sel_obj_id
864
- );
865
- itemsActions.updateRotatingItemChanged(
866
- rot,
867
- layerID,
868
- current_sel_obj_id
869
- );
870
- endPoint.x = nx;
871
- endPoint.y = ny;
872
- }
873
- if (
874
- (allItemRect.cur &&
875
- allItemRect.cur.itemInfo.name.includes('Cook Top')) ||
876
- (allItemRect.cur &&
877
- allItemRect.cur.itemInfo.name.includes('cabinet'))
878
- ) {
879
- itemsActions.updateDraggingItemChanged(
880
- nx,
881
- ny,
882
- layerID,
883
- current_sel_obj_id
884
- );
885
- itemsActions.updateRotatingItemChanged(
886
- rot,
887
- layerID,
888
- current_sel_obj_id
889
- );
890
- endPoint.x = nx;
891
- endPoint.y = ny;
892
- }
893
- if (
894
- (allItemRect.cur &&
895
- allItemRect.cur.itemInfo.name.includes('Hood')) ||
896
- (allItemRect.cur &&
897
- allItemRect.cur.itemInfo.name.includes('Range')) ||
898
- (allItemRect.cur &&
899
- allItemRect.cur.itemInfo.name.includes('Cook Top'))
900
- ) {
901
- itemsActions.updateDraggingItemChanged(
902
- nx,
903
- ny,
904
- layerID,
905
- current_sel_obj_id
906
- );
907
- itemsActions.updateRotatingItemChanged(
908
- rot,
909
- layerID,
910
- current_sel_obj_id
911
- );
912
- endPoint.x = nx;
913
- endPoint.y = ny;
914
- }
915
- }
916
- break;
917
-
918
- case constants.MODE_DRAGGING_HOLE:
919
- holesActions.updateDraggingHole(x, y);
920
- break;
921
-
922
- case constants.MODE_DRAGGING_LINE:
923
- linesActions.updateDraggingLine(x, y, relatedLines, state.snapMask);
924
- break;
925
-
926
- case constants.MODE_DRAGGING_VERTEX:
927
- let vertices = state
928
- .getIn(['scene', 'layers', layerID, 'vertices'])
929
- .toJS();
930
- let result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
931
- verticesActions.updateDraggingVertex(
932
- result.x,
933
- result.y,
934
- state.snapMask
935
- );
936
- break;
937
-
938
- case constants.MODE_DRAGGING_ITEM:
939
- calcDistanceArray();
940
- prepareSnap();
941
- var { nx, ny, rot, rotRad } = GeometryUtils.calcSnap(
942
- allItemRect,
943
- allItemSnap,
944
- allLineRects,
945
- allLineSnap,
946
- allRect,
947
- x,
948
- y,
949
- allArea
950
- );
951
- let val = {
952
- pos: { x, y },
953
- rotRad,
954
- size: allItemRect.cur && allItemRect.cur.size,
955
- layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
956
- is_corner: allItemRect.cur && allItemRect.cur.is_corner
957
- };
958
- let { isSect, snap } = GeometryUtils.getAllHoleRect(scene, val);
959
- if (!isEmpty(snap) && isSect) {
960
- if (snap.length == 1) val.pos = { x: snap[0].x, y: snap[0].y };
961
- else if (snap.length == 2) {
962
- if (
963
- (snap[0].x - x) * (snap[0].x - x) +
964
- (snap[0].y - y) * (snap[0].y - y) <
965
- (snap[1].x - x) * (snap[1].x - x) +
966
- (snap[1].y - y) * (snap[1].y - y)
967
- )
968
- val.pos = { x: snap[0].x, y: snap[0].y };
969
- else val.pos = { x: snap[1].x, y: snap[1].y };
970
- }
971
- let interSect = GeometryUtils.validInterSect(
972
- allItemRect.others,
973
- val
974
- );
975
- if (interSect) {
976
- nx = val.pos.x;
977
- ny = val.pos.y;
978
- }
979
- }
980
-
981
- val.pos = { x: nx, y: ny };
982
- let isrectSect = GeometryUtils.validInterSect(
983
- allItemRect.others,
984
- val
985
- );
986
- if (isrectSect && isSect) {
987
- itemsActions.updateDraggingItemChanged(
988
- nx,
989
- ny,
990
- layerID,
991
- current_sel_obj_id
992
- );
993
- itemsActions.updateRotatingItemChanged(
994
- rot,
995
- layerID,
996
- current_sel_obj_id
997
- );
998
- }
999
- if (
1000
- (allItemRect.cur &&
1001
- allItemRect.cur.itemInfo.name.includes('Cook Top')) ||
1002
- (allItemRect.cur &&
1003
- allItemRect.cur.itemInfo.name.includes('Cabinet'))
1004
- ) {
1005
- itemsActions.updateDraggingItemChanged(
1006
- nx,
1007
- ny,
1008
- layerID,
1009
- current_sel_obj_id
1010
- );
1011
- itemsActions.updateRotatingItemChanged(
1012
- rot,
1013
- layerID,
1014
- current_sel_obj_id
1015
- );
1016
- }
1017
- if (
1018
- (allItemRect.cur &&
1019
- allItemRect.cur.itemInfo.name.includes('Hood')) ||
1020
- (allItemRect.cur &&
1021
- allItemRect.cur.itemInfo.name.includes('Range')) ||
1022
- (allItemRect.cur &&
1023
- allItemRect.cur.itemInfo.name.includes('Cook Top'))
1024
- ) {
1025
- itemsActions.updateDraggingItemChanged(
1026
- nx,
1027
- ny,
1028
- layerID,
1029
- current_sel_obj_id
1030
- );
1031
- itemsActions.updateRotatingItemChanged(
1032
- rot,
1033
- layerID,
1034
- current_sel_obj_id
1035
- );
1036
- }
1037
- break;
1038
-
1039
- case constants.MODE_ROTATING_ITEM:
1040
- itemsActions.updateRotatingItem(x, y);
1041
- break;
1042
- }
1043
-
1044
- viewerEvent.originalEvent.stopPropagation();
1045
- };
1046
-
1047
- let onMouseDown = viewerEvent => {
1048
- let event = viewerEvent.originalEvent;
1049
- //workaround that allow imageful component to work
1050
- // let evt = new Event('mousedown-planner-event');
1051
- // evt.viewerEvent = viewerEvent;
1052
- // document.dispatchEvent(evt);
1053
- let { x, y } = mapCursorPosition(viewerEvent);
1054
- let layer = state.scene.getIn(['layers', state.scene.selectedLayer]);
1055
- let sCount =
1056
- layer.selected.areas.size +
1057
- layer.selected.holes.size +
1058
- layer.selected.items.size +
1059
- layer.selected.lines.size;
1060
- if (mode === constants.MODE_DRAWING_LINE) {
1061
- if (event.nativeEvent.which === 3) {
1062
- projectActions.rollback();
1063
- event.stopPropagation();
1064
- return;
1065
- }
1066
- }
1067
- if (mode === constants.MODE_IDLE) {
1068
- let elementData = extractElementData(event.target);
1069
- if (!elementData) return;
1070
-
1071
- if (sCount < 2)
1072
- switch (elementData.prototype) {
1073
- case 'lines':
1074
- if (elementData.selected) {
1075
- if (elementData.part === 'remove') break;
1076
- else if (elementData.part === 'elevation') break;
1077
- linesActions.beginDraggingLine(
1078
- elementData.layer,
1079
- elementData.id,
1080
- x,
1081
- y,
1082
- state.snapMask
1083
- );
1084
- }
1085
- break;
1086
- case 'vertices':
1087
- verticesActions.beginDraggingVertex(
1088
- elementData.layer,
1089
- elementData.id,
1090
- x,
1091
- y,
1092
- state.snapMask
1093
- );
1094
- break;
1095
-
1096
- case 'items':
1097
- setToolbar('');
1098
- current_sel_obj_id = elementData.id;
1099
- if (elementData.part === 'rotation-anchor')
1100
- itemsActions.beginRotatingItem(
1101
- elementData.layer,
1102
- elementData.id,
1103
- x,
1104
- y
1105
- );
1106
- else if (elementData.part === 'remove') break;
1107
- else if (elementData.part === 'duplicate') break;
1108
- else if (elementData.part === 'warning_edit') break;
1109
- else {
1110
- // closes the setting dialog
1111
- // document.getElementById('setting_dialog').style.display = 'none';
1112
-
1113
- itemsActions.selectItem(elementData.layer, elementData.id);
1114
- // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
1115
- itemsActions.beginDraggingItem(
1116
- elementData.layer,
1117
- elementData.id,
1118
- x,
1119
- y
1120
- );
1121
- replaceCabinet(false);
1122
- }
1123
- break;
1124
-
1125
- case 'holes':
1126
- if (elementData.selected)
1127
- holesActions.beginDraggingHole(
1128
- elementData.layer,
1129
- elementData.id,
1130
- x,
1131
- y
1132
- );
1133
- break;
1134
-
1135
- default:
1136
- break;
1137
- }
1138
- else {
1139
- sPoint.x = x;
1140
- sPoint.y = y;
1141
- sFlag = true;
1142
- }
1143
- }
1144
- event.stopPropagation();
1145
- };
1146
-
1147
- let onMouseUp = viewerEvent => {
1148
- //set move all flag false
1149
- sFlag = false;
1150
- // //////////////////////
1151
- // setRulerEdit(null);
1152
- let event = viewerEvent.originalEvent;
1153
- let bbox = event.target.getBoundingClientRect();
1154
- if (!mode.includes('ING')) {
1155
- setToolbar('');
1156
- }
1157
- // bbox.width = event.target.getBBox().width;
1158
- // bbox.height = event.target.getBBox().height;
1159
- if (event.target.tagName === 'rect') {
1160
- if (event.target.id) {
1161
- setRulerEditID(event.target.id);
1162
- }
1163
- }
1164
- setRulerEdit(null);
1165
- // let evt = new Event('mouseup-planner-event');
1166
- // evt.viewerEvent = viewerEvent;
1167
- // document.dispatchEvent(evt);
1168
-
1169
- let { x, y } = mapCursorPosition(viewerEvent);
1170
-
1171
- let vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
1172
- let lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
1173
-
1174
- switch (mode) {
1175
- case constants.MODE_IDLE:
1176
- let elementData = extractElementData(event.target);
1177
- let selectedLayer = scene.getIn(['layers', layerID]);
1178
- switch (elementData ? elementData.prototype : 'none') {
1179
- case 'areas':
1180
- // document.getElementById('setting_dialog').style.display = 'none';
1181
- areaActions.selectArea(elementData.layer, elementData.id);
1182
- break;
1183
-
1184
- case 'lines':
1185
- // document.getElementById('setting_dialog').style.display = 'none';
1186
- if (elementData.part === 'remove') {
1187
- projectActions.remove();
1188
- break;
1189
- } else if (elementData.part === 'elevation') {
1190
- // handle action when click elevation about selected line
1191
- let mode = MODE_ELEVATION_VIEW;
1192
- projectActions.setMode(mode);
1193
- break;
1194
- } else {
1195
- let tlines = [];
1196
- let drawingLine = state
1197
- .getIn(['scene', 'layers', layerID, 'lines', elementData.id])
1198
- .toJS();
1199
- getRelatedLines(tlines, drawingLine, vertices, lines);
1200
- setRelatedLines(tlines);
1201
- linesActions.selectLine(elementData.layer, elementData.id);
1202
- break;
1203
- }
1204
-
1205
- case 'holes':
1206
- // document.getElementById('setting_dialog').style.display = 'none';
1207
- holesActions.selectHole(elementData.layer, elementData.id);
1208
- break;
1209
-
1210
- case 'items':
1211
- if (elementData.part === 'duplicate') {
1212
- let currentObject = state.getIn([
1213
- 'scene',
1214
- 'layers',
1215
- layerID,
1216
- 'items',
1217
- elementData.id
1218
- ]);
1219
- itemsActions.duplicateSelected(currentObject);
1220
- break;
1221
- } else if (elementData.part === 'remove') {
1222
- projectActions.remove();
1223
- break;
1224
- } else if (elementData.part === 'warning_edit') {
1225
- // closes the setting dialog
1226
- // document.getElementById('setting_dialog').style.display = 'none';
1227
-
1228
- itemsActions.selectItem(elementData.layer, elementData.id);
1229
- replaceCabinet(true);
1230
- break;
1231
- } else {
1232
- projectActions.unselectAll();
1233
- break;
1234
- }
1235
- case 'rulerDist':
1236
- let _length1 = convert(elementData.length)
1237
- .from(scene.unit)
1238
- .to(scene.rulerUnit);
1239
- let distanceText1 = `${formatNumber(_length1, DECIMAL_PLACES_2)}`;
1240
- const numberInput1 = (
1241
- <div
1242
- id="ruler_numberInput"
1243
- style={{
1244
- position: 'absolute',
1245
- left: bbox.left - (150 - bbox.width) / 2,
1246
- top: bbox.top - (50 - bbox.height) / 2,
1247
- zIndex: 1000
1248
- }}
1249
- >
1250
- <FormNumberInput
1251
- style={{
1252
- width: 150,
1253
- height: 50,
1254
- textAlign: 'center',
1255
- paddingRight: 10,
1256
- fontSize: '16px',
1257
- lineHeight: '22px',
1258
- fontWeight: 600
1259
- }}
1260
- value={distanceText1}
1261
- onChange={event => {
1262
- const value = new Map({
1263
- length: convert(event.target.value)
1264
- .from(scene.rulerUnit)
1265
- .to(scene.unit),
1266
- _length: event.target.value,
1267
- _unit: scene.rulerUnit
1268
- });
1269
- updateRulerDistAttribute(elementData, value);
1270
- }}
1271
- precision={2}
1272
- />
1273
- </div>
1274
- );
1275
- setRulerEdit(numberInput1);
1276
- projectActions.unselectAll();
1277
- break;
1278
- case 'ruler':
1279
- let _length = convert(elementData.length)
1280
- .from(scene.unit)
1281
- .to(selectedLayer.unit);
1282
- const numberInput = (
1283
- <div
1284
- id="ruler_numberInput"
1285
- style={{
1286
- position: 'absolute',
1287
- left: bbox.left - (150 - bbox.width) / 2,
1288
- top: bbox.top - (50 - bbox.height) / 2,
1289
- zIndex: 1000
1290
- }}
1291
- >
1292
- <FormNumberInput
1293
- style={{
1294
- width: 150,
1295
- height: 50,
1296
- textAlign: 'center',
1297
- paddingRight: 10,
1298
- fontSize: '16px',
1299
- lineHeight: '22px',
1300
- fontWeight: 600
1301
- }}
1302
- value={formatNumber(_length, DECIMAL_PLACES_2)}
1303
- onChange={event => {
1304
- const value = new Map({
1305
- length: convert(event.target.value)
1306
- .from(selectedLayer.unit)
1307
- .to(scene.unit),
1308
- _length: event.target.value,
1309
- _unit: selectedLayer.unit
1310
- });
1311
- updateRulerAttribute(elementData, value);
1312
- }}
1313
- precision={2}
1314
- />
1315
- </div>
1316
- );
1317
- setRulerEdit(numberInput);
1318
- projectActions.unselectAll();
1319
- break;
1320
- case 'twoHoleRuler':
1321
- let _lengthTwoHoleRuler = convert(elementData.length)
1322
- .from(scene.unit)
1323
- .to(scene.rulerUnit);
1324
- let distanceTextTwoHoleRuler = `${formatNumber(
1325
- _lengthTwoHoleRuler,
1326
- DECIMAL_PLACES_2
1327
- )}`;
1328
- const numberInputTwoHoleRuler = (
1329
- <div
1330
- id="ruler_numberInput"
1331
- style={{
1332
- position: 'absolute',
1333
- left: bbox.left - (150 - bbox.width) / 2,
1334
- top: bbox.top - (50 - bbox.height) / 2,
1335
- zIndex: 1000
1336
- }}
1337
- >
1338
- <FormNumberInput
1339
- style={{
1340
- width: 150,
1341
- height: 50,
1342
- textAlign: 'center',
1343
- padding: 'auto',
1344
- fontSize: '16px',
1345
- lineHeight: '22px',
1346
- fontWeight: 600
1347
- }}
1348
- value={distanceTextTwoHoleRuler}
1349
- onChange={event => {
1350
- const value = new Map({
1351
- length: convert(event.target.value / 2)
1352
- .from(scene.rulerUnit)
1353
- .to(scene.unit),
1354
- _length: event.target.value / 2,
1355
- _unit: scene.rulerUnit
1356
- });
1357
- updateTwoHoleRulerAttribute(elementData, value);
1358
- }}
1359
- precision={2}
1360
- />
1361
- </div>
1362
- );
1363
- setRulerEdit(numberInputTwoHoleRuler);
1364
- projectActions.unselectAll();
1365
- break;
1366
- case 'leftHoleRuler':
1367
- let _lengthLeftHoleRuler = convert(elementData.length)
1368
- .from(scene.unit)
1369
- .to(scene.rulerUnit);
1370
- let distanceTextLeftHoleRuler = `${_lengthLeftHoleRuler.toFixed(
1371
- 2
1372
- )}`;
1373
- const numberInputLeftHoleRuler = (
1374
- <div
1375
- id="ruler_numberInput"
1376
- style={{
1377
- position: 'absolute',
1378
- left: bbox.left - (150 - bbox.width) / 2,
1379
- top: bbox.top - (50 - bbox.height) / 2,
1380
- zIndex: 1000
1381
- }}
1382
- >
1383
- <FormNumberInput
1384
- style={{
1385
- width: 150,
1386
- height: 50,
1387
- textAlign: 'center',
1388
- paddingRight: 10,
1389
- fontSize: '16px',
1390
- lineHeight: '22px',
1391
- fontWeight: 600
1392
- }}
1393
- value={distanceTextLeftHoleRuler}
1394
- onChange={event => {
1395
- const value = new Map({
1396
- length: convert(event.target.value)
1397
- .from(scene.rulerUnit)
1398
- .to(scene.unit),
1399
- _length: event.target.value,
1400
- _unit: scene.rulerUnit
1401
- });
1402
- updateLeftHoleRulerAttribute(elementData, value);
1403
- }}
1404
- precision={2}
1405
- />
1406
- </div>
1407
- );
1408
- setRulerEdit(numberInputLeftHoleRuler);
1409
- projectActions.unselectAll();
1410
- break;
1411
- case 'rulerHole':
1412
- let _lengthRulerHole = convert(elementData.length)
1413
- .from(scene.unit)
1414
- .to(scene.rulerUnit);
1415
- let distanceTextRulerHole = `${formatNumber(
1416
- _lengthRulerHole,
1417
- DECIMAL_PLACES_2
1418
- )}`;
1419
- const numberInputRulerHole = (
1420
- <div
1421
- id="ruler_numberInput"
1422
- style={{
1423
- position: 'absolute',
1424
- left: bbox.left - (150 - bbox.width) / 2,
1425
- top: bbox.top - (50 - bbox.height) / 2,
1426
- zIndex: 1000
1427
- }}
1428
- >
1429
- <FormNumberInput
1430
- style={{
1431
- width: 150,
1432
- height: 50,
1433
- textAlign: 'center',
1434
- paddingRight: 10,
1435
- fontSize: '16px',
1436
- lineHeight: '22px',
1437
- fontWeight: 600
1438
- }}
1439
- value={distanceTextRulerHole}
1440
- onChange={event => {
1441
- const value = new Map({
1442
- length: convert(event.target.value)
1443
- .from(scene.rulerUnit)
1444
- .to(scene.unit),
1445
- _length: event.target.value,
1446
- _unit: scene.rulerUnit
1447
- });
1448
- updateHoleRulerAttribute(elementData, value);
1449
- }}
1450
- precision={2}
1451
- />
1452
- </div>
1453
- );
1454
- setRulerEdit(numberInputRulerHole);
1455
- projectActions.unselectAll();
1456
- break;
1457
- case 'rightHoleRuler':
1458
- let _lengthRightHoleRuler = convert(elementData.length)
1459
- .from(scene.unit)
1460
- .to(scene.rulerUnit);
1461
- let distanceTextRightHoleRuler = `${_lengthRightHoleRuler.toFixed(
1462
- 2
1463
- )}`;
1464
- const numberInputRightHoleRuler = (
1465
- <div
1466
- id="ruler_numberInput"
1467
- style={{
1468
- position: 'absolute',
1469
- left: bbox.left - (150 - bbox.width) / 2,
1470
- top: bbox.top - (50 - bbox.height) / 2,
1471
- zIndex: 1000
1472
- }}
1473
- >
1474
- <FormNumberInput
1475
- style={{
1476
- width: 150,
1477
- height: 50,
1478
- textAlign: 'center',
1479
- paddingRight: 10,
1480
- fontSize: '16px',
1481
- lineHeight: '22px',
1482
- fontWeight: 600
1483
- }}
1484
- value={distanceTextRightHoleRuler}
1485
- onChange={event => {
1486
- const value = new Map({
1487
- length: convert(event.target.value)
1488
- .from(scene.rulerUnit)
1489
- .to(scene.unit),
1490
- _length: event.target.value,
1491
- _unit: scene.rulerUnit
1492
- });
1493
- updateRightHoleRulerAttribute(elementData, value);
1494
- }}
1495
- precision={2}
1496
- />
1497
- </div>
1498
- );
1499
- setRulerEdit(numberInputRightHoleRuler);
1500
- projectActions.unselectAll();
1501
- break;
1502
- case 'angleChange':
1503
- let _length2 = elementData.length;
1504
- const numberInput2 = (
1505
- <div
1506
- id="ruler_numberInput"
1507
- style={{
1508
- position: 'absolute',
1509
- left: bbox.left - (150 - bbox.width) / 2,
1510
- top: bbox.top - (50 - bbox.height) / 2,
1511
- zIndex: 1000
1512
- }}
1513
- >
1514
- <FormNumberInput
1515
- style={{
1516
- width: 50,
1517
- height: 50
1518
- }}
1519
- value={_length2}
1520
- onChange={event => {
1521
- const value = new Map({
1522
- length: convert(event.target.value)
1523
- .from(scene.rulerUnit)
1524
- .to(scene.unit),
1525
- _length: event.target.value,
1526
- _unit: scene.rulerUnit
1527
- });
1528
- updateangleChangeAttribute(elementData, value);
1529
- }}
1530
- precision={2}
1531
- />
1532
- </div>
1533
- );
1534
- setRulerEdit(numberInput2);
1535
- projectActions.unselectAll();
1536
- break;
1537
- case 'none':
1538
- projectActions.unselectAll();
1539
- break;
1540
- }
1541
- break;
1542
-
1543
- case constants.MODE_WAITING_DRAWING_LINE:
1544
- setdrawStart(true);
1545
- linesActions.beginDrawingLine(layerID, x, y, state.snapMask);
1546
- break;
1547
-
1548
- case constants.MODE_DRAWING_LINE:
1549
- // Blocked 90 degree snap.
1550
- // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
1551
- // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
1552
- // let dx = Math.abs(x - prevVertex.x);
1553
- // let dy = Math.abs(y - prevVertex.y);
1554
- // if (dx > dy) y = prevVertex.y
1555
- // else x = prevVertex.x;
1556
- setdrawStart(true);
1557
- let lineID = state
1558
- .getIn(['scene', 'layers', layerID, 'selected', 'lines'])
1559
- .first();
1560
- let drawingLine = state
1561
- .getIn(['scene', 'layers', layerID, 'lines', lineID])
1562
- .toJS();
1563
- // get the lines that have same points with drawing line.
1564
- let tlines = [];
1565
- getRelatedLines(tlines, drawingLine, vertices, lines);
1566
- setRelatedLines(tlines);
1567
- let endInfor = getEndPoint(vertices, x, y, 'END_DRAWIN_LINE');
1568
- linesActions.endDrawingLine(
1569
- endInfor.x,
1570
- endInfor.y,
1571
- tlines,
1572
- state.snapMask
1573
- );
1574
- linesActions.beginDrawingLine(
1575
- layerID,
1576
- endInfor.x,
1577
- endInfor.y,
1578
- state.snapMask
1579
- );
1580
- break;
1581
-
1582
- case constants.MODE_DRAWING_HOLE:
1583
- holesActions.endDrawingHole(layerID, x, y);
1584
- break;
1585
-
1586
- case constants.MODE_DRAWING_ITEM:
1587
- itemsActions.endDrawingItem(layerID, endPoint.x, endPoint.y);
1588
- break;
1589
-
1590
- case constants.MODE_DRAGGING_LINE:
1591
- linesActions.endDraggingLine(x, y, relatedLines, state.snapMask);
1592
- break;
1593
-
1594
- case constants.MODE_DRAGGING_VERTEX:
1595
- let result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
1596
- verticesActions.endDraggingVertex(result.x, result.y, state.snapMask);
1597
- break;
1598
-
1599
- case constants.MODE_DRAGGING_ITEM:
1600
- itemsActions.updateMolding();
1601
- projectActions.setMode(MODE_IDLE);
1602
- break;
1603
-
1604
- case constants.MODE_DRAGGING_HOLE:
1605
- holesActions.endDraggingHole(x, y);
1606
- break;
1607
-
1608
- case constants.MODE_ROTATING_ITEM:
1609
- itemsActions.endRotatingItem(x, y);
1610
- break;
1611
- }
1612
-
1613
- event.stopPropagation();
1614
- };
1615
-
1616
- let onChangeValue = value => {
1617
- if (sFlag) return;
1618
- let _zoomValue = parseInt((value.a - 0.5) / constants.ZOOM_VARIABLE);
1619
- if (_zoomValue > 404) return;
1620
- if (_zoomValue < 0 || Number.isNaN(_zoomValue)) return;
1621
-
1622
- if (
1623
- (rulerEdit !== null && value.startX && value.startY) ||
1624
- value.lastAction === 'zoom'
1625
- ) {
1626
- let _rulerEdit = document.getElementById('ruler_numberInput'),
1627
- _rect;
1628
- if (rulerEditID !== null) {
1629
- _rect = document.getElementById(rulerEditID);
1630
- }
1631
- let bbox;
1632
- if (_rect && _rulerEdit) {
1633
- bbox = _rect.getBoundingClientRect();
1634
- // bbox.width = _rect.getBBox().width;
1635
- // bbox.height = _rect.getBBox().height;
1636
- _rulerEdit.style.left = `${bbox.left - (150 - bbox.width) / 2}px`;
1637
- _rulerEdit.style.top = `${bbox.top - (50 - bbox.height) / 2}px`;
1638
- }
1639
- }
1640
-
1641
- if (
1642
- value.e <= 10 &&
1643
- value.e + value.a * value.SVGWidth + 10 >= value.viewerWidth &&
1644
- value.f <= 80 &&
1645
- value.f + value.d * value.SVGHeight + 10 >= value.viewerHeight
1646
- ) {
1647
- /*let val = Object.assign({}, value);
1648
- if (refresh === 2) {
1649
- val.a += 0.4; val.d += 0.4;
1650
- val.e -= (val.SVGWidth * val.a - val.SVGWidth * (val.a - 0.4)) / 2;
1651
- val.f -= (val.SVGHeight * val.d - val.SVGHeight * (val.d - 0.4)) / 2;
1652
- console.log('----', val)
1653
- }*/
1654
- projectActions.updateZoomScale(value.a);
1655
- return viewer2DActions.updateCameraView(value);
1656
- }
1657
- };
1658
-
1659
- let onChangeTool = tool => {
1660
- switch (tool) {
1661
- case TOOL_NONE:
1662
- projectActions.selectToolEdit();
1663
- break;
1664
-
1665
- case TOOL_PAN:
1666
- viewer2DActions.selectToolPan();
1667
- break;
1668
-
1669
- case TOOL_ZOOM_IN:
1670
- viewer2DActions.selectToolZoomIn();
1671
- break;
1672
-
1673
- case TOOL_ZOOM_OUT:
1674
- viewer2DActions.selectToolZoomOut();
1675
- break;
1676
- }
1677
- };
1678
-
1679
- let onZoom = value => {
1680
- // var nextValue = viewer2D.toJS();
1681
- // nextValue = zoom(nextValue, 0, 0, value.a / nextValue.a)
1682
- // projectActions.updateZoomScale(nextValue.a);
1683
- // return viewer2DActions.updateCameraView(nextValue)
1684
- };
1685
-
1686
- let { e, f, SVGWidth, SVGHeight } = state.get('viewer2D').toJS();
1687
-
1688
- let rulerSize = 0; //px
1689
- let rulerUnitPixelSize = 100;
1690
- let rulerBgColor = SharedStyle.PRIMARY_COLOR.main;
1691
- let rulerFnColor = SharedStyle.COLORS.white;
1692
- let rulerMkColor = SharedStyle.SECONDARY_COLOR.main;
1693
- let sceneWidth = SVGWidth || state.getIn(['scene', 'width']);
1694
- let sceneHeight = SVGHeight || state.getIn(['scene', 'height']);
1695
- let sceneZoom = state.zoom || 1;
1696
- let rulerXElements = Math.ceil(sceneWidth / rulerUnitPixelSize) + 1;
1697
- let rulerYElements = Math.ceil(sceneHeight / rulerUnitPixelSize) + 1;
1698
- return (
1699
- <div>
1700
- {rulerEdit}
1701
- <div
1702
- style={{
1703
- margin: 0,
1704
- padding: 0,
1705
- display: 'grid',
1706
- gridRowGap: '0',
1707
- gridColumnGap: '0',
1708
- gridTemplateColumns: `${rulerSize}px ${width - rulerSize}px`,
1709
- gridTemplateRows: `${rulerSize}px ${height - rulerSize}px`,
1710
- position: 'relative'
1711
- }}
1712
- >
1713
- <div
1714
- style={{ gridColumn: 1, gridRow: 1, backgroundColor: rulerBgColor }}
1715
- ></div>
1716
- <div
1717
- style={{
1718
- gridRow: 1,
1719
- gridColumn: 2,
1720
- position: 'relative',
1721
- overflow: 'hidden'
1722
- }}
1723
- id="rulerX"
1724
- >
1725
- {sceneWidth ? (
1726
- <RulerX
1727
- unitPixelSize={rulerUnitPixelSize}
1728
- zoom={sceneZoom}
1729
- mouseX={state.mouse.get('x')}
1730
- width={width - rulerSize}
1731
- zeroLeftPosition={e || 0}
1732
- backgroundColor={rulerBgColor}
1733
- fontColor={rulerFnColor}
1734
- markerColor={rulerMkColor}
1735
- positiveUnitsNumber={rulerXElements}
1736
- negativeUnitsNumber={0}
1737
- />
1738
- ) : null}
1739
- </div>
1740
- <div
1741
- style={{
1742
- gridColumn: 1,
1743
- gridRow: 2,
1744
- position: 'relative',
1745
- overflow: 'hidden'
1746
- }}
1747
- id="rulerY"
1748
- >
1749
- {sceneHeight ? (
1750
- <RulerY
1751
- unitPixelSize={rulerUnitPixelSize}
1752
- zoom={sceneZoom}
1753
- mouseY={state.mouse.get('y')}
1754
- height={height - rulerSize}
1755
- zeroTopPosition={sceneHeight * sceneZoom + f || 0}
1756
- backgroundColor={rulerBgColor}
1757
- fontColor={rulerFnColor}
1758
- markerColor={rulerMkColor}
1759
- positiveUnitsNumber={rulerYElements}
1760
- negativeUnitsNumber={0}
1761
- />
1762
- ) : null}
1763
- </div>
1764
- <ReactSVGPanZoom
1765
- style={{ gridColumn: 2, gridRow: 2 }}
1766
- width={width - rulerSize}
1767
- height={height - rulerSize}
1768
- value={viewer2D.isEmpty() ? null : viewer2D.toJS()}
1769
- onChangeValue={onChangeValue}
1770
- tool={mode2Tool(mode)}
1771
- onChangeTool={onChangeTool}
1772
- detectAutoPan={mode2DetectAutopan(mode)}
1773
- onMouseDown={onMouseDown}
1774
- onMouseMove={onMouseMove}
1775
- onMouseUp={onMouseUp}
1776
- miniaturePosition="none"
1777
- toolbarPosition="none"
1778
- detectPinchGesture={false}
1779
- disableDoubleClickZoomWithToolAuto={true}
1780
- ref={Viewer}
1781
- >
1782
- <svg width={scene.width} height={scene.height}>
1783
- <defs>
1784
- <pattern
1785
- id="diagonalFill"
1786
- patternUnits="userSpaceOnUse"
1787
- width="4"
1788
- height="4"
1789
- fill="#FFF"
1790
- >
1791
- <rect x="0" y="0" width="4" height="4" fill="#FFF" />
1792
- <path
1793
- d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2"
1794
- style={{ stroke: '#8E9BA2', strokeWidth: 1 }}
1795
- />
1796
- </pattern>
1797
- </defs>
1798
- <g
1799
- style={Object.assign(mode2Cursor(mode), mode2PointerEvents(mode))}
1800
- >
1801
- <State
1802
- state={state}
1803
- catalog={catalog}
1804
- viewer2DActions={viewer2DActions}
1805
- relatedLines={relatedLines}
1806
- />
1807
- </g>
1808
- </svg>
1809
- </ReactSVGPanZoom>
1810
- </div>
1811
- </div>
1812
- );
1813
- }
1814
-
1815
- Viewer2D.propTypes = {
1816
- state: PropTypes.object.isRequired,
1817
- width: PropTypes.number.isRequired,
1818
- height: PropTypes.number.isRequired
1819
- };
1820
-
1821
- Viewer2D.contextTypes = {
1822
- viewer2DActions: PropTypes.object.isRequired,
1823
- linesActions: PropTypes.object.isRequired,
1824
- holesActions: PropTypes.object.isRequired,
1825
- verticesActions: PropTypes.object.isRequired,
1826
- itemsActions: PropTypes.object.isRequired,
1827
- areaActions: PropTypes.object.isRequired,
1828
- projectActions: PropTypes.object.isRequired,
1829
- catalog: PropTypes.object.isRequired
1830
- };