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,1070 +0,0 @@
1
- import React, { Component } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Map, fromJS } from 'immutable';
4
- import AttributesEditor from './attributes-editor/attributes-editor';
5
- import { GeometryUtils, MathUtils } from '../../../utils/export';
6
- import {
7
- UNIT_INCH,
8
- MODE_DRAWING_LINE,
9
- BASE_CABINET_LAYOUTPOS,
10
- WALL_CABINET_LAYOUTPOS,
11
- TALL_CABINET_LAYOUTPOS,
12
- TOE_KICK_MOLDING
13
- } from '../../../constants';
14
- import convert from 'convert-units';
15
- import * as PS from '../../toolbar/popup/styles';
16
- import { TEXT_COLOR_NEUTRAL_2, DEFAULT_FONT_FAMILY } from '../../../constants';
17
- import { returnReplaceableDeepSearchType } from '../../viewer2d/utils';
18
- import * as S from '../../toolbar/main/styles';
19
- import { showYelloBox } from '../../viewer3d/scene-creator';
20
- import { isEmpty } from '../../../utils/helper';
21
- import CustomAccordion from '../custom-accordion';
22
- import { hasMoldingLayout } from '../../../utils/molding';
23
-
24
- const PRECISION = 2;
25
- const Left = 0;
26
- const Right = 180;
27
- const Back = 90;
28
- const Front = -90;
29
-
30
- export default class ElementEditor extends Component {
31
- constructor(props, context) {
32
- super(props, context);
33
-
34
- this.state = {
35
- isMolding: true,
36
- attributesFormData: this.initAttrData(
37
- this.props.element,
38
- this.props.layer,
39
- this.props.state
40
- ),
41
- propertiesFormData: this.initPropData(
42
- this.props.element,
43
- this.props.layer,
44
- this.props.state
45
- ),
46
- isResizeActive: false
47
- };
48
-
49
- this.updateAttribute = this.updateAttribute.bind(this);
50
- }
51
-
52
- shouldComponentUpdate(nextProps, nextState) {
53
- let scene = this.props.state.get('scene');
54
- let selectedLayer = scene.getIn(['layers', scene.get('selectedLayer')]);
55
- scene = nextProps.state.get('scene');
56
- let layer = scene.getIn(['layers', scene.get('selectedLayer')]);
57
- if (
58
- this.state.attributesFormData.hashCode() !==
59
- nextState.attributesFormData.hashCode() ||
60
- this.state.propertiesFormData.hashCode() !==
61
- nextState.propertiesFormData.hashCode() ||
62
- this.state.isMolding !== nextState.isMolding ||
63
- this.props.state.clipboardProperties.hashCode() !==
64
- nextProps.state.clipboardProperties.hashCode() ||
65
- selectedLayer.hashCode() !== layer.hashCode()
66
- )
67
- return true;
68
-
69
- return false;
70
- }
71
-
72
- componentWillReceiveProps({ element, layer, state }) {
73
- let scene = this.props.state.get('scene');
74
- let selectedLayer = scene.getIn(['layers', scene.get('selectedLayer')]);
75
- if (selectedLayer.hashCode() !== layer.hashCode()) {
76
- this.setState({
77
- attributesFormData: this.initAttrData(element, layer, state),
78
- propertiesFormData: this.initPropData(element, layer, state)
79
- });
80
- }
81
- }
82
-
83
- initAttrData(element, layer, state) {
84
- element =
85
- typeof element.misc === 'object'
86
- ? element.set('misc', new Map(element.misc))
87
- : element;
88
- switch (element.prototype) {
89
- case 'items': {
90
- let allLines = GeometryUtils.getAllLines(layer);
91
- let allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
92
- let x = element.x;
93
- let y = element.y;
94
- let rotRad = (element.rotation / 180) * Math.PI;
95
- let w = element.properties.get('width').get('_length');
96
- let wUnit = element.properties.get('width').get('_unit') || 'cm';
97
- w = convert(w / 2)
98
- .from(wUnit)
99
- .to('cm');
100
- let h = element.properties.get('depth').get('_length');
101
- let hUnit = element.properties.get('depth').get('_unit') || 'cm';
102
- h = convert(h / 2)
103
- .from(hUnit)
104
- .to('cm');
105
- let mx = x - w * Math.cos(rotRad);
106
- let my = y - w * Math.sin(rotRad);
107
- let x0 = mx + h * Math.sin(rotRad);
108
- let y0 = my - h * Math.cos(rotRad);
109
- let x3 = mx * 2 - x0;
110
- let y3 = my * 2 - y0;
111
- let x1 = x * 2 - x3;
112
- let y1 = y * 2 - y3;
113
- let x2 = x * 2 - x0;
114
- let y2 = y * 2 - y0;
115
- this.setState({ isMolding: true });
116
- if (
117
- element.layoutpos === BASE_CABINET_LAYOUTPOS &&
118
- GeometryUtils.isSnappedLine(
119
- {
120
- rect: [
121
- { x: x0, y: y0 },
122
- { x: x1, y: y1 },
123
- { x: x2, y: y2 },
124
- { x: x3, y: y3 }
125
- ]
126
- },
127
- allLineRects
128
- )
129
- ) {
130
- this.setState({ isMolding: false });
131
- }
132
- if (
133
- (element.layoutpos === WALL_CABINET_LAYOUTPOS ||
134
- element.layoutpos === TALL_CABINET_LAYOUTPOS) &&
135
- !GeometryUtils.isSnappedLine(
136
- {
137
- rect: [
138
- { x: x0, y: y0 },
139
- { x: x1, y: y1 },
140
- { x: x2, y: y2 },
141
- { x: x3, y: y3 }
142
- ]
143
- },
144
- allLineRects
145
- )
146
- ) {
147
- this.setState({ isMolding: false });
148
- }
149
- return new Map(element);
150
- }
151
- case 'lines': {
152
- let v_a = layer.vertices.get(element.vertices.get(0));
153
- let v_b = layer.vertices.get(element.vertices.get(1));
154
- let distance = GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
155
- let _unit = element.misc.get('_unitLength') || UNIT_INCH;
156
- let _length = convert(distance)
157
- .from(this.context.catalog.unit)
158
- .to(_unit);
159
-
160
- if (state.mode == MODE_DRAWING_LINE) {
161
- return new Map({
162
- vertexOne: v_a,
163
- vertexTwo: v_b,
164
- lineLength: new Map({ length: distance, _length, _unit }),
165
- focus: element.focus
166
- });
167
- } else {
168
- let allLines = layer.lines.toArray();
169
- let relatedLine = allLines.filter(line => {
170
- return (
171
- line.vertices.toArray().includes(v_b.id) && line.id != element.id
172
- );
173
- })[0];
174
- let relatedVertexID =
175
- relatedLine &&
176
- (relatedLine.vertices.toArray()[0] == v_b.id
177
- ? relatedLine.vertices.toArray()[1]
178
- : relatedLine.vertices.toArray()[0]);
179
- let v_d =
180
- relatedVertexID && layer.getIn(['vertices', relatedVertexID]);
181
- let lineToExtend =
182
- relatedVertexID &&
183
- allLines.filter(line => {
184
- return (
185
- line.vertices.toArray().includes(relatedVertexID) &&
186
- line.id != relatedLine.id
187
- );
188
- })[0];
189
- let v_c =
190
- lineToExtend &&
191
- layer.getIn([
192
- 'vertices',
193
- lineToExtend.vertices.toArray()[0] == v_d.id
194
- ? lineToExtend.vertices.toArray()[1]
195
- : lineToExtend.vertices.toArray()[0]
196
- ]);
197
- return new Map({
198
- vertexOne: v_a,
199
- vertexTwo: v_b,
200
- vertexThree: v_c,
201
- vertexFour: v_d,
202
- lineToExtend: lineToExtend,
203
- lineLength: new Map({ length: distance, _length, _unit }),
204
- focus: element.focus
205
- });
206
- }
207
- }
208
- case 'holes': {
209
- let line = layer.lines.get(element.line);
210
- let { x: x0, y: y0 } = layer.vertices.get(line.vertices.get(0));
211
- let { x: x1, y: y1 } = layer.vertices.get(line.vertices.get(1));
212
- let lineLength = GeometryUtils.pointsDistance(x0, y0, x1, y1);
213
- let startAt =
214
- lineLength * element.offset -
215
- element.properties.get('width').get('length') / 2;
216
- let endAt =
217
- lineLength -
218
- lineLength * element.offset -
219
- element.properties.get('width').get('length') / 2;
220
- let _unitA = element.misc.get('_unitA') || UNIT_INCH;
221
- let _lengthA = convert(x0 > x1 ? endAt : startAt)
222
- .from(this.context.catalog.unit)
223
- .to(_unitA);
224
- let _unitB = element.misc.get('_unitB') || UNIT_INCH;
225
- let _lengthB = convert(x0 > x1 ? startAt : endAt)
226
- .from(this.context.catalog.unit)
227
- .to(_unitB);
228
-
229
- return new Map({
230
- offset: element.offset,
231
- offsetA: new Map({
232
- length: MathUtils.toFixedFloat(
233
- x0 > x1 ? endAt : startAt,
234
- PRECISION
235
- ),
236
- _length: MathUtils.toFixedFloat(_lengthA, PRECISION),
237
- _unit: _unitA
238
- }),
239
- offsetB: new Map({
240
- length: MathUtils.toFixedFloat(
241
- x0 > x1 ? startAt : endAt,
242
- PRECISION
243
- ),
244
- _length: MathUtils.toFixedFloat(_lengthB, PRECISION),
245
- _unit: _unitB
246
- })
247
- });
248
- }
249
- case 'areas': {
250
- return new Map({});
251
- }
252
- default:
253
- return null;
254
- }
255
- }
256
-
257
- initPropData(element, layer, state) {
258
- let { catalog } = this.context;
259
- let mapped = {};
260
- if (
261
- !catalog.elements.hasOwnProperty(element.type) &&
262
- !(
263
- !catalog.elements[element.type] &&
264
- !!catalog.elements[returnReplaceableDeepSearchType(element.type)]
265
- )
266
- ) {
267
- console.log(
268
- `Last Selected ${element.type} Element does not exist in catalog.`
269
- );
270
- return new Map(mapped);
271
- }
272
-
273
- let catalogElement = catalog.getElement(element.type);
274
- let isFiller = catalogElement.long_name
275
- ? catalogElement.long_name.toUpperCase().includes('FILLER')
276
- : false;
277
- if (isFiller) {
278
- let height = {
279
- defaultValue: element.properties.get('height').toJS(),
280
- label: 'Height',
281
- type: 'length-measure'
282
- };
283
- let depth = {
284
- defaultValue: element.properties.get('depth').toJS(),
285
- label: 'Depth',
286
- type: 'length-measure'
287
- };
288
- catalogElement.properties = {
289
- altitude: catalogElement.properties.altitude,
290
- width: catalogElement.properties.width,
291
- height: height,
292
- depth: depth,
293
- flip_doorhandle: catalogElement.properties.flip_doorhandle,
294
- resize_and_scaling: catalogElement.properties.resize_and_scaling
295
- };
296
- }
297
-
298
- for (let name in catalogElement.properties) {
299
- mapped[name] = new Map({
300
- currentValue: element.properties.has(name)
301
- ? element.properties.get(name)
302
- : fromJS(catalogElement.properties[name].defaultValue),
303
- configs: catalogElement.properties[name]
304
- });
305
- }
306
-
307
- return new Map(mapped);
308
- }
309
-
310
- updateAttribute(attributeName, value) {
311
- let { attributesFormData } = this.state;
312
- switch (this.props.element.prototype) {
313
- case 'items': {
314
- if (attributeName == 'pos') {
315
- let xVal = value.x;
316
- let yVal = value.y;
317
- attributesFormData = attributesFormData.set('x', xVal);
318
- attributesFormData = attributesFormData.set('y', yVal);
319
- } else {
320
- attributesFormData = attributesFormData.set(attributeName, value);
321
- }
322
- break;
323
- }
324
- case 'lines': {
325
- switch (attributeName) {
326
- case 'lineLength': {
327
- let v_0 = attributesFormData.get('vertexOne');
328
- let v_1 = attributesFormData.get('vertexTwo');
329
- let v_2 = attributesFormData.get('vertexThree');
330
- let v_3 = attributesFormData.get('vertexFour');
331
- let v_b_new = GeometryUtils.extendLine(
332
- v_0.x,
333
- v_0.y,
334
- v_1.x,
335
- v_1.y,
336
- value.get('length'),
337
- PRECISION
338
- );
339
- // Blocked function that as wall changed, opposite wall should changed together.
340
- // if (v_3 !== undefined){
341
- // let delta = {
342
- // x : v_b_new.x - v_1.x,
343
- // y : v_b_new.y - v_1.y
344
- // };
345
- // let v_d_new = {
346
- // x : v_3.x + delta.x,
347
- // y : v_3.y + delta.y
348
- // }
349
- // console.log('delta',delta);
350
- // attributesFormData = attributesFormData.withMutations(attr => {
351
- // attr.set('vertexTwo', v_1.merge(v_b_new));
352
- // attr.set('vertexFour', v_3.merge(v_d_new));
353
- // attr.set('lineLength', value);
354
- // });
355
- // }
356
- // else{
357
- // attributesFormData = attributesFormData.withMutations(attr => {
358
- // attr.set('vertexTwo', v_1.merge(v_b_new));
359
- // attr.set('lineLength', value);
360
- // });
361
- // }
362
- attributesFormData = attributesFormData.withMutations(attr => {
363
- attr.set('vertexTwo', v_1.merge(v_b_new));
364
- attr.set('lineLength', value);
365
- });
366
- break;
367
- }
368
- case 'vertexOne':
369
- case 'vertexTwo': {
370
- attributesFormData = attributesFormData.withMutations(attr => {
371
- attr.set(attributeName, attr.get(attributeName).merge(value));
372
-
373
- let newDistance = GeometryUtils.verticesDistance(
374
- attr.get('vertexOne'),
375
- attr.get('vertexTwo')
376
- );
377
- attr.mergeIn(
378
- ['lineLength'],
379
- attr.get('lineLength').merge({
380
- length: newDistance,
381
- _length: convert(newDistance)
382
- .from(this.context.catalog.unit)
383
- .to(attr.get('lineLength').get('_unit'))
384
- })
385
- );
386
- });
387
- break;
388
- }
389
- default: {
390
- attributesFormData = attributesFormData.set(attributeName, value);
391
- break;
392
- }
393
- }
394
- break;
395
- }
396
- case 'holes': {
397
- switch (attributeName) {
398
- case 'offsetA': {
399
- let line = this.props.layer.lines.get(this.props.element.line);
400
-
401
- let { x: x0, y: y0 } = this.props.layer.vertices.get(
402
- line.vertices.get(0)
403
- );
404
- let { x: x1, y: y1 } = this.props.layer.vertices.get(
405
- line.vertices.get(1)
406
- );
407
-
408
- let alpha = GeometryUtils.angleBetweenTwoPoints(x0, y0, x1, y1);
409
- let lineLength = GeometryUtils.pointsDistance(x0, y0, x1, y1);
410
- let widthLength = this.props.element.properties
411
- .get('width')
412
- .get('length');
413
- let halfWidthLength = widthLength / 2;
414
-
415
- let lengthValue = value.get('length');
416
- lengthValue = Math.max(lengthValue, 0);
417
- lengthValue = Math.min(lengthValue, lineLength - widthLength);
418
-
419
- let xp = (lengthValue + halfWidthLength) * Math.cos(alpha) + x0;
420
- let yp = (lengthValue + halfWidthLength) * Math.sin(alpha) + y0;
421
-
422
- let offset = GeometryUtils.pointPositionOnLineSegment(
423
- x0,
424
- y0,
425
- x1,
426
- y1,
427
- xp,
428
- yp
429
- );
430
- /*
431
- if (x0 > x1) offset = 1 - offset;
432
- */
433
- let endAt = MathUtils.toFixedFloat(
434
- lineLength - lineLength * offset - halfWidthLength,
435
- PRECISION
436
- );
437
- let offsetUnit = attributesFormData.getIn(['offsetB', '_unit']);
438
-
439
- let offsetB = new Map({
440
- length: endAt,
441
- _length: convert(endAt)
442
- .from(this.context.catalog.unit)
443
- .to(offsetUnit),
444
- _unit: offsetUnit
445
- });
446
-
447
- attributesFormData = attributesFormData
448
- .set('offsetB', offsetB)
449
- .set('offset', offset);
450
-
451
- let offsetAttribute = new Map({
452
- length: MathUtils.toFixedFloat(lengthValue, PRECISION),
453
- _unit: value.get('_unit'),
454
- _length: MathUtils.toFixedFloat(
455
- convert(lengthValue)
456
- .from(this.context.catalog.unit)
457
- .to(value.get('_unit')),
458
- PRECISION
459
- )
460
- });
461
-
462
- attributesFormData = attributesFormData.set(
463
- attributeName,
464
- offsetAttribute
465
- );
466
-
467
- break;
468
- }
469
- case 'offsetB': {
470
- let line = this.props.layer.lines.get(this.props.element.line);
471
- let { x: x0, y: y0 } = this.props.layer.vertices.get(
472
- line.vertices.get(0)
473
- );
474
- let { x: x1, y: y1 } = this.props.layer.vertices.get(
475
- line.vertices.get(1)
476
- );
477
-
478
- let alpha = GeometryUtils.angleBetweenTwoPoints(x0, y0, x1, y1);
479
- let lineLength = GeometryUtils.pointsDistance(x0, y0, x1, y1);
480
- let widthLength = this.props.element.properties
481
- .get('width')
482
- .get('length');
483
- let halfWidthLength = widthLength / 2;
484
-
485
- let lengthValue = value.get('length');
486
- lengthValue = Math.max(lengthValue, 0);
487
- lengthValue = Math.min(lengthValue, lineLength - widthLength);
488
-
489
- let xp = x1 - (lengthValue + halfWidthLength) * Math.cos(alpha);
490
- let yp = y1 - (lengthValue + halfWidthLength) * Math.sin(alpha);
491
-
492
- let offset = GeometryUtils.pointPositionOnLineSegment(
493
- x0,
494
- y0,
495
- x1,
496
- y1,
497
- xp,
498
- yp
499
- );
500
- /*
501
- if (x0 > x1) offset = 1 - offset;
502
- */
503
- let startAt = MathUtils.toFixedFloat(
504
- lineLength * offset - halfWidthLength,
505
- PRECISION
506
- );
507
- let offsetUnit = attributesFormData.getIn(['offsetA', '_unit']);
508
-
509
- let offsetA = new Map({
510
- length: startAt,
511
- _length: convert(startAt)
512
- .from(this.context.catalog.unit)
513
- .to(offsetUnit),
514
- _unit: offsetUnit
515
- });
516
-
517
- attributesFormData = attributesFormData
518
- .set('offsetA', offsetA)
519
- .set('offset', offset);
520
-
521
- let offsetAttribute = new Map({
522
- length: MathUtils.toFixedFloat(lengthValue, PRECISION),
523
- _unit: value.get('_unit'),
524
- _length: MathUtils.toFixedFloat(
525
- convert(lengthValue)
526
- .from(this.context.catalog.unit)
527
- .to(value.get('_unit')),
528
- PRECISION
529
- )
530
- });
531
-
532
- attributesFormData = attributesFormData.set(
533
- attributeName,
534
- offsetAttribute
535
- );
536
-
537
- break;
538
- }
539
- default: {
540
- attributesFormData = attributesFormData.set(attributeName, value);
541
- break;
542
- }
543
- }
544
- break;
545
- }
546
- default:
547
- break;
548
- }
549
-
550
- this.setState({ attributesFormData });
551
- this.save({ attributesFormData });
552
- }
553
-
554
- updateProperty(propertyName, value) {
555
- if (
556
- propertyName === 'flip_doorhandle' &&
557
- this.props.element.properties.get('open_doors')
558
- ) {
559
- alert('Doors are already open.');
560
- return;
561
- }
562
- let {
563
- state: { propertiesFormData }
564
- } = this;
565
- propertiesFormData = propertiesFormData.setIn(
566
- [propertyName, 'currentValue'],
567
- value
568
- );
569
- if (this.props.state.mode.includes('3D')) {
570
- setTimeout(() => {
571
- this.setState({ propertiesFormData });
572
- this.save({ propertiesFormData });
573
- }, 0);
574
- } else {
575
- this.setState({ propertiesFormData });
576
- this.save({ propertiesFormData });
577
- }
578
- }
579
-
580
- reset() {
581
- this.setState({
582
- propertiesFormData: this.initPropData(
583
- this.props.element,
584
- this.props.layer,
585
- this.props.state
586
- )
587
- });
588
- }
589
-
590
- save({ propertiesFormData, attributesFormData }) {
591
- if (propertiesFormData) {
592
- let properties = propertiesFormData.map(data => {
593
- return data.get('currentValue');
594
- });
595
-
596
- this.context.projectActions.setProperties(properties);
597
- }
598
-
599
- if (attributesFormData) {
600
- switch (this.props.element.prototype) {
601
- case 'items': {
602
- this.context.projectActions.setItemsAttributes(attributesFormData);
603
- break;
604
- }
605
- case 'lines': {
606
- this.context.projectActions.setLinesAttributes(attributesFormData);
607
- break;
608
- }
609
- case 'holes': {
610
- this.context.projectActions.setHolesAttributes(attributesFormData);
611
- break;
612
- }
613
- }
614
- }
615
- }
616
-
617
- copyProperties(properties) {
618
- this.context.projectActions.copyProperties(properties);
619
- }
620
-
621
- pasteProperties() {
622
- this.context.projectActions.pasteProperties();
623
- }
624
-
625
- returnResizeFilterList() {
626
- if (this.state.isResizeActive)
627
- return ['altitude', 'flip_doorhandle', 'resize_and_scaling'];
628
- return [
629
- 'width',
630
- 'height',
631
- 'depth',
632
- 'altitude',
633
- 'flip_doorhandle',
634
- 'open_doors',
635
- 'resize_and_scaling'
636
- ];
637
- }
638
-
639
- returnMoldings() {
640
- const element = this.props.element;
641
-
642
- let doorStyle = element.doorStyle;
643
- if (!doorStyle.doorStyles) {
644
- doorStyle = doorStyle.toJS();
645
- }
646
-
647
- // if an element is not suitable for its' doorStyle
648
- if (showYelloBox(element)) return [];
649
-
650
- let moldings = [];
651
- let cabinets = this.props.categoryData.data.cabinets;
652
- cabinets.forEach(cabinet => {
653
- cabinet.items.forEach(index => {
654
- if (
655
- index.name.toLowerCase().includes('molding') &&
656
- index.name !== TOE_KICK_MOLDING // hide toe kick in OP temporarily
657
- ) {
658
- index.items.forEach(item => {
659
- moldings.push(item);
660
- });
661
- }
662
- });
663
- });
664
- moldings = moldings.filter(a => {
665
- if (doorStyle.doorStyles.cds.some(ds => ds.itemID === a.itemID)) {
666
- if (hasMoldingLayout(a, element.layoutpos)) {
667
- let flag = element.molding.some(m => m.name === a.name);
668
- a.selected = flag;
669
- return true;
670
- }
671
- }
672
- return false;
673
- });
674
- return moldings;
675
- }
676
-
677
- setGroupMolding(molding) {
678
- this.context.itemsActions.setMolding(molding, false);
679
- }
680
-
681
- render() {
682
- let {
683
- state: { propertiesFormData, attributesFormData, isMolding },
684
- context: { projectActions, catalog, translator },
685
- props: { state: appState, element }
686
- } = this;
687
-
688
- const catalogType = catalog.getElement(element.type).type;
689
- const isCabinet =
690
- catalogType === 'cabinet' &&
691
- !catalog.getElement(element.type).long_name.includes('Filler') &&
692
- !catalog.getElement(element.type).long_name.includes('Panel');
693
- const isFiller =
694
- catalogType === 'cabinet' &&
695
- catalog.getElement(element.type).long_name.includes('Filler');
696
- const isAppliance = catalogType === 'appliance';
697
- const isWindow = catalog
698
- .getElement(element.type)
699
- .info.tag.includes('window');
700
- const isDoor = catalog.getElement(element.type).info.tag.includes('door');
701
- const isWall = catalog.getElement(element.type).info.tag.includes('wall');
702
- const shouldHideResizeAndModel = isCabinet || isWindow || isDoor || isWall;
703
- return (
704
- <div>
705
- {propertiesFormData.entrySeq().map(([propertyName, data]) => {
706
- if (
707
- (catalog.categoryHasElement('Windows', element.type) ||
708
- catalog.categoryHasElement('Doors', element.type)) &&
709
- ['width', 'height'].includes(propertyName)
710
- ) {
711
- let currentValue = data.get('currentValue'),
712
- configs = data.get('configs');
713
- let { Editor } = catalog.getPropertyType(configs.type);
714
- return (
715
- <div style={{ position: 'relative' }}>
716
- <Editor
717
- key={propertyName}
718
- propertyName={propertyName}
719
- value={currentValue}
720
- configs={configs}
721
- onUpdate={value => {
722
- this.updateProperty(propertyName, value);
723
- }}
724
- state={appState}
725
- sourceElement={element}
726
- internalState={this.state}
727
- />
728
- {configs.type === 'length-measure' && (
729
- <span
730
- style={{
731
- position: 'absolute',
732
- fontFamily: DEFAULT_FONT_FAMILY,
733
- fontSize: 12,
734
- right: 10,
735
- bottom: 12,
736
- color: TEXT_COLOR_NEUTRAL_2,
737
- fontWeight: 600,
738
- lineHeight: '17px'
739
- }}
740
- >
741
- {this.props.state.getIn([
742
- 'scene',
743
- 'layers',
744
- this.props.state.scene.selectedLayer,
745
- 'unit'
746
- ])}
747
- </span>
748
- )}
749
- </div>
750
- );
751
- }
752
- })}
753
-
754
- <CustomAccordion
755
- defaultExpanded
756
- icon={<img src="/assets/img/svg/positioning.svg" alt="" />}
757
- title={<PS.PositionValue>Positioning</PS.PositionValue>}
758
- children={(() => {
759
- return (
760
- <>
761
- <AttributesEditor
762
- element={element}
763
- onUpdate={this.updateAttribute}
764
- propertiesFormData={propertiesFormData}
765
- catalog={catalog}
766
- attributeFormData={attributesFormData}
767
- onConfigUpdate={(propertyName, value) =>
768
- this.updateProperty(propertyName, value)
769
- }
770
- state={appState}
771
- internalState={this.state}
772
- filteredProperties={['width', 'height', 'depth']}
773
- />
774
- {!shouldHideResizeAndModel && (
775
- <React.Fragment>
776
- <PS.PositionValue>Resize Model</PS.PositionValue>
777
- {propertiesFormData
778
- .entrySeq()
779
- .map(([propertyName, data]) => {
780
- let currentValue = data.get('currentValue'),
781
- configs = data.get('configs');
782
- let { Editor } = catalog.getPropertyType(configs.type);
783
- if (
784
- !this.state.isResizeActive &&
785
- configs.id === 'resize_and_scaling'
786
- ) {
787
- this.setState({ isResizeActive: currentValue });
788
- }
789
- return (
790
- configs.type !== 'length-measure' &&
791
- propertyName === 'resize_and_scaling' && (
792
- <div style={{ position: 'relative' }}>
793
- <Editor
794
- key={propertyName}
795
- propertyName={propertyName}
796
- value={currentValue}
797
- configs={configs}
798
- onUpdate={value => {
799
- this.updateProperty(propertyName, value);
800
- this.setState({
801
- ...this.state,
802
- isResizeActive: value
803
- });
804
- }}
805
- state={appState}
806
- sourceElement={element}
807
- internalState={this.state}
808
- />
809
- </div>
810
- )
811
- );
812
- })}
813
- </React.Fragment>
814
- )}
815
- {!(isWindow || isDoor || isWall) && (
816
- <AttributesEditor
817
- element={element}
818
- onUpdate={this.updateAttribute}
819
- propertiesFormData={propertiesFormData}
820
- catalog={catalog}
821
- attributeFormData={attributesFormData}
822
- onConfigUpdate={(propertyName, value) => {
823
- let distLeft = 0,
824
- distRight = 0,
825
- distBack = 0,
826
- distFront = 0;
827
-
828
- const distArray = element?.distArray;
829
- if (Array.isArray(distArray)) {
830
- for (let i = 0; i < 4; i++) {
831
- const entry = distArray[i];
832
- if (!entry || entry.length < 2) continue;
833
-
834
- const [dist, side] = entry;
835
- const inches = convert(dist).from('cm').to('in');
836
-
837
- switch (side) {
838
- case Left:
839
- distLeft = inches;
840
- break;
841
- case Right:
842
- distRight = inches;
843
- break;
844
- case Back:
845
- distBack = inches;
846
- break;
847
- case Front:
848
- distFront = inches;
849
- break;
850
- }
851
- }
852
- }
853
-
854
- const scene = this.props.state.get('scene');
855
- const selectedLayer = scene.getIn([
856
- 'layers',
857
- scene.get('selectedLayer')
858
- ]);
859
- const selectedLayerJS = selectedLayer?.toJS?.() || {};
860
-
861
- const newValue = value?._root?.entries?.[0]?.[1];
862
-
863
- if (
864
- propertyName === 'height' &&
865
- newValue > selectedLayerJS.ceilHeight
866
- ) {
867
- // TODO: Show user-friendly warning — "Item height exceeds ceiling height"
868
- // return;
869
- }
870
-
871
- if (
872
- propertyName === 'width' &&
873
- newValue > distLeft + distRight
874
- ) {
875
- // TODO: Show user-friendly warning — "Item width exceeds available left/right space"
876
- // return;
877
- }
878
-
879
- if (
880
- propertyName === 'depth' &&
881
- newValue > distBack + distFront
882
- ) {
883
- // TODO: Show user-friendly warning — "Item depth exceeds available back/front space"
884
- // return;
885
- }
886
-
887
- this.updateProperty(propertyName, value);
888
- }}
889
- state={appState}
890
- internalState={this.state}
891
- filteredProperties={this.returnResizeFilterList()}
892
- shouldOnlyShowEditorOptions={true}
893
- />
894
- )}
895
- </>
896
- );
897
- })()}
898
- />
899
- {/* <div style={attrPorpSeparatorStyle}>
900
- <div style={headActionStyle}>
901
- <div title={translator.t('Remove')} style={iconHeadStyle} onClick={e => projectActions.remove()}><MdDelete /></div>
902
- <div title={translator.t('Copy')} style={iconHeadStyle} onClick={e => this.copyProperties(element.properties)}><MdContentCopy /></div>
903
- {
904
- appState.get('clipboardProperties') && appState.get('clipboardProperties').size ?
905
- <div title={translator.t('Paste')} style={iconHeadStyle} onClick={e => this.pasteProperties()}><MdContentPaste /></div> : null
906
- }
907
- </div>
908
- </div> */}
909
- {(isCabinet || isDoor) && this.props.state.mode.includes('3D') && (
910
- <React.Fragment>
911
- <CustomAccordion
912
- icon={<img src="/assets/img/svg/options.svg" alt="" />}
913
- title={<PS.PositionValue>Options</PS.PositionValue>}
914
- children={(() => {
915
- return propertiesFormData
916
- .entrySeq()
917
- .map(([propertyName, data]) => {
918
- if (
919
- propertyName === 'flip_doorhandle' &&
920
- !isEmpty(this.props.planData)
921
- ) {
922
- let scene = this.props.state.get('scene');
923
- let selectedLayer = scene.getIn([
924
- 'layers',
925
- scene.get('selectedLayer')
926
- ]);
927
- let item3D =
928
- this.props.planData.sceneGraph.layers[selectedLayer.id]
929
- .items[element.id];
930
- let flag = false;
931
- !isEmpty(item3D) &&
932
- item3D.children[0].children.forEach(child => {
933
- // get the door mesh's name
934
- let match = child.name.match(
935
- /\d_(door[^LR1-9]*)(_[LR])?(_[1-9])?$/
936
- );
937
- // check whether mesh's name contains the '_L' or '_R'
938
- if (
939
- !isEmpty(match) &&
940
- (match[2] === '_L' || match[2] === '_R')
941
- )
942
- flag = true;
943
- });
944
- if (flag === true) return null;
945
- }
946
- if (catalog.categoryHasElement('Windows', element.type)) {
947
- if (
948
- ['thickness', 'width', 'height'].includes(propertyName)
949
- ) {
950
- return null;
951
- }
952
- }
953
- if (catalog.categoryHasElement('Doors', element.type)) {
954
- if (
955
- ['altitude', 'thickness', 'width', 'height'].includes(
956
- propertyName
957
- )
958
- ) {
959
- return null;
960
- }
961
- }
962
- if (propertyName === 'resize_and_scaling') return null;
963
-
964
- let catalogElement = catalog.getElement(element.type);
965
- // if ((catalogElement.info.has_single_door === undefined || catalogElement.info.has_single_door == false) && propertyName == 'flip_doorhandle') {
966
- // return null;
967
- // }
968
-
969
- let currentValue = data.get('currentValue'),
970
- configs = data.get('configs');
971
- let { Editor } = catalog.getPropertyType(configs.type);
972
- return (
973
- configs.type !== 'length-measure' && (
974
- <div style={{ position: 'relative' }}>
975
- <Editor
976
- key={propertyName}
977
- propertyName={propertyName}
978
- value={currentValue}
979
- configs={configs}
980
- onUpdate={value =>
981
- this.updateProperty(propertyName, value)
982
- }
983
- state={appState}
984
- sourceElement={element}
985
- internalState={this.state}
986
- />
987
- {configs.type === 'length-measure' && (
988
- <span
989
- style={{
990
- position: 'absolute',
991
- fontFamily: DEFAULT_FONT_FAMILY,
992
- fontSize: 12,
993
- right: 10,
994
- bottom: 12,
995
- color: TEXT_COLOR_NEUTRAL_2,
996
- fontWeight: 600,
997
- lineHeight: '17px'
998
- }}
999
- >
1000
- in
1001
- </span>
1002
- )}
1003
- </div>
1004
- )
1005
- );
1006
- });
1007
- })()}
1008
- />
1009
- </React.Fragment>
1010
- )}
1011
- {isCabinet && isMolding && !!this.returnMoldings().length > 0 && (
1012
- <div>
1013
- <CustomAccordion
1014
- icon={<img src="/assets/img/svg/accessories.svg" alt="" />}
1015
- title={<PS.PositionValue>Molding</PS.PositionValue>}
1016
- children={(() => {
1017
- return this.returnMoldings().map(molding => {
1018
- return (
1019
- <S.SubCategoryItem
1020
- id={molding.id}
1021
- style={{ minWidth: 250 }}
1022
- onClick={() => {
1023
- this.setGroupMolding(molding);
1024
- }}
1025
- key={molding.id}
1026
- >
1027
- <img
1028
- id={`molding&${molding.id}`}
1029
- style={{ height: 70, width: 70, padding: 5 }}
1030
- src={molding.thumbnail}
1031
- />
1032
- <S.ContentCheckImage
1033
- id="check"
1034
- src="/assets/img/svg/wizardstep/check-normal.svg"
1035
- />
1036
- {molding.selected && (
1037
- <S.ContentCheckImage src="/assets/img/svg/wizardstep/check-active.svg" />
1038
- )}
1039
- <S.SubCategoryItemLabel
1040
- style={{ fontWeight: molding.selected && 700 }}
1041
- >
1042
- {molding.name}
1043
- </S.SubCategoryItemLabel>
1044
- </S.SubCategoryItem>
1045
- );
1046
- });
1047
- })()}
1048
- />
1049
- </div>
1050
- )}
1051
- </div>
1052
- );
1053
- }
1054
- }
1055
-
1056
- ElementEditor.propTypes = {
1057
- state: PropTypes.object.isRequired,
1058
- planData: PropTypes.object.isRequired,
1059
- element: PropTypes.object.isRequired,
1060
- layer: PropTypes.object.isRequired,
1061
- categoryData: PropTypes.object.isRequired,
1062
- getLinearOfMolding: PropTypes.func.isRequired
1063
- };
1064
-
1065
- ElementEditor.contextTypes = {
1066
- itemsActions: PropTypes.object.isRequired,
1067
- projectActions: PropTypes.object.isRequired,
1068
- catalog: PropTypes.object.isRequired,
1069
- translator: PropTypes.object.isRequired
1070
- };