kitchen-simulator 5.0.0-test.7 → 5.0.0-test.71

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 (606) hide show
  1. package/README.md +1 -1
  2. package/package.json +22 -63
  3. package/src/KitchenConfiguratorApp.jsx +5 -5
  4. package/src/_KitchenConfigurator.jsx +578 -0
  5. package/src/actions/export.js +2 -5
  6. package/src/assets/Window.hdr +2100 -0
  7. package/src/assets/brown_photostudio_02_1k.hdr +0 -0
  8. package/src/assets/fonts/Rene Bieder Milliard Black Italic.woff +0 -0
  9. package/src/assets/fonts/Rene Bieder Milliard Black.woff +0 -0
  10. package/src/assets/fonts/Rene Bieder Milliard Bold Italic.woff +0 -0
  11. package/src/assets/fonts/Rene Bieder Milliard Bold.woff +0 -0
  12. package/src/assets/fonts/Rene Bieder Milliard Book Italic.woff +0 -0
  13. package/src/assets/fonts/Rene Bieder Milliard Book.woff +0 -0
  14. package/src/assets/fonts/Rene Bieder Milliard ExtraBold Italic.woff +0 -0
  15. package/src/assets/fonts/Rene Bieder Milliard ExtraBold.woff +0 -0
  16. package/src/assets/fonts/Rene Bieder Milliard ExtraLight Italic.woff +0 -0
  17. package/src/assets/fonts/Rene Bieder Milliard ExtraLight.woff +0 -0
  18. package/src/assets/fonts/Rene Bieder Milliard Hairline Italic.woff +0 -0
  19. package/src/assets/fonts/Rene Bieder Milliard Hairline.woff +0 -0
  20. package/src/assets/fonts/Rene Bieder Milliard Heavy Italic.woff +0 -0
  21. package/src/assets/fonts/Rene Bieder Milliard Heavy.woff +0 -0
  22. package/src/assets/fonts/Rene Bieder Milliard Light Italic.woff +0 -0
  23. package/src/assets/fonts/Rene Bieder Milliard Light.woff +0 -0
  24. package/src/assets/fonts/Rene Bieder Milliard Medium Italic.woff +0 -0
  25. package/src/assets/fonts/Rene Bieder Milliard Medium.woff +0 -0
  26. package/src/assets/fonts/Rene Bieder Milliard SemiBold Italic.woff +0 -0
  27. package/src/assets/fonts/Rene Bieder Milliard SemiBold.woff +0 -0
  28. package/src/assets/fonts/Rene Bieder Milliard Thin Italic.woff +0 -0
  29. package/src/assets/fonts/Rene Bieder Milliard Thin.woff +0 -0
  30. package/src/assets/fonts/style.css +177 -0
  31. package/src/assets/gltf/door_closet.bin +0 -0
  32. package/src/assets/gltf/door_closet.fbx +0 -0
  33. package/src/assets/gltf/door_closet.gltf +1 -0
  34. package/src/assets/gltf/door_exterior.bin +0 -0
  35. package/src/assets/gltf/door_exterior.fbx +0 -0
  36. package/src/assets/gltf/door_exterior.gltf +1 -0
  37. package/src/assets/gltf/door_interior.bin +0 -0
  38. package/src/assets/gltf/door_interior.fbx +0 -0
  39. package/src/assets/gltf/door_interior.gltf +1 -0
  40. package/src/assets/gltf/door_sliding.bin +0 -0
  41. package/src/assets/gltf/door_sliding.fbx +0 -0
  42. package/src/assets/gltf/door_sliding.gltf +1 -0
  43. package/src/assets/gltf/doorway_framed.bin +0 -0
  44. package/src/assets/gltf/doorway_framed.fbx +0 -0
  45. package/src/assets/gltf/doorway_framed.gltf +1 -0
  46. package/src/assets/gltf/window_clear.bin +0 -0
  47. package/src/assets/gltf/window_clear.fbx +0 -0
  48. package/src/assets/gltf/window_clear.gltf +1 -0
  49. package/src/assets/gltf/window_cross.bin +0 -0
  50. package/src/assets/gltf/window_cross.fbx +0 -0
  51. package/src/assets/gltf/window_cross.gltf +1 -0
  52. package/src/assets/gltf/window_double_hung.bin +0 -0
  53. package/src/assets/gltf/window_double_hung.fbx +0 -0
  54. package/src/assets/gltf/window_double_hung.gltf +1 -0
  55. package/src/assets/gltf/window_vertical.bin +0 -0
  56. package/src/assets/gltf/window_vertical.fbx +0 -0
  57. package/src/assets/gltf/window_vertical.gltf +1 -0
  58. package/src/assets/img/1.jpg +0 -0
  59. package/src/assets/img/TKC_thumbnail.png +0 -0
  60. package/src/assets/img/Toggle.png +0 -0
  61. package/src/assets/img/loading/loading.gif +0 -0
  62. package/src/assets/img/loading/loading_1.svg +11 -0
  63. package/src/assets/img/loading_large.gif +0 -0
  64. package/src/assets/img/png/door/closet.png +0 -0
  65. package/src/assets/img/png/door/doorwaysframed.png +0 -0
  66. package/src/assets/img/png/door/doorwaysframeles.png +0 -0
  67. package/src/assets/img/png/door/doorwaysframeless.png +0 -0
  68. package/src/assets/img/png/door/exterior.png +0 -0
  69. package/src/assets/img/png/door/interior.png +0 -0
  70. package/src/assets/img/png/door/sliding.png +0 -0
  71. package/src/assets/img/png/helper/outcome.png +0 -0
  72. package/src/assets/img/png/helper/video_preview_3d.png +0 -0
  73. package/src/assets/img/png/helper/video_preview_start.png +0 -0
  74. package/src/assets/img/project_img.png +0 -0
  75. package/src/assets/img/rta/rta_logo_box_blue.jpg +0 -0
  76. package/src/assets/img/rta/rta_logo_box_blue_ico.jpg +0 -0
  77. package/src/assets/img/rta/rta_logo_box_blue_ico.svg +55 -0
  78. package/src/assets/img/rta/rta_logo_box_darkGray.jpg +0 -0
  79. package/src/assets/img/rta/rta_logo_box_lightblue.png +0 -0
  80. package/src/assets/img/rta/rta_logo_box_lightmaroon.png +0 -0
  81. package/src/assets/img/rta/rta_logo_box_maroon.png +0 -0
  82. package/src/assets/img/rta/rta_logo_box_white.png +0 -0
  83. package/src/assets/img/rta_menu.png +0 -0
  84. package/src/assets/img/step2.jpg +0 -0
  85. package/src/assets/img/step3.jpg +0 -0
  86. package/src/assets/img/step4.jpg +0 -0
  87. package/src/assets/img/step5.jpg +0 -0
  88. package/src/assets/img/step6.jpg +0 -0
  89. package/src/assets/img/step7.jpg +0 -0
  90. package/src/assets/img/step8.jpg +0 -0
  91. package/src/assets/img/svg/2d_delete_object.svg +33 -0
  92. package/src/assets/img/svg/2d_delete_object1.svg +33 -0
  93. package/src/assets/img/svg/2d_lock_object.svg +33 -0
  94. package/src/assets/img/svg/3d_item_move.svg +106 -0
  95. package/src/assets/img/svg/3d_item_rotation.svg +76 -0
  96. package/src/assets/img/svg/3d_item_warning_edit.svg +77 -0
  97. package/src/assets/img/svg/3d_item_warning_info.svg +81 -0
  98. package/src/assets/img/svg/accessories.svg +4 -0
  99. package/src/assets/img/svg/angle_icon.svg +39 -0
  100. package/src/assets/img/svg/blank_div.svg +14 -0
  101. package/src/assets/img/svg/bottombar/2d3d_button.svg +3 -0
  102. package/src/assets/img/svg/bottombar/2d3d_button_active.svg +3 -0
  103. package/src/assets/img/svg/bottombar/2d3d_toggle.svg +4 -0
  104. package/src/assets/img/svg/bottombar/2d3d_toggle_active.svg +4 -0
  105. package/src/assets/img/svg/bottombar/arrow-down.svg +3 -0
  106. package/src/assets/img/svg/bottombar/arrow-left.svg +3 -0
  107. package/src/assets/img/svg/bottombar/arrow-minus.svg +3 -0
  108. package/src/assets/img/svg/bottombar/arrow-plus.svg +11 -0
  109. package/src/assets/img/svg/bottombar/arrow-right.svg +3 -0
  110. package/src/assets/img/svg/bottombar/arrow-up.svg +3 -0
  111. package/src/assets/img/svg/bottombar/collapse.svg +3 -0
  112. package/src/assets/img/svg/bottombar/elevation-back.svg +6 -0
  113. package/src/assets/img/svg/bottombar/elevation-front.svg +6 -0
  114. package/src/assets/img/svg/bottombar/elevation-left.svg +6 -0
  115. package/src/assets/img/svg/bottombar/elevation-right.svg +7 -0
  116. package/src/assets/img/svg/bottombar/elevation.svg +6 -0
  117. package/src/assets/img/svg/bottombar/expand.svg +3 -0
  118. package/src/assets/img/svg/bottombar/help.svg +72 -0
  119. package/src/assets/img/svg/bottombar/incm_toggle.svg +39 -0
  120. package/src/assets/img/svg/bottombar/pan_1.svg +57 -0
  121. package/src/assets/img/svg/bottombar/pan_2.svg +27 -0
  122. package/src/assets/img/svg/bottombar/pan_3.svg +27 -0
  123. package/src/assets/img/svg/bottombar/pan_4.svg +27 -0
  124. package/src/assets/img/svg/bottombar/pan_5.svg +27 -0
  125. package/src/assets/img/svg/bottombar/settings.svg +23 -0
  126. package/src/assets/img/svg/bottombar/spin-down.svg +76 -0
  127. package/src/assets/img/svg/bottombar/spin-left.svg +75 -0
  128. package/src/assets/img/svg/bottombar/spin-right.svg +75 -0
  129. package/src/assets/img/svg/bottombar/spin-up.svg +76 -0
  130. package/src/assets/img/svg/bottombar/spin_1.svg +48 -0
  131. package/src/assets/img/svg/bottombar/spin_2.svg +31 -0
  132. package/src/assets/img/svg/bottombar/spin_3.svg +31 -0
  133. package/src/assets/img/svg/bottombar/spin_4.svg +31 -0
  134. package/src/assets/img/svg/bottombar/spin_5.svg +31 -0
  135. package/src/assets/img/svg/bottombar/zoomin.svg +29 -0
  136. package/src/assets/img/svg/bottombar/zoomout.svg +26 -0
  137. package/src/assets/img/svg/check.svg +10 -0
  138. package/src/assets/img/svg/close.svg +11 -0
  139. package/src/assets/img/svg/color/Black.svg +3 -0
  140. package/src/assets/img/svg/color/Blue.svg +3 -0
  141. package/src/assets/img/svg/color/Brown.svg +9 -0
  142. package/src/assets/img/svg/color/Cream.svg +3 -0
  143. package/src/assets/img/svg/color/Dark.svg +9 -0
  144. package/src/assets/img/svg/color/Gray.svg +3 -0
  145. package/src/assets/img/svg/color/Green.svg +3 -0
  146. package/src/assets/img/svg/color/Light.svg +9 -0
  147. package/src/assets/img/svg/color/Medium.svg +9 -0
  148. package/src/assets/img/svg/color/Unfinished.svg +9 -0
  149. package/src/assets/img/svg/color/White.svg +3 -0
  150. package/src/assets/img/svg/color/White.svg.bak +3 -0
  151. package/src/assets/img/svg/color/stone2.jpg +0 -0
  152. package/src/assets/img/svg/color/wood2.jpg +0 -0
  153. package/src/assets/img/svg/copy.svg +11 -0
  154. package/src/assets/img/svg/delete.svg +3 -0
  155. package/src/assets/img/svg/detail.svg +77 -0
  156. package/src/assets/img/svg/door/Closet.svg +11 -0
  157. package/src/assets/img/svg/door/Exterior.svg +5 -0
  158. package/src/assets/img/svg/door/Framed_dorway.svg +5 -0
  159. package/src/assets/img/svg/door/Frameless_dorway.svg +5 -0
  160. package/src/assets/img/svg/door/Interior.svg +7 -0
  161. package/src/assets/img/svg/door/Sliding.svg +5 -0
  162. package/src/assets/img/svg/doors_closet.svg +47 -0
  163. package/src/assets/img/svg/doors_exterior.svg +25 -0
  164. package/src/assets/img/svg/doors_interior.svg +29 -0
  165. package/src/assets/img/svg/doors_patio.svg +26 -0
  166. package/src/assets/img/svg/duplicate.svg +11 -0
  167. package/src/assets/img/svg/duplicate_object_left.svg +32 -0
  168. package/src/assets/img/svg/duplicate_object_right.svg +32 -0
  169. package/src/assets/img/svg/filtersActive.svg +19 -0
  170. package/src/assets/img/svg/firstsetting/L.svg +3 -0
  171. package/src/assets/img/svg/firstsetting/L2.svg +3 -0
  172. package/src/assets/img/svg/firstsetting/Open.svg +3 -0
  173. package/src/assets/img/svg/firstsetting/Square.svg +3 -0
  174. package/src/assets/img/svg/firstsetting/bar-active.svg +9 -0
  175. package/src/assets/img/svg/firstsetting/bar-normal.svg +3 -0
  176. package/src/assets/img/svg/firstsetting/bullet-current.svg +3 -0
  177. package/src/assets/img/svg/firstsetting/bullet-done.svg +3 -0
  178. package/src/assets/img/svg/firstsetting/bullet-not-done.svg +3 -0
  179. package/src/assets/img/svg/firstsetting/check-active.svg +3 -0
  180. package/src/assets/img/svg/firstsetting/check-normal.svg +3 -0
  181. package/src/assets/img/svg/firstsetting/pencil.svg +11 -0
  182. package/src/assets/img/svg/green_checkmark.svg +27 -0
  183. package/src/assets/img/svg/headerbar/assist.svg +3 -0
  184. package/src/assets/img/svg/headerbar/cart.svg +3 -0
  185. package/src/assets/img/svg/headerbar/check.svg +10 -0
  186. package/src/assets/img/svg/headerbar/consult_designer.svg +45 -0
  187. package/src/assets/img/svg/headerbar/edit_name.svg +26 -0
  188. package/src/assets/img/svg/headerbar/file-dollar.svg +13 -0
  189. package/src/assets/img/svg/headerbar/hamburger_menu.svg +32 -0
  190. package/src/assets/img/svg/headerbar/plus.svg +11 -0
  191. package/src/assets/img/svg/headerbar/review_quote.svg +44 -0
  192. package/src/assets/img/svg/headerbar/ruler-measure.svg +11 -0
  193. package/src/assets/img/svg/headerbar/save.svg +3 -0
  194. package/src/assets/img/svg/headerbar/setting.svg +75 -0
  195. package/src/assets/img/svg/help/check.svg +10 -0
  196. package/src/assets/img/svg/help/search.svg +76 -0
  197. package/src/assets/img/svg/intro/1-start-with-floorplan-whole.svg +27 -0
  198. package/src/assets/img/svg/intro/1-start-with-floorplan.svg +26 -0
  199. package/src/assets/img/svg/intro/2-start-from-scratch-whole.svg +28 -0
  200. package/src/assets/img/svg/intro/2-start-from-scratch.svg +27 -0
  201. package/src/assets/img/svg/intro/3-retrieve-project-whole.svg +19 -0
  202. package/src/assets/img/svg/intro/3-retrieve-project.svg +18 -0
  203. package/src/assets/img/svg/invert.svg +127 -0
  204. package/src/assets/img/svg/lefttoolbar/appliance-active.svg +13 -0
  205. package/src/assets/img/svg/lefttoolbar/appliance.svg +13 -0
  206. package/src/assets/img/svg/lefttoolbar/cabinet-active.svg +10 -0
  207. package/src/assets/img/svg/lefttoolbar/cabinet-category.svg +3 -0
  208. package/src/assets/img/svg/lefttoolbar/cabinet-one.svg +3 -0
  209. package/src/assets/img/svg/lefttoolbar/cabinet.svg +10 -0
  210. package/src/assets/img/svg/lefttoolbar/disigner_assistance.svg +89 -0
  211. package/src/assets/img/svg/lefttoolbar/door-style-active.svg +20 -0
  212. package/src/assets/img/svg/lefttoolbar/door-style.svg +20 -0
  213. package/src/assets/img/svg/lefttoolbar/door.svg +12 -0
  214. package/src/assets/img/svg/lefttoolbar/error_icon.svg +81 -0
  215. package/src/assets/img/svg/lefttoolbar/finishing-active.svg +13 -0
  216. package/src/assets/img/svg/lefttoolbar/finishing.svg +13 -0
  217. package/src/assets/img/svg/lefttoolbar/reviewforquote-active.svg +86 -0
  218. package/src/assets/img/svg/lefttoolbar/reviewforquote.svg +12 -0
  219. package/src/assets/img/svg/lefttoolbar/room-shape-L.svg +3 -0
  220. package/src/assets/img/svg/lefttoolbar/room-shape-active.svg +18 -0
  221. package/src/assets/img/svg/lefttoolbar/room-shape-custom.svg +12 -0
  222. package/src/assets/img/svg/lefttoolbar/room-shape-irregular.svg +3 -0
  223. package/src/assets/img/svg/lefttoolbar/room-shape-open.svg +3 -0
  224. package/src/assets/img/svg/lefttoolbar/room-shape-square.svg +3 -0
  225. package/src/assets/img/svg/lefttoolbar/room-shape.svg +18 -0
  226. package/src/assets/img/svg/lefttoolbar/search.svg +76 -0
  227. package/src/assets/img/svg/lefttoolbar/view_more.svg +86 -0
  228. package/src/assets/img/svg/lefttoolbar/warning_icon.svg +81 -0
  229. package/src/assets/img/svg/lefttoolbar/window.svg +12 -0
  230. package/src/assets/img/svg/menubar/login.svg +84 -0
  231. package/src/assets/img/svg/menubar/my_projects.svg +85 -0
  232. package/src/assets/img/svg/menubar/new_project.svg +110 -0
  233. package/src/assets/img/svg/menubar/save_project.svg +84 -0
  234. package/src/assets/img/svg/options.svg +3 -0
  235. package/src/assets/img/svg/positioning.svg +3 -0
  236. package/src/assets/img/svg/rotate.png +0 -0
  237. package/src/assets/img/svg/rotate.svg +17 -0
  238. package/src/assets/img/svg/rotate_object_clockwise.svg +26 -0
  239. package/src/assets/img/svg/rotate_object_counterclockwise.svg +26 -0
  240. package/src/assets/img/svg/toggleFilters.svg +19 -0
  241. package/src/assets/img/svg/toolbar/add_appliances_active.svg +64 -0
  242. package/src/assets/img/svg/toolbar/add_appliances_inactive.svg +52 -0
  243. package/src/assets/img/svg/toolbar/add_button.svg +36 -0
  244. package/src/assets/img/svg/toolbar/add_cabinets_active.svg +59 -0
  245. package/src/assets/img/svg/toolbar/add_cabinets_inactive.svg +49 -0
  246. package/src/assets/img/svg/toolbar/add_items_doors.svg +25 -0
  247. package/src/assets/img/svg/toolbar/add_items_doorways.svg +24 -0
  248. package/src/assets/img/svg/toolbar/add_items_refrigerator.svg +32 -0
  249. package/src/assets/img/svg/toolbar/add_items_windows.svg +28 -0
  250. package/src/assets/img/svg/toolbar/apply_button.svg +38 -0
  251. package/src/assets/img/svg/toolbar/arrow-plus.svg +11 -0
  252. package/src/assets/img/svg/toolbar/backsplash.svg +8 -0
  253. package/src/assets/img/svg/toolbar/cancel_button.svg +37 -0
  254. package/src/assets/img/svg/toolbar/consult_a_designer_button.svg +47 -0
  255. package/src/assets/img/svg/toolbar/countertop.svg +7 -0
  256. package/src/assets/img/svg/toolbar/dcm.png +0 -0
  257. package/src/assets/img/svg/toolbar/dcm_off.svg +12 -0
  258. package/src/assets/img/svg/toolbar/dcm_on.svg +474 -0
  259. package/src/assets/img/svg/toolbar/delete_button.svg +37 -0
  260. package/src/assets/img/svg/toolbar/download.svg +77 -0
  261. package/src/assets/img/svg/toolbar/draw_custom_floor.svg +31 -0
  262. package/src/assets/img/svg/toolbar/edit_button.svg +75 -0
  263. package/src/assets/img/svg/toolbar/email_quote_button.svg +44 -0
  264. package/src/assets/img/svg/toolbar/fbm.png +0 -0
  265. package/src/assets/img/svg/toolbar/finishing_touches_active.svg +54 -0
  266. package/src/assets/img/svg/toolbar/finishing_touches_inactive.svg +42 -0
  267. package/src/assets/img/svg/toolbar/floorstyle.svg +9 -0
  268. package/src/assets/img/svg/toolbar/fmb.png +0 -0
  269. package/src/assets/img/svg/toolbar/fmb_off.svg +12 -0
  270. package/src/assets/img/svg/toolbar/fmb_on.svg +489 -0
  271. package/src/assets/img/svg/toolbar/furnishings_icon.svg +6 -0
  272. package/src/assets/img/svg/toolbar/get_started_button.svg +41 -0
  273. package/src/assets/img/svg/toolbar/handles.svg +5 -0
  274. package/src/assets/img/svg/toolbar/lighting.svg +7 -0
  275. package/src/assets/img/svg/toolbar/lrm.png +0 -0
  276. package/src/assets/img/svg/toolbar/lrm_off.svg +12 -0
  277. package/src/assets/img/svg/toolbar/lrm_on.svg +470 -0
  278. package/src/assets/img/svg/toolbar/make_floorplan_active.svg +66 -0
  279. package/src/assets/img/svg/toolbar/make_floorplan_inactive.svg +52 -0
  280. package/src/assets/img/svg/toolbar/predefined_room_l_shaped.svg +20 -0
  281. package/src/assets/img/svg/toolbar/predefined_room_layout.svg +20 -0
  282. package/src/assets/img/svg/toolbar/predefined_room_long_narrow.svg +20 -0
  283. package/src/assets/img/svg/toolbar/predefined_room_open_l_shape.svg +20 -0
  284. package/src/assets/img/svg/toolbar/predefined_room_open_pentagon.svg +20 -0
  285. package/src/assets/img/svg/toolbar/predefined_room_open_rectangle.svg +20 -0
  286. package/src/assets/img/svg/toolbar/predefined_room_open_rectangle_2.svg +20 -0
  287. package/src/assets/img/svg/toolbar/predefined_room_pentagon.svg +20 -0
  288. package/src/assets/img/svg/toolbar/predefined_room_rectangle.svg +20 -0
  289. package/src/assets/img/svg/toolbar/predefined_room_rectangle_with_alcove.svg +20 -0
  290. package/src/assets/img/svg/toolbar/redo_button.svg +75 -0
  291. package/src/assets/img/svg/toolbar/redo_button1.svg +75 -0
  292. package/src/assets/img/svg/toolbar/review_quote_active.svg +14 -0
  293. package/src/assets/img/svg/toolbar/review_quote_inactive.svg +44 -0
  294. package/src/assets/img/svg/toolbar/save_project_button.svg +44 -0
  295. package/src/assets/img/svg/toolbar/select_doorstyle_active.svg +67 -0
  296. package/src/assets/img/svg/toolbar/select_doorstyle_inactive.svg +57 -0
  297. package/src/assets/img/svg/toolbar/shopping-cart.svg +13 -0
  298. package/src/assets/img/svg/toolbar/style_change_button.svg +47 -0
  299. package/src/assets/img/svg/toolbar/take_picture.svg +75 -0
  300. package/src/assets/img/svg/toolbar/undo_button.svg +76 -0
  301. package/src/assets/img/svg/toolbar/undo_button1.svg +76 -0
  302. package/src/assets/img/svg/toolbar/use_button.svg +37 -0
  303. package/src/assets/img/svg/toolbar/wall_color_icon.svg +6 -0
  304. package/src/assets/img/svg/topbar/edit_active.svg +10 -0
  305. package/src/assets/img/svg/topbar/edit_inactive.svg +10 -0
  306. package/src/assets/img/svg/topbar/redo_active.svg +42 -0
  307. package/src/assets/img/svg/topbar/redo_inactive.svg +23 -0
  308. package/src/assets/img/svg/topbar/select_all_active.svg +50 -0
  309. package/src/assets/img/svg/topbar/select_all_inactive.svg +32 -0
  310. package/src/assets/img/svg/topbar/take_picture_active.svg +51 -0
  311. package/src/assets/img/svg/topbar/take_picture_inactive.svg +26 -0
  312. package/src/assets/img/svg/topbar/undo_active.svg +42 -0
  313. package/src/assets/img/svg/topbar/undo_inactive.svg +23 -0
  314. package/src/assets/img/svg/warning_info_2d.svg +81 -0
  315. package/src/assets/img/svg/window/Clear.svg +3 -0
  316. package/src/assets/img/svg/window/Cross.svg +5 -0
  317. package/src/assets/img/svg/window/Double_hung.svg +4 -0
  318. package/src/assets/img/svg/window/Vertical.svg +4 -0
  319. package/src/assets/img/svg/windows_clear.svg +23 -0
  320. package/src/assets/img/svg/windows_cross.svg +28 -0
  321. package/src/assets/img/svg/windows_double_hung.svg +24 -0
  322. package/src/assets/img/svg/windows_vertical.svg +24 -0
  323. package/src/assets/img/svg/wizardstep/Custom.svg +3 -0
  324. package/src/assets/img/svg/wizardstep/Dashed_line.svg +3 -0
  325. package/src/assets/img/svg/wizardstep/L.svg +3 -0
  326. package/src/assets/img/svg/wizardstep/L2.svg +3 -0
  327. package/src/assets/img/svg/wizardstep/Open.svg +3 -0
  328. package/src/assets/img/svg/wizardstep/Square.svg +3 -0
  329. package/src/assets/img/svg/wizardstep/bar-active.svg +9 -0
  330. package/src/assets/img/svg/wizardstep/bar-normal.svg +3 -0
  331. package/src/assets/img/svg/wizardstep/bullet-current.svg +3 -0
  332. package/src/assets/img/svg/wizardstep/bullet-done.svg +3 -0
  333. package/src/assets/img/svg/wizardstep/bullet-not-done.svg +3 -0
  334. package/src/assets/img/svg/wizardstep/check-active.svg +3 -0
  335. package/src/assets/img/svg/wizardstep/check-normal.svg +3 -0
  336. package/src/assets/img/svg/wizardstep/detail_view.svg +87 -0
  337. package/src/assets/img/svg/wizardstep/pencil.svg +11 -0
  338. package/src/assets/img/svg/wizardstep/tile_view.svg +95 -0
  339. package/src/assets/img/texture/glass.jpg +0 -0
  340. package/src/assets/img/texture/steel.jpg +0 -0
  341. package/src/assets/img/texture/white1px.jpg +0 -0
  342. package/src/assets/img/texture/wood.jpg +0 -0
  343. package/src/assets/model/DCM.bin +0 -0
  344. package/src/assets/model/DCM.fbx +0 -0
  345. package/src/assets/model/DCM.gltf +1 -0
  346. package/src/assets/model/FBM.bin +0 -0
  347. package/src/assets/model/FBM.fbx +0 -0
  348. package/src/assets/model/FBM.gltf +1 -0
  349. package/src/assets/model/LRM.bin +0 -0
  350. package/src/assets/model/LRM.fbx +0 -0
  351. package/src/assets/model/LRM.gltf +1 -0
  352. package/src/assets/rtastore_logo.png +0 -0
  353. package/src/catalog/areas/area/planner-element.jsx +1 -1
  354. package/src/catalog/factories/wall-factory-3d.js +11 -18
  355. package/src/catalog/holes/index.js +13 -0
  356. package/src/catalog/lines/wall/planner-element.jsx +1 -1
  357. package/src/catalog/mycatalog.js +26 -0
  358. package/src/catalog/properties/property-checkbox.jsx +64 -68
  359. package/src/catalog/properties/property-color.jsx +1 -1
  360. package/src/catalog/properties/property-enum.jsx +37 -40
  361. package/src/catalog/properties/property-hidden.jsx +1 -1
  362. package/src/catalog/properties/property-lenght-measure.jsx +2 -2
  363. package/src/catalog/properties/property-length-measure.jsx +37 -40
  364. package/src/catalog/properties/property-length-measure_hole.jsx +2 -2
  365. package/src/catalog/properties/property-number.jsx +1 -1
  366. package/src/catalog/properties/property-read-only.jsx +1 -1
  367. package/src/catalog/properties/property-string.jsx +1 -1
  368. package/src/catalog/properties/property-toggle.jsx +1 -1
  369. package/src/catalog/utils/exporter.js +1 -1
  370. package/src/catalog/utils/item-loader.jsx +1 -1
  371. package/src/class/item.js +1 -1
  372. package/src/components/content.jsx +1 -19
  373. package/src/components/export.js +2 -29
  374. package/src/components/style/button.jsx +1 -1
  375. package/src/components/style/export.js +24 -0
  376. package/src/components/style/form-number-input.jsx +3 -29
  377. package/src/components/style/form-select.jsx +2 -31
  378. package/src/components/style/form-text-input.jsx +20 -22
  379. package/src/components/viewer2d/area.jsx +2 -2
  380. package/src/components/viewer2d/grids/grid-horizontal-streak.jsx +2 -2
  381. package/src/components/viewer2d/grids/grid-streak.jsx +2 -2
  382. package/src/components/viewer2d/grids/grid-vertical-streak.jsx +2 -2
  383. package/src/components/viewer2d/grids/grids.jsx +1 -1
  384. package/src/components/viewer2d/group.jsx +1 -1
  385. package/src/components/viewer2d/item.jsx +3 -11
  386. package/src/components/viewer2d/layer.jsx +1 -1
  387. package/src/components/viewer2d/line.jsx +30 -33
  388. package/src/components/viewer2d/ruler.jsx +2 -3
  389. package/src/components/viewer2d/rulerDist.jsx +6 -6
  390. package/src/components/viewer2d/rulerX.jsx +1 -1
  391. package/src/components/viewer2d/rulerY.jsx +1 -1
  392. package/src/components/viewer2d/scene.jsx +1 -1
  393. package/src/components/viewer2d/snap.jsx +1 -1
  394. package/src/components/viewer2d/state.jsx +1 -1
  395. package/src/components/viewer2d/vertex.jsx +2 -2
  396. package/src/components/viewer2d/viewer2d.jsx +3 -3
  397. package/src/components/viewer3d/pointer-lock-navigation.js +1 -1
  398. package/src/components/viewer3d/ruler-utils/itemRect.jsx +91 -91
  399. package/src/components/viewer3d/ruler-utils/layer3D.jsx +528 -528
  400. package/src/components/viewer3d/ruler-utils/scene3D.jsx +85 -87
  401. package/src/components/viewer3d/scene-creator.js +1 -1
  402. package/src/components/viewer3d/viewer3d-first-person.js +2 -2
  403. package/src/components/viewer3d/{viewer3d.js → viewer3d.jsx} +3 -3
  404. package/src/constants.js +3 -0
  405. package/src/index.js +0 -2
  406. package/src/models.js +1 -1
  407. package/src/reducers/viewer2d-reducer.js +1 -1
  408. package/src/reducers/viewer3d-reducer.js +1 -1
  409. package/src/styles/export.js +7 -0
  410. package/src/styles/tabs.css +40 -0
  411. package/src/utils/geometry.js +2 -2
  412. package/src/utils/graph-inner-cycles.js +3 -3
  413. package/src/utils/helper.js +1 -1
  414. package/src/utils/history.js +1 -1
  415. package/src/utils/molding.js +973 -973
  416. package/src/utils/react-if.jsx +1 -1
  417. package/src/KitchenConfigurator.jsx +0 -1517
  418. package/src/actions/user-actions.js +0 -75
  419. package/src/components/atoms/Snackbar/index.jsx +0 -43
  420. package/src/components/atoms/radio-button/index.jsx +0 -20
  421. package/src/components/atoms/radio-button/styles.js +0 -56
  422. package/src/components/button/MainButton.jsx +0 -157
  423. package/src/components/button/ToggleMeasureButton.jsx +0 -65
  424. package/src/components/catalog-view/catalog-breadcrumb.jsx +0 -53
  425. package/src/components/catalog-view/catalog-item.jsx +0 -229
  426. package/src/components/catalog-view/catalog-list.jsx +0 -173
  427. package/src/components/catalog-view/catalog-page-item.jsx +0 -110
  428. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +0 -80
  429. package/src/components/configurator/custom-configurator.jsx +0 -77
  430. package/src/components/configurator/project-configurator.jsx +0 -120
  431. package/src/components/firstsetting/button/styles.js +0 -223
  432. package/src/components/firstsetting/export.js +0 -9
  433. package/src/components/firstsetting/firstsetting-content-button.jsx +0 -198
  434. package/src/components/firstsetting/firstsetting-toggle-button.jsx +0 -101
  435. package/src/components/firstsetting/firstsetting.jsx +0 -814
  436. package/src/components/footerbar/button/ControlButton.jsx +0 -43
  437. package/src/components/footerbar/button/DirectionButton.jsx +0 -54
  438. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +0 -36
  439. package/src/components/footerbar/button/ToggleButton.jsx +0 -58
  440. package/src/components/footerbar/button/ToggleConvertButton.jsx +0 -48
  441. package/src/components/footerbar/button/ToggleMeasureButton.jsx +0 -33
  442. package/src/components/footerbar/button/styles.js +0 -217
  443. package/src/components/footerbar/export.js +0 -9
  444. package/src/components/footerbar/footer-content-button.jsx +0 -198
  445. package/src/components/footerbar/footer-toggle-button.jsx +0 -101
  446. package/src/components/footerbar/footerbar.jsx +0 -1103
  447. package/src/components/footerbar/styles.js +0 -263
  448. package/src/components/header/button/MenuButton.jsx +0 -46
  449. package/src/components/header/button/SaveButton.jsx +0 -54
  450. package/src/components/header/button/styles.js +0 -181
  451. package/src/components/header/export.js +0 -5
  452. package/src/components/header/header.jsx +0 -631
  453. package/src/components/header/header.style.css +0 -47
  454. package/src/components/header/styles.js +0 -320
  455. package/src/components/login/Login.js +0 -77
  456. package/src/components/login/LoginForm/index.js +0 -108
  457. package/src/components/login/Register.js +0 -83
  458. package/src/components/login/RegisterForm/index.js +0 -171
  459. package/src/components/login/jwtService.js +0 -201
  460. package/src/components/login/style.css +0 -158
  461. package/src/components/login/style.scss +0 -260
  462. package/src/components/molecules/slider/index.jsx +0 -15
  463. package/src/components/molecules/slider/styles.js +0 -0
  464. package/src/components/molecules/slider/styles.scss +0 -3
  465. package/src/components/myprojects/export.js +0 -5
  466. package/src/components/myprojects/index.jsx +0 -445
  467. package/src/components/myprojects/styles.js +0 -241
  468. package/src/components/sidebar/custom-accordion.jsx +0 -48
  469. package/src/components/sidebar/export.js +0 -15
  470. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +0 -73
  471. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +0 -101
  472. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +0 -149
  473. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +0 -316
  474. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +0 -108
  475. package/src/components/sidebar/panel-element-editor/element-editor.jsx +0 -1070
  476. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  477. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +0 -104
  478. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +0 -155
  479. package/src/components/sidebar/panel-group-editor.jsx +0 -272
  480. package/src/components/sidebar/panel-groups.jsx +0 -310
  481. package/src/components/sidebar/panel-guides.jsx +0 -192
  482. package/src/components/sidebar/panel-layer-elements.jsx +0 -298
  483. package/src/components/sidebar/panel-layers.jsx +0 -381
  484. package/src/components/sidebar/panel.jsx +0 -71
  485. package/src/components/sidebar/sidebar.jsx +0 -106
  486. package/src/components/sidebar/toolbar-panel.jsx +0 -139
  487. package/src/components/sign/export.js +0 -7
  488. package/src/components/sign/main/index.jsx +0 -523
  489. package/src/components/sign/main/styles.js +0 -163
  490. package/src/components/style/cancel-button.jsx +0 -20
  491. package/src/components/style/content-container.jsx +0 -29
  492. package/src/components/style/content-title.jsx +0 -20
  493. package/src/components/style/delete-button.jsx +0 -23
  494. package/src/components/style/export.jsx +0 -48
  495. package/src/components/style/form-block.jsx +0 -13
  496. package/src/components/style/form-number-input_2.jsx +0 -191
  497. package/src/components/style/form-slider.jsx +0 -36
  498. package/src/components/style/form-submit-button.jsx +0 -23
  499. package/src/components/toolbar/button/ControlButton.jsx +0 -41
  500. package/src/components/toolbar/button/DirectionButton.jsx +0 -34
  501. package/src/components/toolbar/button/RightButton.jsx +0 -103
  502. package/src/components/toolbar/button/ToggleButton.jsx +0 -41
  503. package/src/components/toolbar/button/index.jsx +0 -55
  504. package/src/components/toolbar/button/styles.js +0 -127
  505. package/src/components/toolbar/components/DoorStyleMenu.jsx +0 -103
  506. package/src/components/toolbar/components/Pricing.jsx +0 -126
  507. package/src/components/toolbar/components/ReviewForQuote.jsx +0 -635
  508. package/src/components/toolbar/export.js +0 -21
  509. package/src/components/toolbar/main/Alert.js +0 -122
  510. package/src/components/toolbar/main/TakePictureModal.jsx +0 -104
  511. package/src/components/toolbar/main/confirm-popup.jsx +0 -99
  512. package/src/components/toolbar/main/index.jsx +0 -5627
  513. package/src/components/toolbar/main/lShaped.json +0 -311
  514. package/src/components/toolbar/main/longNarrow.json +0 -238
  515. package/src/components/toolbar/main/myComponents.js +0 -123
  516. package/src/components/toolbar/main/oRectangle.json +0 -220
  517. package/src/components/toolbar/main/rectangle.json +0 -238
  518. package/src/components/toolbar/main/style.css +0 -107
  519. package/src/components/toolbar/main/styles.js +0 -696
  520. package/src/components/toolbar/plugin-item.jsx +0 -123
  521. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +0 -73
  522. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +0 -102
  523. package/src/components/toolbar/popup/appliance/index.jsx +0 -83
  524. package/src/components/toolbar/popup/autosaveprompt/index.jsx +0 -150
  525. package/src/components/toolbar/popup/autosaveprompt/styles.css +0 -64
  526. package/src/components/toolbar/popup/autosaveprompt/styles.js +0 -40
  527. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +0 -73
  528. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +0 -119
  529. package/src/components/toolbar/popup/cabinet/index.jsx +0 -85
  530. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +0 -63
  531. package/src/components/toolbar/popup/doorStyle/index.jsx +0 -71
  532. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +0 -139
  533. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -2
  534. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +0 -157
  535. package/src/components/toolbar/popup/downloadsummary/index.jsx +0 -643
  536. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +0 -51
  537. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +0 -175
  538. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +0 -283
  539. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +0 -2257
  540. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -93
  541. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +0 -132
  542. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +0 -2198
  543. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +0 -152
  544. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +0 -149
  545. package/src/components/toolbar/popup/downloadsummary/styles.css +0 -177
  546. package/src/components/toolbar/popup/downloadsummary/styles.js +0 -453
  547. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +0 -34
  548. package/src/components/toolbar/popup/finishingtouch/index.jsx +0 -58
  549. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +0 -112
  550. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +0 -116
  551. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +0 -101
  552. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +0 -254
  553. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
  554. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
  555. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
  556. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
  557. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -86
  558. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +0 -109
  559. package/src/components/toolbar/popup/floorplan/index.jsx +0 -60
  560. package/src/components/toolbar/popup/index.jsx +0 -241
  561. package/src/components/toolbar/popup/newproject/index.jsx +0 -59
  562. package/src/components/toolbar/popup/newproject/styles.css +0 -64
  563. package/src/components/toolbar/popup/newproject/styles.js +0 -41
  564. package/src/components/toolbar/popup/product/appliance.jsx +0 -54
  565. package/src/components/toolbar/popup/product/cabinetproduct.jsx +0 -15
  566. package/src/components/toolbar/popup/product/doorstyle.jsx +0 -58
  567. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +0 -47
  568. package/src/components/toolbar/popup/product/floor.jsx +0 -36
  569. package/src/components/toolbar/popup/product/floorproduct.jsx +0 -42
  570. package/src/components/toolbar/popup/product/index.jsx +0 -36
  571. package/src/components/toolbar/popup/product/primary.jsx +0 -77
  572. package/src/components/toolbar/popup/product/productline.jsx +0 -93
  573. package/src/components/toolbar/popup/product/reviewItem.jsx +0 -427
  574. package/src/components/toolbar/popup/product/reviewMolding.jsx +0 -310
  575. package/src/components/toolbar/popup/product/style.css +0 -54
  576. package/src/components/toolbar/popup/product/styles.js +0 -260
  577. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +0 -146
  578. package/src/components/toolbar/popup/savedesign/index.jsx +0 -495
  579. package/src/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
  580. package/src/components/toolbar/popup/savedesign/styles.js +0 -151
  581. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +0 -87
  582. package/src/components/toolbar/popup/styles.js +0 -909
  583. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +0 -192
  584. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +0 -96
  585. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +0 -54
  586. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +0 -25
  587. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +0 -116
  588. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -38
  589. package/src/components/toolbar/popup/submitforquote/index.jsx +0 -698
  590. package/src/components/toolbar/popup/submitforquote/styles.css +0 -105
  591. package/src/components/toolbar/popup/submitforquote/styles.js +0 -294
  592. package/src/components/toolbar/popup/submitprompt/index.jsx +0 -89
  593. package/src/components/toolbar/popup/submitprompt/styles.css +0 -64
  594. package/src/components/toolbar/popup/submitprompt/styles.js +0 -42
  595. package/src/components/toolbar/toolbar-button.jsx +0 -90
  596. package/src/components/toolbar/toolbar-load-button.jsx +0 -36
  597. package/src/components/toolbar/toolbar-save-button.jsx +0 -32
  598. package/src/components/tutorial-view/Modal.jsx +0 -584
  599. package/src/components/tutorial-view/style.css +0 -111
  600. package/src/components/tutorial-view/styles.js +0 -65
  601. package/src/components/wizardstep/button/styles.js +0 -677
  602. package/src/components/wizardstep/export.js +0 -5
  603. package/src/components/wizardstep/index.jsx +0 -1372
  604. package/src/components/wizardstep/styles.js +0 -688
  605. package/src/components/wizardstep/wizardstep-content-button.jsx +0 -198
  606. package/src/components/wizardstep/wizardstep-toggle-button.jsx +0 -101
@@ -1,528 +1,528 @@
1
- import React from 'react';
2
- import Ruler3D from './ruler3D';
3
- import convert from 'convert-units';
4
- import { GeometryUtils } from '../../../utils/export';
5
- import { returnReplaceableDeepSearchType } from '../../../components/viewer2d/utils';
6
- import { DELTA, DISTANCE_EPSILON, DECIMAL_PLACES_2 } from '../../../constants';
7
- import { formatNumber, isNonZeroText } from '../../../utils/math';
8
-
9
- export default function Layer3D({
10
- layer,
11
- frontRect,
12
- lineLength,
13
- ceilHeight,
14
- catalog,
15
- scene,
16
- scale,
17
- mode,
18
- line,
19
- viewScale,
20
- downloadFlag
21
- }) {
22
- const { width, height } = frontRect;
23
- let v0 = layer.vertices.get(line.vertices.get(0));
24
- let v1 = layer.vertices.get(line.vertices.get(1));
25
- const l0 = { x: v0.x, y: v0.y };
26
- const l1 = { x: v1.x, y: v1.y };
27
- const rulerSpace = 50 * viewScale;
28
- const lineSpace = 25 * viewScale;
29
- let rulerLines = [],
30
- rulerData = [],
31
- baseItems = [],
32
- wallItems = [],
33
- basePosArray = [
34
- { x: width / 2, y: height / 2 },
35
- { x: -width / 2, y: height / 2 }
36
- ],
37
- wallPosArray = [
38
- { x: -width / 2, y: -height / 2 },
39
- { x: width / 2, y: -height / 2 }
40
- ],
41
- left_count = 0,
42
- right_count = 0,
43
- leftBaseItems = [],
44
- rightBaseItems = [],
45
- leftWallItems = [],
46
- rightWallItems = [],
47
- toler_unit = 'mm';
48
-
49
- // get length between 2 points
50
- const getLength = (vertex0, vertex1) => {
51
- return Math.sqrt(
52
- Math.pow(vertex0.x - vertex1.x, 2) + Math.pow(vertex0.y - vertex1.y, 2)
53
- );
54
- };
55
-
56
- // determin if this line(vertex0, vertex1) is snapped into wall
57
- const isSnapped = (vertex0, vertex1) => {
58
- let itemSnapped = false;
59
- let delta = GeometryUtils.distancePointFromLineSegment(
60
- l0,
61
- l1,
62
- (vertex0.x + vertex1.x) / 2,
63
- (vertex0.y + vertex1.y) / 2
64
- );
65
- if (delta < DISTANCE_EPSILON) {
66
- itemSnapped = true;
67
- }
68
- return itemSnapped;
69
- };
70
-
71
- // get array of wallItem and baseITem in layer
72
- layer.items.forEach(item => {
73
- let val = {
74
- pos: { x: item.x, y: item.y },
75
- rotRad: (item.rotation / 180) * Math.PI
76
- };
77
- let catid = item.type;
78
- let cat = catalog.elements[catid];
79
- if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];
80
- let width = convert(item.properties.getIn(['width', '_length']))
81
- .from(item.properties.getIn(['width', '_unit']))
82
- .to(scene.unit);
83
- let height = convert(item.properties.getIn(['height', '_length']))
84
- .from(item.properties.getIn(['height', '_unit']))
85
- .to(scene.unit);
86
- let depth = convert(item.properties.getIn(['depth', '_length']))
87
- .from(item.properties.getIn(['depth', '_unit']))
88
- .to(scene.unit);
89
- let altitude = convert(item.properties.getIn(['altitude', '_length']))
90
- .from(item.properties.getIn(['altitude', '_unit']))
91
- .to(scene.unit);
92
- val.size = { width, height, depth, altitude };
93
- val.layoutpos = cat && cat.info.layoutpos;
94
- val.is_corner = cat && cat.info.is_corner;
95
- val.item = item.toJS();
96
- let calcrect = GeometryUtils.getCalcRectFromItem3D(val);
97
-
98
- if (
99
- isSnapped(calcrect.rect[3], calcrect.rect[2]) ||
100
- isSnapped(calcrect.rect[2], calcrect.rect[1]) ||
101
- isSnapped(calcrect.rect[0], calcrect.rect[3])
102
- ) {
103
- if (calcrect.itemInfo.properties.altitude.length) {
104
- wallItems.push(calcrect);
105
- } else {
106
- baseItems.push(calcrect);
107
- }
108
- }
109
- });
110
-
111
- // sort function
112
- const sortFunc = (a, b) => {
113
- return a.pos.x - b.pos.x;
114
- };
115
- const negSortFunc = (a, b) => -sortFunc(a, b);
116
-
117
- // get item's pos array about baseItem, then sort - baseItems' order is right: (width/2) -> left: (-width/2)
118
- if (baseItems.length) {
119
- baseItems.forEach(item => {
120
- let vertex0, vertex1;
121
- if (isSnapped(item.rect[3], item.rect[2])) {
122
- vertex0 = {
123
- x:
124
- -frontRect.width / 2 +
125
- convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
126
- scale,
127
- y: height / 2
128
- };
129
- vertex1 = {
130
- x:
131
- -frontRect.width / 2 +
132
- convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
133
- scale,
134
- y: height / 2
135
- };
136
- } else if (isSnapped(item.rect[2], item.rect[1])) {
137
- vertex0 = {
138
- x:
139
- -frontRect.width / 2 +
140
- convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
141
- scale,
142
- y: height / 2
143
- };
144
- vertex1 = {
145
- x:
146
- -frontRect.width / 2 +
147
- convert(getLength(item.rect[1], v0)).from('cm').to(layer.unit) *
148
- scale,
149
- y: height / 2
150
- };
151
- } else if (isSnapped(item.rect[0], item.rect[3])) {
152
- vertex0 = {
153
- x:
154
- -frontRect.width / 2 +
155
- convert(getLength(item.rect[0], v0)).from('cm').to(layer.unit) *
156
- scale,
157
- y: height / 2
158
- };
159
- vertex1 = {
160
- x:
161
- -frontRect.width / 2 +
162
- convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
163
- scale,
164
- y: height / 2
165
- };
166
- }
167
- basePosArray.push(vertex0);
168
- basePosArray.push(vertex1);
169
-
170
- // determin which side(left or right) item is closer to. If item is closer to left side, it will be included in leftBaseITems
171
- let distLeft = getLength(item.pos, v0);
172
- let distRight = getLength(item.pos, v1);
173
- if (distLeft < distRight) {
174
- leftBaseItems.push(item);
175
- } else {
176
- rightBaseItems.push(item);
177
- }
178
- });
179
- }
180
- basePosArray.sort((a, b) => {
181
- return b.x - a.x;
182
- });
183
-
184
- // get item's pos array about wallItem, then sort - wallItems' order is left: (-width/2) -> right: (width/2)
185
- if (wallItems.length) {
186
- wallItems.forEach(item => {
187
- let vertex0, vertex1;
188
- if (isSnapped(item.rect[3], item.rect[2])) {
189
- vertex0 = {
190
- x:
191
- -frontRect.width / 2 +
192
- convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
193
- scale,
194
- y: -height / 2
195
- };
196
- vertex1 = {
197
- x:
198
- -frontRect.width / 2 +
199
- convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
200
- scale,
201
- y: -height / 2
202
- };
203
- } else if (isSnapped(item.rect[2], item.rect[1])) {
204
- vertex0 = {
205
- x:
206
- -frontRect.width / 2 +
207
- convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
208
- scale,
209
- y: -height / 2
210
- };
211
- vertex1 = {
212
- x:
213
- -frontRect.width / 2 +
214
- convert(getLength(item.rect[1], v0)).from('cm').to(layer.unit) *
215
- scale,
216
- y: -height / 2
217
- };
218
- } else if (isSnapped(item.rect[0], item.rect[3])) {
219
- vertex0 = {
220
- x:
221
- -frontRect.width / 2 +
222
- convert(getLength(item.rect[0], v0)).from('cm').to(layer.unit) *
223
- scale,
224
- y: -height / 2
225
- };
226
- vertex1 = {
227
- x:
228
- -frontRect.width / 2 +
229
- convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
230
- scale,
231
- y: -height / 2
232
- };
233
- }
234
- wallPosArray.push(vertex0);
235
- wallPosArray.push(vertex1);
236
-
237
- // determin which side(left or right) item is closer to. If item is closer to left side, it will be included in leftBaseITems
238
- let distLeft = getLength(item.pos, v0);
239
- let distRight = getLength(item.pos, v1);
240
- if (distLeft < distRight) {
241
- rightWallItems.push(item);
242
- } else {
243
- leftWallItems.push(item);
244
- }
245
- });
246
- }
247
- wallPosArray.sort((a, b) => {
248
- return a.x - b.x;
249
- });
250
-
251
- // leftItems = leftBaseItems + inverted leftWallItems : Here, it's different between BaseItem's order and WallItem's order
252
- leftBaseItems.sort(sortFunc);
253
- leftWallItems.sort(negSortFunc);
254
-
255
- rightBaseItems.sort(negSortFunc);
256
- rightWallItems.sort(sortFunc);
257
- let leftItems = leftBaseItems.concat(leftWallItems);
258
- let rightItems = rightBaseItems.concat(rightWallItems);
259
-
260
- // To display side dimensions, set rulerLines about leftItems
261
- leftItems.forEach((item, idx) => {
262
- let forwardItems = [];
263
- let distLine = 0;
264
- let itemHeight = convert(item.size.height).from(scene.unit).to(layer.unit);
265
- for (let i = 0; i < idx; i++) {
266
- forwardItems.push(leftItems[i]);
267
- }
268
- if (
269
- !forwardItems.filter(
270
- it =>
271
- it.itemInfo.properties.altitude._length ===
272
- item.itemInfo.properties.altitude._length &&
273
- it.itemInfo.properties.height._length ===
274
- item.itemInfo.properties.height._length
275
- ).length
276
- ) {
277
- if (item.itemInfo.properties.altitude._length) {
278
- if (isSnapped(item.rect[3], item.rect[2])) {
279
- distLine = convert(getLength(item.rect[2], v1))
280
- .from(scene.unit)
281
- .to(layer.unit);
282
- } else if (isSnapped(item.rect[2], item.rect[1])) {
283
- distLine = convert(getLength(item.rect[1], v1))
284
- .from(scene.unit)
285
- .to(layer.unit);
286
- }
287
- let itemAltitude = convert(item.size.altitude)
288
- .from(scene.unit)
289
- .to(layer.unit);
290
-
291
- if (
292
- ceilHeight - (itemAltitude + itemHeight) >
293
- convert(DELTA).from(toler_unit).to(layer.unit)
294
- ) {
295
- rulerLines.push({
296
- v0: { x: width / 2, y: -height / 2 },
297
- v1: {
298
- x: width / 2,
299
- y: height / 2 - (itemHeight + itemAltitude) * scale
300
- },
301
- text: formatNumber(
302
- ceilHeight - (itemAltitude + itemHeight),
303
- DECIMAL_PLACES_2
304
- ),
305
- space: rulerSpace + right_count * lineSpace
306
- });
307
- }
308
- rulerLines.push({
309
- v0: {
310
- x: width / 2 - distLine * scale,
311
- y: height / 2 - (itemHeight + itemAltitude) * scale
312
- },
313
- v1: {
314
- x: width / 2 - distLine * scale,
315
- y: height / 2 - itemAltitude * scale
316
- },
317
- text: formatNumber(itemHeight, DECIMAL_PLACES_2),
318
- space: rulerSpace + distLine * scale + right_count * lineSpace
319
- });
320
- rulerLines.push({
321
- v0: {
322
- x: width / 2,
323
- y: height / 2 - itemAltitude * scale
324
- },
325
- v1: { x: width / 2, y: height / 2 },
326
- text: formatNumber(itemAltitude, DECIMAL_PLACES_2),
327
- space: rulerSpace + right_count * lineSpace
328
- });
329
- right_count++;
330
- } else {
331
- if (isSnapped(item.rect[3], item.rect[2])) {
332
- distLine = convert(getLength(item.rect[3], v0))
333
- .from(scene.unit)
334
- .to(layer.unit);
335
- } else if (isSnapped(item.rect[2], item.rect[1])) {
336
- distLine = convert(getLength(item.rect[2], v0))
337
- .from(scene.unit)
338
- .to(layer.unit);
339
- }
340
- rulerLines.push({
341
- v0: { x: -width / 2 + distLine * scale, y: height / 2 },
342
- v1: {
343
- x: -width / 2 + distLine * scale,
344
- y: height / 2 - itemHeight * scale
345
- },
346
- text: formatNumber(itemHeight, DECIMAL_PLACES_2),
347
- space: rulerSpace + distLine * scale + left_count * lineSpace
348
- });
349
- rulerLines.push({
350
- v0: { x: -width / 2, y: height / 2 - itemHeight * scale },
351
- v1: { x: -width / 2, y: -height / 2 },
352
- text: formatNumber(ceilHeight - itemHeight, DECIMAL_PLACES_2),
353
- space: rulerSpace + left_count * lineSpace
354
- });
355
- left_count++;
356
- }
357
- }
358
- });
359
-
360
- // To display side dimensions, set rulerLines about rightItems
361
- rightItems.forEach((item, idx) => {
362
- let forwardItems = [];
363
- let distLine = 0;
364
- let itemHeight = convert(item.size.height).from(scene.unit).to(layer.unit);
365
- for (let i = 0; i < idx; i++) {
366
- forwardItems.push(rightItems[i]);
367
- }
368
- if (
369
- !forwardItems.filter(
370
- it =>
371
- it.itemInfo.properties.altitude._length ===
372
- item.itemInfo.properties.altitude._length &&
373
- it.itemInfo.properties.height._length ===
374
- item.itemInfo.properties.height._length
375
- ).length
376
- ) {
377
- if (item.itemInfo.properties.altitude._length) {
378
- if (isSnapped(item.rect[3], item.rect[2])) {
379
- distLine = convert(getLength(item.rect[3], v0))
380
- .from(scene.unit)
381
- .to(layer.unit);
382
- } else if (isSnapped(item.rect[2], item.rect[1])) {
383
- distLine = convert(getLength(item.rect[2], v0))
384
- .from(scene.unit)
385
- .to(layer.unit);
386
- }
387
- let itemHeight = convert(item.size.height)
388
- .from(scene.unit)
389
- .to(layer.unit);
390
- let itemAltitude = convert(item.size.altitude)
391
- .from(scene.unit)
392
- .to(layer.unit);
393
- rulerLines.push({
394
- v0: { x: -width / 2, y: height / 2 },
395
- v1: {
396
- x: -width / 2,
397
- y: height / 2 - itemAltitude * scale
398
- },
399
- text: formatNumber(itemAltitude, DECIMAL_PLACES_2),
400
- space: rulerSpace + left_count * lineSpace
401
- });
402
- rulerLines.push({
403
- v0: {
404
- x: -width / 2 + distLine * scale,
405
- y: height / 2 - itemAltitude * scale
406
- },
407
- v1: {
408
- x: -width / 2 + distLine * scale,
409
- y: height / 2 - (itemAltitude + itemHeight) * scale
410
- },
411
- text: formatNumber(itemHeight, DECIMAL_PLACES_2),
412
- space: rulerSpace + +distLine * scale + left_count * lineSpace
413
- });
414
- if (
415
- ceilHeight - (itemAltitude + itemHeight) >
416
- convert(DELTA).from(toler_unit).to(layer.unit)
417
- ) {
418
- rulerLines.push({
419
- v0: {
420
- x: -width / 2,
421
- y: height / 2 - (itemAltitude + itemHeight) * scale
422
- },
423
- v1: { x: -width / 2, y: -height / 2 },
424
- text: formatNumber(
425
- ceilHeight - (itemAltitude + itemHeight),
426
- DECIMAL_PLACES_2
427
- ),
428
- space: rulerSpace + left_count * lineSpace
429
- });
430
- }
431
-
432
- left_count++;
433
- } else {
434
- if (isSnapped(item.rect[3], item.rect[2])) {
435
- distLine = convert(getLength(item.rect[2], v1))
436
- .from(scene.unit)
437
- .to(layer.unit);
438
- } else if (isSnapped(item.rect[2], item.rect[1])) {
439
- distLine = convert(getLength(item.rect[1], v1))
440
- .from(scene.unit)
441
- .to(layer.unit);
442
- }
443
- rulerLines.push({
444
- v0: { x: width / 2, y: -height / 2 },
445
- v1: { x: width / 2, y: height / 2 - itemHeight * scale },
446
- text: formatNumber(ceilHeight - itemHeight, DECIMAL_PLACES_2),
447
- space: rulerSpace + right_count * lineSpace
448
- });
449
- rulerLines.push({
450
- v0: {
451
- x: width / 2 - distLine * scale,
452
- y: height / 2 - itemHeight * scale
453
- },
454
- v1: { x: width / 2 - distLine * scale, y: height / 2 },
455
- text: formatNumber(itemHeight, DECIMAL_PLACES_2),
456
- space: rulerSpace + distLine * scale + right_count * lineSpace
457
- });
458
- right_count++;
459
- }
460
- }
461
- });
462
-
463
- // To display wall line dimensions, set rulerLines
464
- rulerLines.push({
465
- v0: { x: width / 2, y: -height / 2 },
466
- v1: { x: width / 2, y: height / 2 },
467
- text: ceilHeight,
468
- space: rulerSpace + lineSpace * right_count
469
- });
470
- rulerLines.push({
471
- v0: { x: -width / 2, y: height / 2 },
472
- v1: { x: -width / 2, y: -height / 2 },
473
- text: ceilHeight,
474
- space: rulerSpace + lineSpace * left_count
475
- });
476
- rulerLines.push({
477
- v0: { x: width / 2, y: height / 2 },
478
- v1: { x: -width / 2, y: height / 2 },
479
- text: formatNumber(lineLength, DECIMAL_PLACES_2),
480
- space: rulerSpace + (baseItems.length ? lineSpace : 0)
481
- });
482
- rulerLines.push({
483
- v0: { x: -width / 2, y: -height / 2 },
484
- v1: { x: width / 2, y: -height / 2 },
485
- text: formatNumber(lineLength, DECIMAL_PLACES_2),
486
- space: rulerSpace + (wallItems.length ? lineSpace : 0)
487
- });
488
-
489
- // To display wallItems dimensions, set rulerLines with wallPosArray
490
- if (wallItems.length) {
491
- for (let i = 0; i < wallPosArray.length - 1; i++) {
492
- let dist = getLength(wallPosArray[i], wallPosArray[i + 1]) / scale;
493
- rulerLines.push({
494
- v0: wallPosArray[i],
495
- v1: wallPosArray[i + 1],
496
- space: rulerSpace,
497
- text: formatNumber(dist, DECIMAL_PLACES_2)
498
- });
499
- }
500
- }
501
-
502
- // To display baseItems dimensions, set rulerLines with basePosArray
503
- if (baseItems.length) {
504
- for (let j = 0; j < basePosArray.length - 1; j++) {
505
- let dist = getLength(basePosArray[j], basePosArray[j + 1]) / scale;
506
- rulerLines.push({
507
- v0: basePosArray[j],
508
- v1: basePosArray[j + 1],
509
- space: rulerSpace,
510
- text: formatNumber(dist, DECIMAL_PLACES_2)
511
- });
512
- }
513
- }
514
-
515
- rulerLines.forEach(line => {
516
- if (isNonZeroText(line.text))
517
- rulerData.push(
518
- <Ruler3D
519
- line={line}
520
- layer={layer}
521
- viewScale={viewScale}
522
- downloadFlag={downloadFlag}
523
- />
524
- );
525
- });
526
-
527
- return <g opacity={layer.opacity}>{rulerData}</g>;
528
- }
1
+ import React from 'react';
2
+ import Ruler3D from './ruler3D';
3
+ import * as convert from 'convert-units';
4
+ import { GeometryUtils } from '../../../utils/export';
5
+ import { returnReplaceableDeepSearchType } from '../../../components/viewer2d/utils';
6
+ import { DELTA, DISTANCE_EPSILON, DECIMAL_PLACES_2 } from '../../../constants';
7
+ import { formatNumber, isNonZeroText } from '../../../utils/math';
8
+
9
+ export default function Layer3D({
10
+ layer,
11
+ frontRect,
12
+ lineLength,
13
+ ceilHeight,
14
+ catalog,
15
+ scene,
16
+ scale,
17
+ mode,
18
+ line,
19
+ viewScale,
20
+ downloadFlag
21
+ }) {
22
+ const { width, height } = frontRect;
23
+ let v0 = layer.vertices.get(line.vertices.get(0));
24
+ let v1 = layer.vertices.get(line.vertices.get(1));
25
+ const l0 = { x: v0.x, y: v0.y };
26
+ const l1 = { x: v1.x, y: v1.y };
27
+ const rulerSpace = 50 * viewScale;
28
+ const lineSpace = 25 * viewScale;
29
+ let rulerLines = [],
30
+ rulerData = [],
31
+ baseItems = [],
32
+ wallItems = [],
33
+ basePosArray = [
34
+ { x: width / 2, y: height / 2 },
35
+ { x: -width / 2, y: height / 2 }
36
+ ],
37
+ wallPosArray = [
38
+ { x: -width / 2, y: -height / 2 },
39
+ { x: width / 2, y: -height / 2 }
40
+ ],
41
+ left_count = 0,
42
+ right_count = 0,
43
+ leftBaseItems = [],
44
+ rightBaseItems = [],
45
+ leftWallItems = [],
46
+ rightWallItems = [],
47
+ toler_unit = 'mm';
48
+
49
+ // get length between 2 points
50
+ const getLength = (vertex0, vertex1) => {
51
+ return Math.sqrt(
52
+ Math.pow(vertex0.x - vertex1.x, 2) + Math.pow(vertex0.y - vertex1.y, 2)
53
+ );
54
+ };
55
+
56
+ // determin if this line(vertex0, vertex1) is snapped into wall
57
+ const isSnapped = (vertex0, vertex1) => {
58
+ let itemSnapped = false;
59
+ let delta = GeometryUtils.distancePointFromLineSegment(
60
+ l0,
61
+ l1,
62
+ (vertex0.x + vertex1.x) / 2,
63
+ (vertex0.y + vertex1.y) / 2
64
+ );
65
+ if (delta < DISTANCE_EPSILON) {
66
+ itemSnapped = true;
67
+ }
68
+ return itemSnapped;
69
+ };
70
+
71
+ // get array of wallItem and baseITem in layer
72
+ layer.items.forEach(item => {
73
+ let val = {
74
+ pos: { x: item.x, y: item.y },
75
+ rotRad: (item.rotation / 180) * Math.PI
76
+ };
77
+ let catid = item.type;
78
+ let cat = catalog.elements[catid];
79
+ if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];
80
+ let width = convert(item.properties.getIn(['width', '_length']))
81
+ .from(item.properties.getIn(['width', '_unit']))
82
+ .to(scene.unit);
83
+ let height = convert(item.properties.getIn(['height', '_length']))
84
+ .from(item.properties.getIn(['height', '_unit']))
85
+ .to(scene.unit);
86
+ let depth = convert(item.properties.getIn(['depth', '_length']))
87
+ .from(item.properties.getIn(['depth', '_unit']))
88
+ .to(scene.unit);
89
+ let altitude = convert(item.properties.getIn(['altitude', '_length']))
90
+ .from(item.properties.getIn(['altitude', '_unit']))
91
+ .to(scene.unit);
92
+ val.size = { width, height, depth, altitude };
93
+ val.layoutpos = cat && cat.info.layoutpos;
94
+ val.is_corner = cat && cat.info.is_corner;
95
+ val.item = item.toJS();
96
+ let calcrect = GeometryUtils.getCalcRectFromItem3D(val);
97
+
98
+ if (
99
+ isSnapped(calcrect.rect[3], calcrect.rect[2]) ||
100
+ isSnapped(calcrect.rect[2], calcrect.rect[1]) ||
101
+ isSnapped(calcrect.rect[0], calcrect.rect[3])
102
+ ) {
103
+ if (calcrect.itemInfo.properties.altitude.length) {
104
+ wallItems.push(calcrect);
105
+ } else {
106
+ baseItems.push(calcrect);
107
+ }
108
+ }
109
+ });
110
+
111
+ // sort function
112
+ const sortFunc = (a, b) => {
113
+ return a.pos.x - b.pos.x;
114
+ };
115
+ const negSortFunc = (a, b) => -sortFunc(a, b);
116
+
117
+ // get item's pos array about baseItem, then sort - baseItems' order is right: (width/2) -> left: (-width/2)
118
+ if (baseItems.length) {
119
+ baseItems.forEach(item => {
120
+ let vertex0, vertex1;
121
+ if (isSnapped(item.rect[3], item.rect[2])) {
122
+ vertex0 = {
123
+ x:
124
+ -frontRect.width / 2 +
125
+ convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
126
+ scale,
127
+ y: height / 2
128
+ };
129
+ vertex1 = {
130
+ x:
131
+ -frontRect.width / 2 +
132
+ convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
133
+ scale,
134
+ y: height / 2
135
+ };
136
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
137
+ vertex0 = {
138
+ x:
139
+ -frontRect.width / 2 +
140
+ convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
141
+ scale,
142
+ y: height / 2
143
+ };
144
+ vertex1 = {
145
+ x:
146
+ -frontRect.width / 2 +
147
+ convert(getLength(item.rect[1], v0)).from('cm').to(layer.unit) *
148
+ scale,
149
+ y: height / 2
150
+ };
151
+ } else if (isSnapped(item.rect[0], item.rect[3])) {
152
+ vertex0 = {
153
+ x:
154
+ -frontRect.width / 2 +
155
+ convert(getLength(item.rect[0], v0)).from('cm').to(layer.unit) *
156
+ scale,
157
+ y: height / 2
158
+ };
159
+ vertex1 = {
160
+ x:
161
+ -frontRect.width / 2 +
162
+ convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
163
+ scale,
164
+ y: height / 2
165
+ };
166
+ }
167
+ basePosArray.push(vertex0);
168
+ basePosArray.push(vertex1);
169
+
170
+ // determin which side(left or right) item is closer to. If item is closer to left side, it will be included in leftBaseITems
171
+ let distLeft = getLength(item.pos, v0);
172
+ let distRight = getLength(item.pos, v1);
173
+ if (distLeft < distRight) {
174
+ leftBaseItems.push(item);
175
+ } else {
176
+ rightBaseItems.push(item);
177
+ }
178
+ });
179
+ }
180
+ basePosArray.sort((a, b) => {
181
+ return b.x - a.x;
182
+ });
183
+
184
+ // get item's pos array about wallItem, then sort - wallItems' order is left: (-width/2) -> right: (width/2)
185
+ if (wallItems.length) {
186
+ wallItems.forEach(item => {
187
+ let vertex0, vertex1;
188
+ if (isSnapped(item.rect[3], item.rect[2])) {
189
+ vertex0 = {
190
+ x:
191
+ -frontRect.width / 2 +
192
+ convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
193
+ scale,
194
+ y: -height / 2
195
+ };
196
+ vertex1 = {
197
+ x:
198
+ -frontRect.width / 2 +
199
+ convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
200
+ scale,
201
+ y: -height / 2
202
+ };
203
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
204
+ vertex0 = {
205
+ x:
206
+ -frontRect.width / 2 +
207
+ convert(getLength(item.rect[2], v0)).from('cm').to(layer.unit) *
208
+ scale,
209
+ y: -height / 2
210
+ };
211
+ vertex1 = {
212
+ x:
213
+ -frontRect.width / 2 +
214
+ convert(getLength(item.rect[1], v0)).from('cm').to(layer.unit) *
215
+ scale,
216
+ y: -height / 2
217
+ };
218
+ } else if (isSnapped(item.rect[0], item.rect[3])) {
219
+ vertex0 = {
220
+ x:
221
+ -frontRect.width / 2 +
222
+ convert(getLength(item.rect[0], v0)).from('cm').to(layer.unit) *
223
+ scale,
224
+ y: -height / 2
225
+ };
226
+ vertex1 = {
227
+ x:
228
+ -frontRect.width / 2 +
229
+ convert(getLength(item.rect[3], v0)).from('cm').to(layer.unit) *
230
+ scale,
231
+ y: -height / 2
232
+ };
233
+ }
234
+ wallPosArray.push(vertex0);
235
+ wallPosArray.push(vertex1);
236
+
237
+ // determin which side(left or right) item is closer to. If item is closer to left side, it will be included in leftBaseITems
238
+ let distLeft = getLength(item.pos, v0);
239
+ let distRight = getLength(item.pos, v1);
240
+ if (distLeft < distRight) {
241
+ rightWallItems.push(item);
242
+ } else {
243
+ leftWallItems.push(item);
244
+ }
245
+ });
246
+ }
247
+ wallPosArray.sort((a, b) => {
248
+ return a.x - b.x;
249
+ });
250
+
251
+ // leftItems = leftBaseItems + inverted leftWallItems : Here, it's different between BaseItem's order and WallItem's order
252
+ leftBaseItems.sort(sortFunc);
253
+ leftWallItems.sort(negSortFunc);
254
+
255
+ rightBaseItems.sort(negSortFunc);
256
+ rightWallItems.sort(sortFunc);
257
+ let leftItems = leftBaseItems.concat(leftWallItems);
258
+ let rightItems = rightBaseItems.concat(rightWallItems);
259
+
260
+ // To display side dimensions, set rulerLines about leftItems
261
+ leftItems.forEach((item, idx) => {
262
+ let forwardItems = [];
263
+ let distLine = 0;
264
+ let itemHeight = convert(item.size.height).from(scene.unit).to(layer.unit);
265
+ for (let i = 0; i < idx; i++) {
266
+ forwardItems.push(leftItems[i]);
267
+ }
268
+ if (
269
+ !forwardItems.filter(
270
+ it =>
271
+ it.itemInfo.properties.altitude._length ===
272
+ item.itemInfo.properties.altitude._length &&
273
+ it.itemInfo.properties.height._length ===
274
+ item.itemInfo.properties.height._length
275
+ ).length
276
+ ) {
277
+ if (item.itemInfo.properties.altitude._length) {
278
+ if (isSnapped(item.rect[3], item.rect[2])) {
279
+ distLine = convert(getLength(item.rect[2], v1))
280
+ .from(scene.unit)
281
+ .to(layer.unit);
282
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
283
+ distLine = convert(getLength(item.rect[1], v1))
284
+ .from(scene.unit)
285
+ .to(layer.unit);
286
+ }
287
+ let itemAltitude = convert(item.size.altitude)
288
+ .from(scene.unit)
289
+ .to(layer.unit);
290
+
291
+ if (
292
+ ceilHeight - (itemAltitude + itemHeight) >
293
+ convert(DELTA).from(toler_unit).to(layer.unit)
294
+ ) {
295
+ rulerLines.push({
296
+ v0: { x: width / 2, y: -height / 2 },
297
+ v1: {
298
+ x: width / 2,
299
+ y: height / 2 - (itemHeight + itemAltitude) * scale
300
+ },
301
+ text: formatNumber(
302
+ ceilHeight - (itemAltitude + itemHeight),
303
+ DECIMAL_PLACES_2
304
+ ),
305
+ space: rulerSpace + right_count * lineSpace
306
+ });
307
+ }
308
+ rulerLines.push({
309
+ v0: {
310
+ x: width / 2 - distLine * scale,
311
+ y: height / 2 - (itemHeight + itemAltitude) * scale
312
+ },
313
+ v1: {
314
+ x: width / 2 - distLine * scale,
315
+ y: height / 2 - itemAltitude * scale
316
+ },
317
+ text: formatNumber(itemHeight, DECIMAL_PLACES_2),
318
+ space: rulerSpace + distLine * scale + right_count * lineSpace
319
+ });
320
+ rulerLines.push({
321
+ v0: {
322
+ x: width / 2,
323
+ y: height / 2 - itemAltitude * scale
324
+ },
325
+ v1: { x: width / 2, y: height / 2 },
326
+ text: formatNumber(itemAltitude, DECIMAL_PLACES_2),
327
+ space: rulerSpace + right_count * lineSpace
328
+ });
329
+ right_count++;
330
+ } else {
331
+ if (isSnapped(item.rect[3], item.rect[2])) {
332
+ distLine = convert(getLength(item.rect[3], v0))
333
+ .from(scene.unit)
334
+ .to(layer.unit);
335
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
336
+ distLine = convert(getLength(item.rect[2], v0))
337
+ .from(scene.unit)
338
+ .to(layer.unit);
339
+ }
340
+ rulerLines.push({
341
+ v0: { x: -width / 2 + distLine * scale, y: height / 2 },
342
+ v1: {
343
+ x: -width / 2 + distLine * scale,
344
+ y: height / 2 - itemHeight * scale
345
+ },
346
+ text: formatNumber(itemHeight, DECIMAL_PLACES_2),
347
+ space: rulerSpace + distLine * scale + left_count * lineSpace
348
+ });
349
+ rulerLines.push({
350
+ v0: { x: -width / 2, y: height / 2 - itemHeight * scale },
351
+ v1: { x: -width / 2, y: -height / 2 },
352
+ text: formatNumber(ceilHeight - itemHeight, DECIMAL_PLACES_2),
353
+ space: rulerSpace + left_count * lineSpace
354
+ });
355
+ left_count++;
356
+ }
357
+ }
358
+ });
359
+
360
+ // To display side dimensions, set rulerLines about rightItems
361
+ rightItems.forEach((item, idx) => {
362
+ let forwardItems = [];
363
+ let distLine = 0;
364
+ let itemHeight = convert(item.size.height).from(scene.unit).to(layer.unit);
365
+ for (let i = 0; i < idx; i++) {
366
+ forwardItems.push(rightItems[i]);
367
+ }
368
+ if (
369
+ !forwardItems.filter(
370
+ it =>
371
+ it.itemInfo.properties.altitude._length ===
372
+ item.itemInfo.properties.altitude._length &&
373
+ it.itemInfo.properties.height._length ===
374
+ item.itemInfo.properties.height._length
375
+ ).length
376
+ ) {
377
+ if (item.itemInfo.properties.altitude._length) {
378
+ if (isSnapped(item.rect[3], item.rect[2])) {
379
+ distLine = convert(getLength(item.rect[3], v0))
380
+ .from(scene.unit)
381
+ .to(layer.unit);
382
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
383
+ distLine = convert(getLength(item.rect[2], v0))
384
+ .from(scene.unit)
385
+ .to(layer.unit);
386
+ }
387
+ let itemHeight = convert(item.size.height)
388
+ .from(scene.unit)
389
+ .to(layer.unit);
390
+ let itemAltitude = convert(item.size.altitude)
391
+ .from(scene.unit)
392
+ .to(layer.unit);
393
+ rulerLines.push({
394
+ v0: { x: -width / 2, y: height / 2 },
395
+ v1: {
396
+ x: -width / 2,
397
+ y: height / 2 - itemAltitude * scale
398
+ },
399
+ text: formatNumber(itemAltitude, DECIMAL_PLACES_2),
400
+ space: rulerSpace + left_count * lineSpace
401
+ });
402
+ rulerLines.push({
403
+ v0: {
404
+ x: -width / 2 + distLine * scale,
405
+ y: height / 2 - itemAltitude * scale
406
+ },
407
+ v1: {
408
+ x: -width / 2 + distLine * scale,
409
+ y: height / 2 - (itemAltitude + itemHeight) * scale
410
+ },
411
+ text: formatNumber(itemHeight, DECIMAL_PLACES_2),
412
+ space: rulerSpace + +distLine * scale + left_count * lineSpace
413
+ });
414
+ if (
415
+ ceilHeight - (itemAltitude + itemHeight) >
416
+ convert(DELTA).from(toler_unit).to(layer.unit)
417
+ ) {
418
+ rulerLines.push({
419
+ v0: {
420
+ x: -width / 2,
421
+ y: height / 2 - (itemAltitude + itemHeight) * scale
422
+ },
423
+ v1: { x: -width / 2, y: -height / 2 },
424
+ text: formatNumber(
425
+ ceilHeight - (itemAltitude + itemHeight),
426
+ DECIMAL_PLACES_2
427
+ ),
428
+ space: rulerSpace + left_count * lineSpace
429
+ });
430
+ }
431
+
432
+ left_count++;
433
+ } else {
434
+ if (isSnapped(item.rect[3], item.rect[2])) {
435
+ distLine = convert(getLength(item.rect[2], v1))
436
+ .from(scene.unit)
437
+ .to(layer.unit);
438
+ } else if (isSnapped(item.rect[2], item.rect[1])) {
439
+ distLine = convert(getLength(item.rect[1], v1))
440
+ .from(scene.unit)
441
+ .to(layer.unit);
442
+ }
443
+ rulerLines.push({
444
+ v0: { x: width / 2, y: -height / 2 },
445
+ v1: { x: width / 2, y: height / 2 - itemHeight * scale },
446
+ text: formatNumber(ceilHeight - itemHeight, DECIMAL_PLACES_2),
447
+ space: rulerSpace + right_count * lineSpace
448
+ });
449
+ rulerLines.push({
450
+ v0: {
451
+ x: width / 2 - distLine * scale,
452
+ y: height / 2 - itemHeight * scale
453
+ },
454
+ v1: { x: width / 2 - distLine * scale, y: height / 2 },
455
+ text: formatNumber(itemHeight, DECIMAL_PLACES_2),
456
+ space: rulerSpace + distLine * scale + right_count * lineSpace
457
+ });
458
+ right_count++;
459
+ }
460
+ }
461
+ });
462
+
463
+ // To display wall line dimensions, set rulerLines
464
+ rulerLines.push({
465
+ v0: { x: width / 2, y: -height / 2 },
466
+ v1: { x: width / 2, y: height / 2 },
467
+ text: ceilHeight,
468
+ space: rulerSpace + lineSpace * right_count
469
+ });
470
+ rulerLines.push({
471
+ v0: { x: -width / 2, y: height / 2 },
472
+ v1: { x: -width / 2, y: -height / 2 },
473
+ text: ceilHeight,
474
+ space: rulerSpace + lineSpace * left_count
475
+ });
476
+ rulerLines.push({
477
+ v0: { x: width / 2, y: height / 2 },
478
+ v1: { x: -width / 2, y: height / 2 },
479
+ text: formatNumber(lineLength, DECIMAL_PLACES_2),
480
+ space: rulerSpace + (baseItems.length ? lineSpace : 0)
481
+ });
482
+ rulerLines.push({
483
+ v0: { x: -width / 2, y: -height / 2 },
484
+ v1: { x: width / 2, y: -height / 2 },
485
+ text: formatNumber(lineLength, DECIMAL_PLACES_2),
486
+ space: rulerSpace + (wallItems.length ? lineSpace : 0)
487
+ });
488
+
489
+ // To display wallItems dimensions, set rulerLines with wallPosArray
490
+ if (wallItems.length) {
491
+ for (let i = 0; i < wallPosArray.length - 1; i++) {
492
+ let dist = getLength(wallPosArray[i], wallPosArray[i + 1]) / scale;
493
+ rulerLines.push({
494
+ v0: wallPosArray[i],
495
+ v1: wallPosArray[i + 1],
496
+ space: rulerSpace,
497
+ text: formatNumber(dist, DECIMAL_PLACES_2)
498
+ });
499
+ }
500
+ }
501
+
502
+ // To display baseItems dimensions, set rulerLines with basePosArray
503
+ if (baseItems.length) {
504
+ for (let j = 0; j < basePosArray.length - 1; j++) {
505
+ let dist = getLength(basePosArray[j], basePosArray[j + 1]) / scale;
506
+ rulerLines.push({
507
+ v0: basePosArray[j],
508
+ v1: basePosArray[j + 1],
509
+ space: rulerSpace,
510
+ text: formatNumber(dist, DECIMAL_PLACES_2)
511
+ });
512
+ }
513
+ }
514
+
515
+ rulerLines.forEach(line => {
516
+ if (isNonZeroText(line.text))
517
+ rulerData.push(
518
+ <Ruler3D
519
+ line={line}
520
+ layer={layer}
521
+ viewScale={viewScale}
522
+ downloadFlag={downloadFlag}
523
+ />
524
+ );
525
+ });
526
+
527
+ return <g opacity={layer.opacity}>{rulerData}</g>;
528
+ }