kitchen-simulator 7.0.9-react-18 → 10.0.0-unique-id

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 (704) hide show
  1. package/es/AppContext.js +1 -4
  2. package/es/LiteKitchenConfigurator.js +67 -23
  3. package/es/LiteRenderer.js +15 -100
  4. package/es/actions/export.js +25 -12
  5. package/es/actions/items-actions.js +18 -2
  6. package/es/analytics/ga4.js +188 -0
  7. package/es/analytics/posthog.js +60 -0
  8. package/es/assets/Window.hdr +2100 -0
  9. package/es/assets/img/default/maple.jpg +0 -0
  10. package/es/assets/img/default/steel.jpg +0 -0
  11. package/es/assets/img/loading/loading.gif +0 -0
  12. package/es/catalog/cabinet/cabinet-assembly-order.js +36 -0
  13. package/es/catalog/catalog.js +0 -2
  14. package/es/catalog/factories/area-factory-3d.js +1 -5
  15. package/es/catalog/factories/wall-factory.js +1 -1
  16. package/es/catalog/holes/door-double/door_double.png +0 -0
  17. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  18. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  19. package/es/catalog/holes/gate/gate.jpg +0 -0
  20. package/es/catalog/holes/window-clear/texture.png +0 -0
  21. package/es/catalog/holes/window-cross/texture.png +0 -0
  22. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  23. package/es/catalog/holes/window-vertical/texture.png +0 -0
  24. package/es/catalog/utils/exporter.js +4 -0
  25. package/es/catalog/utils/item-loader.js +10 -23
  26. package/es/class/area.js +0 -1
  27. package/es/class/export.js +1 -3
  28. package/es/class/item.js +185 -86
  29. package/es/class/project.js +17 -21
  30. package/es/components/content.js +3 -1
  31. package/es/components/export.js +3 -5
  32. package/es/components/style/export.js +2 -28
  33. package/es/components/style/form-number-input.js +34 -43
  34. package/es/components/viewer2d/group.js +12 -7
  35. package/es/components/viewer2d/item.js +160 -168
  36. package/es/components/viewer2d/line.js +18 -51
  37. package/es/components/viewer2d/rulerX.js +3 -0
  38. package/es/components/viewer2d/rulerY.js +3 -0
  39. package/es/components/viewer2d/scene.js +67 -47
  40. package/es/components/viewer2d/state.js +1 -1
  41. package/es/components/viewer2d/viewer2d.js +564 -506
  42. package/es/components/viewer3d/front3D.js +1 -2
  43. package/es/components/viewer3d/pointer-lock-navigation.js +0 -90
  44. package/es/components/viewer3d/scene-creator.js +80 -47
  45. package/es/components/viewer3d/three-memory-cleaner.js +0 -14
  46. package/es/components/viewer3d/viewer3d-first-person.js +132 -134
  47. package/es/components/viewer3d/viewer3d.js +37 -22
  48. package/es/constants/catalog/skinPanel.js +9 -0
  49. package/es/constants.js +20 -8
  50. package/es/{WorkSpaceOriginal.js → devLiteRenderer.js} +228 -174
  51. package/es/events/external/handleExternalEvent.js +140 -0
  52. package/es/{utils/isolate-event-handler.js → events/external/handleExternalEvent.util.js} +87 -593
  53. package/es/events/external/handlers.addItem.js +47 -0
  54. package/es/events/external/handlers.changeDoorStyle.js +135 -0
  55. package/es/events/external/handlers.elementOps.js +8 -0
  56. package/es/events/external/handlers.finishing.js +26 -0
  57. package/es/events/external/handlers.hole.js +4 -0
  58. package/es/events/external/handlers.loadProject.js +124 -0
  59. package/es/events/external/handlers.molding.js +24 -0
  60. package/es/events/external/handlers.projectLifecycle.js +11 -0
  61. package/es/events/external/handlers.projectSettings.js +32 -0
  62. package/es/events/external/handlers.replaceCabinet.js +41 -0
  63. package/es/events/external/handlers.roomShape.js +8 -0
  64. package/es/events/external/handlers.syncScene.js +21 -0
  65. package/es/events/external/handlers.updateSelectedElements.js +11 -0
  66. package/es/events/external/handlers.viewMode.js +11 -0
  67. package/es/events/external/handlers.viewerNavigation.js +108 -0
  68. package/es/events/external/handlers.wall.js +7 -0
  69. package/es/index.js +37 -84
  70. package/es/mappings/external-events/mapExternalEventPayload.js +28 -0
  71. package/es/mappings/external-events/mappers/addItemMapper.js +95 -0
  72. package/es/mappings/external-events/mappers/ccdfMapper.js +95 -0
  73. package/es/mappings/external-events/mappers/ccdfToCDSMapper.js +52 -0
  74. package/es/mappings/external-events/mappers/changeDoorStyleMapper.js +37 -0
  75. package/es/mappings/external-events/mappers/loadProjectMapper.js +62 -0
  76. package/es/mappings/holesToCatalog.js +139 -0
  77. package/es/models.js +16 -1
  78. package/es/plugins/keyboard.js +1 -1
  79. package/es/reducers/export.js +2 -4
  80. package/es/reducers/items-reducer.js +4 -2
  81. package/es/reducers/project-reducer.js +1 -1
  82. package/es/reducers/reducer.js +2 -3
  83. package/es/reducers/viewer2d-reducer.js +0 -2
  84. package/es/shared/domain/cabinet-identity.js +6 -0
  85. package/es/shared/objects/immutable.js +3 -0
  86. package/es/utils/convert-units-lite.js +9 -0
  87. package/es/utils/geometry.js +598 -78
  88. package/es/utils/helper.js +45 -30
  89. package/es/utils/history.js +13 -1
  90. package/es/utils/molding.js +12 -241
  91. package/es/utils/name-generator.js +0 -3
  92. package/es/utils/skinPanelEngine.js +526 -0
  93. package/lib/@history.js +11 -0
  94. package/lib/AppContext.js +11 -0
  95. package/lib/LiteKitchenConfigurator.js +527 -0
  96. package/lib/LiteRenderer.js +323 -0
  97. package/lib/actions/area-actions.js +21 -0
  98. package/lib/actions/export.js +36 -0
  99. package/lib/actions/groups-actions.js +107 -0
  100. package/lib/actions/holes-actions.js +140 -0
  101. package/lib/actions/items-actions.js +383 -0
  102. package/lib/actions/lines-actions.js +98 -0
  103. package/lib/actions/project-actions.js +351 -0
  104. package/lib/actions/scene-actions.js +43 -0
  105. package/lib/actions/vertices-actions.js +35 -0
  106. package/lib/actions/viewer2d-actions.js +73 -0
  107. package/lib/actions/viewer3d-actions.js +32 -0
  108. package/lib/analytics/ga4.js +194 -0
  109. package/lib/analytics/posthog.js +68 -0
  110. package/lib/assets/Window.hdr +2100 -0
  111. package/lib/assets/brown_photostudio_02_1k.hdr +0 -0
  112. package/lib/assets/fonts/Rene Bieder Milliard Black Italic.woff +0 -0
  113. package/lib/assets/fonts/Rene Bieder Milliard Black.woff +0 -0
  114. package/lib/assets/fonts/Rene Bieder Milliard Bold Italic.woff +0 -0
  115. package/lib/assets/fonts/Rene Bieder Milliard Bold.woff +0 -0
  116. package/lib/assets/fonts/Rene Bieder Milliard Book Italic.woff +0 -0
  117. package/lib/assets/fonts/Rene Bieder Milliard Book.woff +0 -0
  118. package/lib/assets/fonts/Rene Bieder Milliard ExtraBold Italic.woff +0 -0
  119. package/lib/assets/fonts/Rene Bieder Milliard ExtraBold.woff +0 -0
  120. package/lib/assets/fonts/Rene Bieder Milliard ExtraLight Italic.woff +0 -0
  121. package/lib/assets/fonts/Rene Bieder Milliard ExtraLight.woff +0 -0
  122. package/lib/assets/fonts/Rene Bieder Milliard Hairline Italic.woff +0 -0
  123. package/lib/assets/fonts/Rene Bieder Milliard Hairline.woff +0 -0
  124. package/lib/assets/fonts/Rene Bieder Milliard Heavy Italic.woff +0 -0
  125. package/lib/assets/fonts/Rene Bieder Milliard Heavy.woff +0 -0
  126. package/lib/assets/fonts/Rene Bieder Milliard Light Italic.woff +0 -0
  127. package/lib/assets/fonts/Rene Bieder Milliard Light.woff +0 -0
  128. package/lib/assets/fonts/Rene Bieder Milliard Medium Italic.woff +0 -0
  129. package/lib/assets/fonts/Rene Bieder Milliard Medium.woff +0 -0
  130. package/lib/assets/fonts/Rene Bieder Milliard SemiBold Italic.woff +0 -0
  131. package/lib/assets/fonts/Rene Bieder Milliard SemiBold.woff +0 -0
  132. package/lib/assets/fonts/Rene Bieder Milliard Thin Italic.woff +0 -0
  133. package/lib/assets/fonts/Rene Bieder Milliard Thin.woff +0 -0
  134. package/lib/assets/fonts/style.css +177 -0
  135. package/lib/assets/gltf/door_closet.gltf +1 -0
  136. package/lib/assets/gltf/door_exterior.gltf +1 -0
  137. package/lib/assets/gltf/door_interior.gltf +1 -0
  138. package/lib/assets/gltf/door_sliding.gltf +1 -0
  139. package/lib/assets/gltf/doorway_framed.bin +0 -0
  140. package/lib/assets/gltf/doorway_framed.fbx +0 -0
  141. package/lib/assets/gltf/doorway_framed.gltf +1 -0
  142. package/lib/assets/gltf/window_clear.bin +0 -0
  143. package/lib/assets/gltf/window_clear.fbx +0 -0
  144. package/lib/assets/gltf/window_clear.gltf +1 -0
  145. package/lib/assets/gltf/window_cross.bin +0 -0
  146. package/lib/assets/gltf/window_cross.fbx +0 -0
  147. package/lib/assets/gltf/window_cross.gltf +1 -0
  148. package/lib/assets/gltf/window_double_hung.bin +0 -0
  149. package/lib/assets/gltf/window_double_hung.fbx +0 -0
  150. package/lib/assets/gltf/window_double_hung.gltf +1 -0
  151. package/lib/assets/gltf/window_vertical.bin +0 -0
  152. package/lib/assets/gltf/window_vertical.fbx +0 -0
  153. package/lib/assets/gltf/window_vertical.gltf +1 -0
  154. package/lib/assets/img/TKC_thumbnail.png +0 -0
  155. package/lib/assets/img/Toggle.png +0 -0
  156. package/lib/assets/img/default/maple.jpg +0 -0
  157. package/lib/assets/img/default/steel.jpg +0 -0
  158. package/lib/assets/img/loading/loading.gif +0 -0
  159. package/lib/assets/img/loading/loading_1.svg +11 -0
  160. package/lib/assets/img/loading_large.gif +0 -0
  161. package/lib/assets/img/png/door/closet.png +0 -0
  162. package/lib/assets/img/png/door/doorwaysframed.png +0 -0
  163. package/lib/assets/img/png/door/doorwaysframeles.png +0 -0
  164. package/lib/assets/img/png/door/doorwaysframeless.png +0 -0
  165. package/lib/assets/img/png/door/exterior.png +0 -0
  166. package/lib/assets/img/png/door/interior.png +0 -0
  167. package/lib/assets/img/png/door/sliding.png +0 -0
  168. package/lib/assets/img/png/helper/outcome.png +0 -0
  169. package/lib/assets/img/project_img.png +0 -0
  170. package/lib/assets/img/rta/rta_logo_box_blue.jpg +0 -0
  171. package/lib/assets/img/rta/rta_logo_box_blue_ico.jpg +0 -0
  172. package/lib/assets/img/rta/rta_logo_box_blue_ico.svg +55 -0
  173. package/lib/assets/img/rta/rta_logo_box_darkGray.jpg +0 -0
  174. package/lib/assets/img/rta/rta_logo_box_lightblue.png +0 -0
  175. package/lib/assets/img/rta/rta_logo_box_lightmaroon.png +0 -0
  176. package/lib/assets/img/rta/rta_logo_box_maroon.png +0 -0
  177. package/lib/assets/img/rta/rta_logo_box_white.png +0 -0
  178. package/lib/assets/img/rta_menu.png +0 -0
  179. package/lib/assets/img/step2.jpg +0 -0
  180. package/lib/assets/img/step3.jpg +0 -0
  181. package/lib/assets/img/step4.jpg +0 -0
  182. package/lib/assets/img/step5.jpg +0 -0
  183. package/lib/assets/img/step6.jpg +0 -0
  184. package/lib/assets/img/step7.jpg +0 -0
  185. package/lib/assets/img/step8.jpg +0 -0
  186. package/lib/assets/img/svg/2d_delete_object.svg +33 -0
  187. package/lib/assets/img/svg/2d_delete_object1.svg +33 -0
  188. package/lib/assets/img/svg/2d_lock_object.svg +33 -0
  189. package/lib/assets/img/svg/3d_item_move.svg +106 -0
  190. package/lib/assets/img/svg/3d_item_rotation.svg +76 -0
  191. package/lib/assets/img/svg/3d_item_warning_edit.svg +77 -0
  192. package/lib/assets/img/svg/3d_item_warning_info.svg +81 -0
  193. package/lib/assets/img/svg/accessories.svg +4 -0
  194. package/lib/assets/img/svg/angle_icon.svg +39 -0
  195. package/lib/assets/img/svg/blank_div.svg +14 -0
  196. package/lib/assets/img/svg/bottombar/2d3d_button.svg +3 -0
  197. package/lib/assets/img/svg/bottombar/2d3d_button_active.svg +3 -0
  198. package/lib/assets/img/svg/bottombar/2d3d_toggle.svg +4 -0
  199. package/lib/assets/img/svg/bottombar/2d3d_toggle_active.svg +4 -0
  200. package/lib/assets/img/svg/bottombar/arrow-down.svg +3 -0
  201. package/lib/assets/img/svg/bottombar/arrow-left.svg +3 -0
  202. package/lib/assets/img/svg/bottombar/arrow-minus.svg +3 -0
  203. package/lib/assets/img/svg/bottombar/arrow-plus.svg +11 -0
  204. package/lib/assets/img/svg/bottombar/arrow-right.svg +3 -0
  205. package/lib/assets/img/svg/bottombar/arrow-up.svg +3 -0
  206. package/lib/assets/img/svg/bottombar/collapse.svg +3 -0
  207. package/lib/assets/img/svg/bottombar/elevation-back.svg +6 -0
  208. package/lib/assets/img/svg/bottombar/elevation-front.svg +6 -0
  209. package/lib/assets/img/svg/bottombar/elevation-left.svg +6 -0
  210. package/lib/assets/img/svg/bottombar/elevation-right.svg +7 -0
  211. package/lib/assets/img/svg/bottombar/elevation.svg +13 -0
  212. package/lib/assets/img/svg/bottombar/expand.svg +3 -0
  213. package/lib/assets/img/svg/bottombar/help.svg +72 -0
  214. package/lib/assets/img/svg/bottombar/incm_toggle.svg +39 -0
  215. package/lib/assets/img/svg/bottombar/pan_1.svg +57 -0
  216. package/lib/assets/img/svg/bottombar/pan_2.svg +27 -0
  217. package/lib/assets/img/svg/bottombar/pan_3.svg +27 -0
  218. package/lib/assets/img/svg/bottombar/pan_4.svg +27 -0
  219. package/lib/assets/img/svg/bottombar/pan_5.svg +27 -0
  220. package/lib/assets/img/svg/bottombar/settings.svg +23 -0
  221. package/lib/assets/img/svg/bottombar/spin-down.svg +76 -0
  222. package/lib/assets/img/svg/bottombar/spin-left.svg +75 -0
  223. package/lib/assets/img/svg/bottombar/spin-right.svg +75 -0
  224. package/lib/assets/img/svg/bottombar/spin-up.svg +76 -0
  225. package/lib/assets/img/svg/bottombar/spin_1.svg +48 -0
  226. package/lib/assets/img/svg/bottombar/spin_2.svg +31 -0
  227. package/lib/assets/img/svg/bottombar/spin_3.svg +31 -0
  228. package/lib/assets/img/svg/bottombar/spin_4.svg +31 -0
  229. package/lib/assets/img/svg/bottombar/spin_5.svg +31 -0
  230. package/lib/assets/img/svg/bottombar/zoomin.svg +29 -0
  231. package/lib/assets/img/svg/bottombar/zoomout.svg +26 -0
  232. package/lib/assets/img/svg/check.svg +10 -0
  233. package/lib/assets/img/svg/close.svg +11 -0
  234. package/lib/assets/img/svg/color/Black.svg +3 -0
  235. package/lib/assets/img/svg/color/Blue.svg +3 -0
  236. package/lib/assets/img/svg/color/Cream.svg +3 -0
  237. package/lib/assets/img/svg/color/Gray.svg +3 -0
  238. package/lib/assets/img/svg/color/Green.svg +3 -0
  239. package/lib/assets/img/svg/color/White.svg +3 -0
  240. package/lib/assets/img/svg/color/White.svg.bak +3 -0
  241. package/lib/assets/img/svg/color/stone2.jpg +0 -0
  242. package/lib/assets/img/svg/color/wood2.jpg +0 -0
  243. package/lib/assets/img/svg/copy.svg +11 -0
  244. package/lib/assets/img/svg/delete.svg +3 -0
  245. package/lib/assets/img/svg/detail.svg +77 -0
  246. package/lib/assets/img/svg/disclaimer/background.svg +758 -0
  247. package/lib/assets/img/svg/disclaimer/logo-dots.svg +11 -0
  248. package/lib/assets/img/svg/door/Closet.svg +11 -0
  249. package/lib/assets/img/svg/door/Exterior.svg +5 -0
  250. package/lib/assets/img/svg/door/Framed_dorway.svg +5 -0
  251. package/lib/assets/img/svg/door/Frameless_dorway.svg +5 -0
  252. package/lib/assets/img/svg/door/Interior.svg +7 -0
  253. package/lib/assets/img/svg/door/Sliding.svg +5 -0
  254. package/lib/assets/img/svg/doors_closet.svg +47 -0
  255. package/lib/assets/img/svg/doors_exterior.svg +25 -0
  256. package/lib/assets/img/svg/doors_interior.svg +29 -0
  257. package/lib/assets/img/svg/doors_patio.svg +26 -0
  258. package/lib/assets/img/svg/duplicate.svg +11 -0
  259. package/lib/assets/img/svg/duplicate_object_left.svg +32 -0
  260. package/lib/assets/img/svg/duplicate_object_right.svg +32 -0
  261. package/lib/assets/img/svg/filtersActive.svg +19 -0
  262. package/lib/assets/img/svg/firstsetting/L.svg +3 -0
  263. package/lib/assets/img/svg/firstsetting/L2.svg +3 -0
  264. package/lib/assets/img/svg/firstsetting/Open.svg +3 -0
  265. package/lib/assets/img/svg/firstsetting/Square.svg +3 -0
  266. package/lib/assets/img/svg/firstsetting/bar-active.svg +9 -0
  267. package/lib/assets/img/svg/firstsetting/bar-normal.svg +3 -0
  268. package/lib/assets/img/svg/firstsetting/bullet-current.svg +3 -0
  269. package/lib/assets/img/svg/firstsetting/bullet-done.svg +3 -0
  270. package/lib/assets/img/svg/firstsetting/bullet-not-done.svg +3 -0
  271. package/lib/assets/img/svg/firstsetting/check-active.svg +3 -0
  272. package/lib/assets/img/svg/firstsetting/check-normal.svg +3 -0
  273. package/lib/assets/img/svg/firstsetting/pencil.svg +11 -0
  274. package/lib/assets/img/svg/green_checkmark.svg +27 -0
  275. package/lib/assets/img/svg/headerbar/assist.svg +3 -0
  276. package/lib/assets/img/svg/headerbar/cart.svg +3 -0
  277. package/lib/assets/img/svg/headerbar/check.svg +10 -0
  278. package/lib/assets/img/svg/headerbar/consult_designer.svg +45 -0
  279. package/lib/assets/img/svg/headerbar/edit_name.svg +26 -0
  280. package/lib/assets/img/svg/headerbar/file-dollar.svg +13 -0
  281. package/lib/assets/img/svg/headerbar/hamburger_menu.svg +32 -0
  282. package/lib/assets/img/svg/headerbar/plus.svg +11 -0
  283. package/lib/assets/img/svg/headerbar/review_quote.svg +44 -0
  284. package/lib/assets/img/svg/headerbar/ruler-measure.svg +11 -0
  285. package/lib/assets/img/svg/headerbar/save.svg +3 -0
  286. package/lib/assets/img/svg/headerbar/setting.svg +75 -0
  287. package/lib/assets/img/svg/help/check.svg +10 -0
  288. package/lib/assets/img/svg/help/search.svg +76 -0
  289. package/lib/assets/img/svg/intro/1-start-with-floorplan-whole.svg +27 -0
  290. package/lib/assets/img/svg/intro/1-start-with-floorplan.svg +26 -0
  291. package/lib/assets/img/svg/intro/2-start-from-scratch-whole.svg +28 -0
  292. package/lib/assets/img/svg/intro/2-start-from-scratch.svg +27 -0
  293. package/lib/assets/img/svg/intro/3-retrieve-project-whole.svg +19 -0
  294. package/lib/assets/img/svg/intro/3-retrieve-project.svg +18 -0
  295. package/lib/assets/img/svg/invert.svg +127 -0
  296. package/lib/assets/img/svg/lefttoolbar/appliance-active.svg +13 -0
  297. package/lib/assets/img/svg/lefttoolbar/appliance.svg +13 -0
  298. package/lib/assets/img/svg/lefttoolbar/cabinet-active.svg +10 -0
  299. package/lib/assets/img/svg/lefttoolbar/cabinet-category.svg +3 -0
  300. package/lib/assets/img/svg/lefttoolbar/cabinet-one.svg +3 -0
  301. package/lib/assets/img/svg/lefttoolbar/cabinet.svg +10 -0
  302. package/lib/assets/img/svg/lefttoolbar/disigner_assistance.svg +89 -0
  303. package/lib/assets/img/svg/lefttoolbar/door-style-active.svg +20 -0
  304. package/lib/assets/img/svg/lefttoolbar/door-style.svg +20 -0
  305. package/lib/assets/img/svg/lefttoolbar/door.svg +12 -0
  306. package/lib/assets/img/svg/lefttoolbar/error_icon.svg +81 -0
  307. package/lib/assets/img/svg/lefttoolbar/finishing-active.svg +13 -0
  308. package/lib/assets/img/svg/lefttoolbar/finishing.svg +13 -0
  309. package/lib/assets/img/svg/lefttoolbar/reviewforquote-active.svg +86 -0
  310. package/lib/assets/img/svg/lefttoolbar/reviewforquote.svg +12 -0
  311. package/lib/assets/img/svg/lefttoolbar/room-shape-L.svg +3 -0
  312. package/lib/assets/img/svg/lefttoolbar/room-shape-active.svg +18 -0
  313. package/lib/assets/img/svg/lefttoolbar/room-shape-custom.svg +12 -0
  314. package/lib/assets/img/svg/lefttoolbar/room-shape-irregular.svg +3 -0
  315. package/lib/assets/img/svg/lefttoolbar/room-shape-open.svg +3 -0
  316. package/lib/assets/img/svg/lefttoolbar/room-shape-square.svg +3 -0
  317. package/lib/assets/img/svg/lefttoolbar/room-shape.svg +18 -0
  318. package/lib/assets/img/svg/lefttoolbar/search.svg +76 -0
  319. package/lib/assets/img/svg/lefttoolbar/view_more.svg +86 -0
  320. package/lib/assets/img/svg/lefttoolbar/warning_icon.svg +81 -0
  321. package/lib/assets/img/svg/lefttoolbar/window.svg +12 -0
  322. package/lib/assets/img/svg/logo.svg +11 -0
  323. package/lib/assets/img/svg/logo_with_text.svg +25 -0
  324. package/lib/assets/img/svg/menubar/login.svg +84 -0
  325. package/lib/assets/img/svg/menubar/my_projects.svg +85 -0
  326. package/lib/assets/img/svg/menubar/new_project.svg +110 -0
  327. package/lib/assets/img/svg/menubar/save_project.svg +84 -0
  328. package/lib/assets/img/svg/options.svg +3 -0
  329. package/lib/assets/img/svg/positioning.svg +3 -0
  330. package/lib/assets/img/svg/rotate.png +0 -0
  331. package/lib/assets/img/svg/rotate.svg +17 -0
  332. package/lib/assets/img/svg/rotate_object_clockwise.svg +26 -0
  333. package/lib/assets/img/svg/rotate_object_counterclockwise.svg +26 -0
  334. package/lib/assets/img/svg/toggleFilters.svg +19 -0
  335. package/lib/assets/img/svg/toolbar/add_appliances_active.svg +64 -0
  336. package/lib/assets/img/svg/toolbar/add_appliances_inactive.svg +52 -0
  337. package/lib/assets/img/svg/toolbar/add_button.svg +36 -0
  338. package/lib/assets/img/svg/toolbar/add_cabinets_active.svg +59 -0
  339. package/lib/assets/img/svg/toolbar/add_cabinets_inactive.svg +49 -0
  340. package/lib/assets/img/svg/toolbar/add_items_doors.svg +25 -0
  341. package/lib/assets/img/svg/toolbar/add_items_doorways.svg +24 -0
  342. package/lib/assets/img/svg/toolbar/add_items_refrigerator.svg +32 -0
  343. package/lib/assets/img/svg/toolbar/add_items_windows.svg +28 -0
  344. package/lib/assets/img/svg/toolbar/apply_button.svg +38 -0
  345. package/lib/assets/img/svg/toolbar/arrow-plus.svg +11 -0
  346. package/lib/assets/img/svg/toolbar/backsplash.svg +8 -0
  347. package/lib/assets/img/svg/toolbar/cancel_button.svg +37 -0
  348. package/lib/assets/img/svg/toolbar/consult_a_designer_button.svg +47 -0
  349. package/lib/assets/img/svg/toolbar/countertop.svg +7 -0
  350. package/lib/assets/img/svg/toolbar/dcm.png +0 -0
  351. package/lib/assets/img/svg/toolbar/dcm_off.svg +12 -0
  352. package/lib/assets/img/svg/toolbar/dcm_on.svg +474 -0
  353. package/lib/assets/img/svg/toolbar/delete_button.svg +37 -0
  354. package/lib/assets/img/svg/toolbar/download.svg +77 -0
  355. package/lib/assets/img/svg/toolbar/draw_custom_floor.svg +31 -0
  356. package/lib/assets/img/svg/toolbar/edit_button.svg +75 -0
  357. package/lib/assets/img/svg/toolbar/email_quote_button.svg +44 -0
  358. package/lib/assets/img/svg/toolbar/fbm.png +0 -0
  359. package/lib/assets/img/svg/toolbar/finishing_touches_active.svg +54 -0
  360. package/lib/assets/img/svg/toolbar/finishing_touches_inactive.svg +42 -0
  361. package/lib/assets/img/svg/toolbar/floorstyle.svg +9 -0
  362. package/lib/assets/img/svg/toolbar/fmb.png +0 -0
  363. package/lib/assets/img/svg/toolbar/fmb_off.svg +12 -0
  364. package/lib/assets/img/svg/toolbar/fmb_on.svg +489 -0
  365. package/lib/assets/img/svg/toolbar/furnishings_icon.svg +6 -0
  366. package/lib/assets/img/svg/toolbar/get_started_button.svg +41 -0
  367. package/lib/assets/img/svg/toolbar/handles.svg +5 -0
  368. package/lib/assets/img/svg/toolbar/lighting.svg +7 -0
  369. package/lib/assets/img/svg/toolbar/lrm.png +0 -0
  370. package/lib/assets/img/svg/toolbar/lrm_off.svg +12 -0
  371. package/lib/assets/img/svg/toolbar/lrm_on.svg +470 -0
  372. package/lib/assets/img/svg/toolbar/make_floorplan_active.svg +66 -0
  373. package/lib/assets/img/svg/toolbar/make_floorplan_inactive.svg +52 -0
  374. package/lib/assets/img/svg/toolbar/predefined_room_l_shaped.svg +20 -0
  375. package/lib/assets/img/svg/toolbar/predefined_room_layout.svg +20 -0
  376. package/lib/assets/img/svg/toolbar/predefined_room_long_narrow.svg +20 -0
  377. package/lib/assets/img/svg/toolbar/predefined_room_open_l_shape.svg +20 -0
  378. package/lib/assets/img/svg/toolbar/predefined_room_open_pentagon.svg +20 -0
  379. package/lib/assets/img/svg/toolbar/predefined_room_open_rectangle.svg +20 -0
  380. package/lib/assets/img/svg/toolbar/predefined_room_open_rectangle_2.svg +20 -0
  381. package/lib/assets/img/svg/toolbar/predefined_room_pentagon.svg +20 -0
  382. package/lib/assets/img/svg/toolbar/predefined_room_rectangle.svg +20 -0
  383. package/lib/assets/img/svg/toolbar/predefined_room_rectangle_with_alcove.svg +20 -0
  384. package/lib/assets/img/svg/toolbar/redo_button.svg +75 -0
  385. package/lib/assets/img/svg/toolbar/redo_button1.svg +75 -0
  386. package/lib/assets/img/svg/toolbar/review_quote_active.svg +14 -0
  387. package/lib/assets/img/svg/toolbar/review_quote_inactive.svg +44 -0
  388. package/lib/assets/img/svg/toolbar/save_project_button.svg +44 -0
  389. package/lib/assets/img/svg/toolbar/select_doorstyle_active.svg +67 -0
  390. package/lib/assets/img/svg/toolbar/select_doorstyle_inactive.svg +57 -0
  391. package/lib/assets/img/svg/toolbar/shopping-cart.svg +13 -0
  392. package/lib/assets/img/svg/toolbar/style_change_button.svg +47 -0
  393. package/lib/assets/img/svg/toolbar/take_picture.svg +75 -0
  394. package/lib/assets/img/svg/toolbar/undo_button.svg +76 -0
  395. package/lib/assets/img/svg/toolbar/undo_button1.svg +76 -0
  396. package/lib/assets/img/svg/toolbar/use_button.svg +37 -0
  397. package/lib/assets/img/svg/toolbar/wall_color_icon.svg +6 -0
  398. package/lib/assets/img/svg/topbar/edit_active.svg +10 -0
  399. package/lib/assets/img/svg/topbar/edit_inactive.svg +10 -0
  400. package/lib/assets/img/svg/topbar/redo_active.svg +42 -0
  401. package/lib/assets/img/svg/topbar/redo_inactive.svg +23 -0
  402. package/lib/assets/img/svg/topbar/select_all_active.svg +50 -0
  403. package/lib/assets/img/svg/topbar/select_all_inactive.svg +32 -0
  404. package/lib/assets/img/svg/topbar/take_picture_active.svg +51 -0
  405. package/lib/assets/img/svg/topbar/take_picture_inactive.svg +26 -0
  406. package/lib/assets/img/svg/topbar/undo_active.svg +42 -0
  407. package/lib/assets/img/svg/topbar/undo_inactive.svg +23 -0
  408. package/lib/assets/img/svg/warning_info_2d.svg +81 -0
  409. package/lib/assets/img/svg/window/Clear.svg +3 -0
  410. package/lib/assets/img/svg/window/Cross.svg +5 -0
  411. package/lib/assets/img/svg/window/Double_hung.svg +4 -0
  412. package/lib/assets/img/svg/window/Vertical.svg +4 -0
  413. package/lib/assets/img/svg/windows_clear.svg +23 -0
  414. package/lib/assets/img/svg/windows_cross.svg +28 -0
  415. package/lib/assets/img/svg/windows_double_hung.svg +24 -0
  416. package/lib/assets/img/svg/windows_vertical.svg +24 -0
  417. package/lib/assets/img/svg/wizardstep/Custom.svg +3 -0
  418. package/lib/assets/img/svg/wizardstep/Dashed_line.svg +3 -0
  419. package/lib/assets/img/svg/wizardstep/L.svg +3 -0
  420. package/lib/assets/img/svg/wizardstep/L2.svg +3 -0
  421. package/lib/assets/img/svg/wizardstep/Open.svg +3 -0
  422. package/lib/assets/img/svg/wizardstep/Square.svg +3 -0
  423. package/lib/assets/img/svg/wizardstep/bar-active.svg +9 -0
  424. package/lib/assets/img/svg/wizardstep/bar-normal.svg +3 -0
  425. package/lib/assets/img/svg/wizardstep/bullet-current.svg +3 -0
  426. package/lib/assets/img/svg/wizardstep/bullet-done.svg +3 -0
  427. package/lib/assets/img/svg/wizardstep/bullet-not-done.svg +3 -0
  428. package/lib/assets/img/svg/wizardstep/check-active.svg +3 -0
  429. package/lib/assets/img/svg/wizardstep/check-normal.svg +3 -0
  430. package/lib/assets/img/svg/wizardstep/detail_view.svg +87 -0
  431. package/lib/assets/img/svg/wizardstep/pencil.svg +11 -0
  432. package/lib/assets/img/svg/wizardstep/tile_view.svg +95 -0
  433. package/lib/assets/img/texture/glass.jpg +0 -0
  434. package/lib/assets/img/texture/steel.jpg +0 -0
  435. package/lib/assets/img/texture/white1px.jpg +0 -0
  436. package/lib/assets/img/texture/wood.jpg +0 -0
  437. package/lib/assets/model/DCM.bin +0 -0
  438. package/lib/assets/model/DCM.fbx +0 -0
  439. package/lib/assets/model/DCM.gltf +1 -0
  440. package/lib/assets/model/FBM.bin +0 -0
  441. package/lib/assets/model/FBM.fbx +0 -0
  442. package/lib/assets/model/FBM.gltf +1 -0
  443. package/lib/assets/model/LRM.bin +0 -0
  444. package/lib/assets/model/LRM.fbx +0 -0
  445. package/lib/assets/model/LRM.gltf +1 -0
  446. package/lib/assets/rtastore_logo.png +0 -0
  447. package/lib/catalog/areas/area/planner-element.js +53 -0
  448. package/lib/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  449. package/lib/catalog/areas/area/textures/grass.jpg +0 -0
  450. package/lib/catalog/areas/area/textures/parquet.jpg +0 -0
  451. package/lib/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  452. package/lib/catalog/areas/area/textures/tile1.jpg +0 -0
  453. package/lib/catalog/back.png +0 -0
  454. package/lib/catalog/cabinet/cabinet-assembly-order.js +42 -0
  455. package/lib/catalog/catalog.js +270 -0
  456. package/lib/catalog/doors.png +0 -0
  457. package/lib/catalog/doorways.png +0 -0
  458. package/lib/catalog/envMap/nx.hdr +0 -0
  459. package/lib/catalog/envMap/ny.hdr +0 -0
  460. package/lib/catalog/envMap/nz.hdr +0 -0
  461. package/lib/catalog/envMap/px.hdr +0 -0
  462. package/lib/catalog/envMap/py.hdr +0 -0
  463. package/lib/catalog/envMap/pz.hdr +0 -0
  464. package/lib/catalog/export.js +1 -0
  465. package/lib/catalog/factories/area-factory-3d.js +187 -0
  466. package/lib/catalog/factories/area-factory.js +88 -0
  467. package/lib/catalog/factories/export.js +25 -0
  468. package/lib/catalog/factories/wall-factory-3d.js +212 -0
  469. package/lib/catalog/factories/wall-factory.js +279 -0
  470. package/lib/catalog/holes/door-closet/planner-element.js +232 -0
  471. package/lib/catalog/holes/door-double/door_double.png +0 -0
  472. package/lib/catalog/holes/door-double/planner-element.js +325 -0
  473. package/lib/catalog/holes/door-exterior/planner-element.js +225 -0
  474. package/lib/catalog/holes/door-interior/planner-element.js +237 -0
  475. package/lib/catalog/holes/door-panic/panicDoor.png +0 -0
  476. package/lib/catalog/holes/door-panic/planner-element.js +513 -0
  477. package/lib/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  478. package/lib/catalog/holes/door-panic-double/planner-element.js +473 -0
  479. package/lib/catalog/holes/door-sliding/planner-element.js +235 -0
  480. package/lib/catalog/holes/doorway-framed/planner-element.js +155 -0
  481. package/lib/catalog/holes/doorway-frameless/planner-element.js +114 -0
  482. package/lib/catalog/holes/export.js +97 -0
  483. package/lib/catalog/holes/gate/gate.jpg +0 -0
  484. package/lib/catalog/holes/window-clear/planner-element.js +176 -0
  485. package/lib/catalog/holes/window-clear/texture.png +0 -0
  486. package/lib/catalog/holes/window-cross/planner-element.js +175 -0
  487. package/lib/catalog/holes/window-cross/texture.png +0 -0
  488. package/lib/catalog/holes/window-double-hung/planner-element.js +313 -0
  489. package/lib/catalog/holes/window-double-hung/texture.png +0 -0
  490. package/lib/catalog/holes/window-vertical/planner-element.js +286 -0
  491. package/lib/catalog/holes/window-vertical/texture.png +0 -0
  492. package/lib/catalog/lines/wall/planner-element.js +87 -0
  493. package/lib/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  494. package/lib/catalog/lines/wall/textures/bricks.jpg +0 -0
  495. package/lib/catalog/lines/wall/textures/bricks2.jpg +0 -0
  496. package/lib/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  497. package/lib/catalog/lines/wall/textures/morden.jpg +0 -0
  498. package/lib/catalog/lines/wall/textures/painted.jpg +0 -0
  499. package/lib/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  500. package/lib/catalog/lines/wall/textures/plaster.jpg +0 -0
  501. package/lib/catalog/lines/wall/wall.png +0 -0
  502. package/lib/catalog/molding/molding-dcm/planner-element.js +33 -0
  503. package/lib/catalog/molding/molding-dcm/texture.png +0 -0
  504. package/lib/catalog/molding/molding-fbm/planner-element.js +33 -0
  505. package/lib/catalog/molding/molding-fbm/texture.png +0 -0
  506. package/lib/catalog/molding/molding-lrm/planner-element.js +33 -0
  507. package/lib/catalog/molding/molding-lrm/texture.png +0 -0
  508. package/lib/catalog/utils/exporter.js +173 -0
  509. package/lib/catalog/utils/geom-utils.js +205 -0
  510. package/lib/catalog/utils/item-loader.js +1603 -0
  511. package/lib/catalog/utils/load-obj.js +99 -0
  512. package/lib/catalog/utils/mtl-loader.js +366 -0
  513. package/lib/catalog/utils/obj-loader.js +486 -0
  514. package/lib/catalog/windows.png +0 -0
  515. package/lib/class/area.js +147 -0
  516. package/lib/class/export.js +88 -0
  517. package/lib/class/group.js +438 -0
  518. package/lib/class/guide.js +64 -0
  519. package/lib/class/hole.js +930 -0
  520. package/lib/class/item.js +1990 -0
  521. package/lib/class/layer.js +670 -0
  522. package/lib/class/line.js +1238 -0
  523. package/lib/class/project.js +949 -0
  524. package/lib/class/vertex.js +205 -0
  525. package/lib/components/content.js +148 -0
  526. package/lib/components/export.js +7 -0
  527. package/lib/components/style/export.js +17 -0
  528. package/lib/components/style/form-number-input.js +192 -0
  529. package/lib/components/style/form-submit-button.js +35 -0
  530. package/lib/components/viewer2d/area.js +89 -0
  531. package/lib/components/viewer2d/export.js +121 -0
  532. package/lib/components/viewer2d/grids/grid-horizontal-streak.js +44 -0
  533. package/lib/components/viewer2d/grids/grid-streak.js +44 -0
  534. package/lib/components/viewer2d/grids/grid-vertical-streak.js +44 -0
  535. package/lib/components/viewer2d/grids/grids.js +40 -0
  536. package/lib/components/viewer2d/group.js +63 -0
  537. package/lib/components/viewer2d/item.js +245 -0
  538. package/lib/components/viewer2d/layer.js +172 -0
  539. package/lib/components/viewer2d/line.js +975 -0
  540. package/lib/components/viewer2d/ruler.js +92 -0
  541. package/lib/components/viewer2d/rulerDist.js +110 -0
  542. package/lib/components/viewer2d/rulerX.js +154 -0
  543. package/lib/components/viewer2d/rulerY.js +156 -0
  544. package/lib/components/viewer2d/scene.js +137 -0
  545. package/lib/components/viewer2d/snap.js +84 -0
  546. package/lib/components/viewer2d/state.js +83 -0
  547. package/lib/components/viewer2d/utils.js +207 -0
  548. package/lib/components/viewer2d/vertex.js +76 -0
  549. package/lib/components/viewer2d/viewer2d.js +1472 -0
  550. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +2591 -0
  551. package/lib/components/viewer3d/dcm.js +408 -0
  552. package/lib/components/viewer3d/fbm.js +421 -0
  553. package/lib/components/viewer3d/front3D.js +71 -0
  554. package/lib/components/viewer3d/grid-creator.js +35 -0
  555. package/lib/components/viewer3d/grids/grid-horizontal-streak.js +45 -0
  556. package/lib/components/viewer3d/grids/grid-streak.js +36 -0
  557. package/lib/components/viewer3d/grids/grid-vertical-streak.js +45 -0
  558. package/lib/components/viewer3d/libs/first-person-controls.js +74 -0
  559. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +1287 -0
  560. package/lib/components/viewer3d/libs/mtl-loader.js +366 -0
  561. package/lib/components/viewer3d/libs/obj-loader.js +471 -0
  562. package/lib/components/viewer3d/libs/orbit-controls.js +706 -0
  563. package/lib/components/viewer3d/libs/pointer-lock-controls.js +53 -0
  564. package/lib/components/viewer3d/lrm.js +312 -0
  565. package/lib/components/viewer3d/model.js +714 -0
  566. package/lib/components/viewer3d/pointer-lock-navigation.js +32 -0
  567. package/lib/components/viewer3d/ruler-utils/itemRect.js +69 -0
  568. package/lib/components/viewer3d/ruler-utils/layer3D.js +503 -0
  569. package/lib/components/viewer3d/ruler-utils/ruler3D.js +232 -0
  570. package/lib/components/viewer3d/ruler-utils/scene3D.js +67 -0
  571. package/lib/components/viewer3d/ruler-utils/state3D.js +26 -0
  572. package/lib/components/viewer3d/scene-creator.js +3886 -0
  573. package/lib/components/viewer3d/three-memory-cleaner.js +46 -0
  574. package/lib/components/viewer3d/viewer3d-first-person.js +316 -0
  575. package/lib/components/viewer3d/viewer3d.js +2676 -0
  576. package/lib/constants/catalog/skinPanel.js +15 -0
  577. package/lib/constants.js +791 -0
  578. package/lib/devLiteRenderer.js +903 -0
  579. package/lib/events/external/handleExternalEvent.js +147 -0
  580. package/lib/events/external/handleExternalEvent.util.js +1127 -0
  581. package/lib/events/external/handlers.addItem.js +54 -0
  582. package/lib/events/external/handlers.changeDoorStyle.js +142 -0
  583. package/lib/events/external/handlers.elementOps.js +15 -0
  584. package/lib/events/external/handlers.finishing.js +32 -0
  585. package/lib/events/external/handlers.hole.js +10 -0
  586. package/lib/events/external/handlers.loadProject.js +131 -0
  587. package/lib/events/external/handlers.molding.js +31 -0
  588. package/lib/events/external/handlers.projectLifecycle.js +19 -0
  589. package/lib/events/external/handlers.projectSettings.js +38 -0
  590. package/lib/events/external/handlers.replaceCabinet.js +48 -0
  591. package/lib/events/external/handlers.roomShape.js +14 -0
  592. package/lib/events/external/handlers.syncScene.js +27 -0
  593. package/lib/events/external/handlers.updateSelectedElements.js +17 -0
  594. package/lib/events/external/handlers.viewMode.js +19 -0
  595. package/lib/events/external/handlers.viewerNavigation.js +117 -0
  596. package/lib/events/external/handlers.wall.js +13 -0
  597. package/lib/index.js +637 -0
  598. package/lib/mappings/external-events/mapExternalEventPayload.js +33 -0
  599. package/lib/mappings/external-events/mappers/addItemMapper.js +101 -0
  600. package/lib/mappings/external-events/mappers/ccdfMapper.js +102 -0
  601. package/lib/mappings/external-events/mappers/ccdfToCDSMapper.js +58 -0
  602. package/lib/mappings/external-events/mappers/changeDoorStyleMapper.js +44 -0
  603. package/lib/mappings/external-events/mappers/loadProjectMapper.js +70 -0
  604. package/lib/mappings/holesToCatalog.js +148 -0
  605. package/lib/models.js +534 -0
  606. package/lib/plugins/SVGLoader.js +1419 -0
  607. package/lib/plugins/console-debugger.js +42 -0
  608. package/lib/plugins/export.js +25 -0
  609. package/lib/plugins/keyboard.js +117 -0
  610. package/lib/reducers/areas-reducer.js +19 -0
  611. package/lib/reducers/export.js +89 -0
  612. package/lib/reducers/groups-reducer.js +45 -0
  613. package/lib/reducers/holes-reducer.js +69 -0
  614. package/lib/reducers/items-reducer.js +152 -0
  615. package/lib/reducers/lines-reducer.js +52 -0
  616. package/lib/reducers/project-reducer.js +143 -0
  617. package/lib/reducers/reducer.js +25 -0
  618. package/lib/reducers/scene-reducer.js +35 -0
  619. package/lib/reducers/vertices-reducer.js +26 -0
  620. package/lib/reducers/viewer2d-reducer.js +84 -0
  621. package/lib/reducers/viewer3d-reducer.js +65 -0
  622. package/lib/shared/domain/cabinet-identity.js +12 -0
  623. package/lib/shared/objects/immutable.js +9 -0
  624. package/lib/shared-style.js +72 -0
  625. package/lib/translator/en.js +111 -0
  626. package/lib/translator/it.js +86 -0
  627. package/lib/translator/ru.js +86 -0
  628. package/lib/translator/translator.js +87 -0
  629. package/lib/utils/browser.js +40 -0
  630. package/lib/utils/convert-units-lite.js +44 -0
  631. package/lib/utils/email-validator.js +10 -0
  632. package/lib/utils/export.js +56 -0
  633. package/lib/utils/geometry.js +3233 -0
  634. package/lib/utils/get-edges-of-subgraphs.js +33 -0
  635. package/lib/utils/graph-cycles.js +239 -0
  636. package/lib/utils/graph-inner-cycles.js +54 -0
  637. package/lib/utils/graph.js +153 -0
  638. package/lib/utils/helper.js +490 -0
  639. package/lib/utils/history.js +48 -0
  640. package/lib/utils/id-broker.js +22 -0
  641. package/lib/utils/logger.js +14 -0
  642. package/lib/utils/math.js +57 -0
  643. package/lib/utils/molding.js +1146 -0
  644. package/lib/utils/name-generator.js +21 -0
  645. package/lib/utils/objects-utils.js +62 -0
  646. package/lib/utils/phone-validator.js +10 -0
  647. package/lib/utils/process-black-list.js +22 -0
  648. package/lib/utils/react-if.js +25 -0
  649. package/lib/utils/ruler.js +63 -0
  650. package/lib/utils/skinPanelEngine.js +534 -0
  651. package/lib/utils/snap-scene.js +101 -0
  652. package/lib/utils/snap.js +245 -0
  653. package/lib/utils/summarizeCart.js +30 -0
  654. package/lib/utils/threeCSG.es6.js +504 -0
  655. package/lib/version.js +7 -0
  656. package/package.json +29 -24
  657. package/es/WorkSpace.js +0 -30
  658. package/es/WorkSpaceHostMimic.js +0 -132
  659. package/es/assets/gltf/door_closet.bin +0 -0
  660. package/es/assets/gltf/door_closet.fbx +0 -0
  661. package/es/assets/gltf/door_exterior.bin +0 -0
  662. package/es/assets/gltf/door_exterior.fbx +0 -0
  663. package/es/assets/gltf/door_interior.bin +0 -0
  664. package/es/assets/gltf/door_interior.fbx +0 -0
  665. package/es/assets/gltf/door_sliding.bin +0 -0
  666. package/es/assets/gltf/door_sliding.fbx +0 -0
  667. package/es/assets/img/png/helper/video_preview_3d.png +0 -0
  668. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  669. package/es/assets/img/svg/color/Brown.svg +0 -9
  670. package/es/assets/img/svg/color/Dark.svg +0 -9
  671. package/es/assets/img/svg/color/Light.svg +0 -9
  672. package/es/assets/img/svg/color/Medium.svg +0 -9
  673. package/es/assets/img/svg/color/Unfinished.svg +0 -9
  674. package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
  675. package/es/catalog/properties/export.js +0 -21
  676. package/es/catalog/properties/property-checkbox.js +0 -68
  677. package/es/catalog/properties/property-color.js +0 -39
  678. package/es/catalog/properties/property-enum.js +0 -50
  679. package/es/catalog/properties/property-hidden.js +0 -19
  680. package/es/catalog/properties/property-lenght-measure.js +0 -96
  681. package/es/catalog/properties/property-length-measure.js +0 -80
  682. package/es/catalog/properties/property-length-measure_hole.js +0 -96
  683. package/es/catalog/properties/property-number.js +0 -48
  684. package/es/catalog/properties/property-read-only.js +0 -26
  685. package/es/catalog/properties/property-string.js +0 -48
  686. package/es/catalog/properties/property-toggle.js +0 -39
  687. package/es/catalog/properties/shared-property-style.js +0 -14
  688. package/es/catalog/utils/FuseUtils.js +0 -79
  689. package/es/class/FuseUtils.js +0 -79
  690. package/es/components/style/button.js +0 -106
  691. package/es/components/style/cancel-button.js +0 -21
  692. package/es/components/style/content-container.js +0 -30
  693. package/es/components/style/content-title.js +0 -25
  694. package/es/components/style/delete-button.js +0 -24
  695. package/es/components/style/form-block.js +0 -20
  696. package/es/components/style/form-color-input.js +0 -26
  697. package/es/components/style/form-label.js +0 -22
  698. package/es/components/style/form-number-input_2.js +0 -238
  699. package/es/components/style/form-select.js +0 -19
  700. package/es/components/style/form-slider.js +0 -60
  701. package/es/components/style/form-text-input.js +0 -69
  702. package/es/index.html.ejs +0 -264
  703. package/es/reducers/user-reducer.js +0 -41
  704. /package/{es/catalog/lines/wall/textures/bricks-normal2.jpg → lib/catalog/lines/wall/textures/painted-normal.jpg} +0 -0
package/es/AppContext.js CHANGED
@@ -1,6 +1,3 @@
1
1
  import React from 'react';
2
- var AppContext = /*#__PURE__*/React.createContext({
3
- translator: null,
4
- catalog: null
5
- });
2
+ var AppContext = /*#__PURE__*/React.createContext({});
6
3
  export default AppContext;
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
5
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
5
6
  import _createClass from "@babel/runtime/helpers/esm/createClass";
6
7
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
@@ -15,20 +16,20 @@ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstruct
15
16
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
16
17
  // LiteKitchenConfigurator.jsx
17
18
  import styled from 'styled-components';
19
+ import { convert } from "./utils/convert-units-lite";
18
20
  import PropTypes from 'prop-types';
19
21
  import React, { Component } from 'react';
20
22
  import { connect } from 'react-redux';
21
23
  import { bindActionCreators } from 'redux';
22
24
  import * as constants from "./constants";
23
25
  import { base64Decode } from "./utils/helper";
24
- import actions, { projectActions } from "./actions/export";
26
+ import actions from "./actions/export";
25
27
  import Catalog from "./catalog/catalog";
26
28
  import { Content } from "./components/export";
27
29
  import Translator from "./translator/translator";
28
30
  import { objectsMap } from "./utils/objects-utils";
29
31
  import { VERSION } from "./version";
30
- import { handleExternalEvent } from "./utils/isolate-event-handler";
31
- import AppContext from "./AppContext";
32
+ import { handleExternalEvent } from "./events/external/handleExternalEvent";
32
33
  var toolbarW = 0;
33
34
  var wrapperStyle = {
34
35
  display: 'flex',
@@ -40,9 +41,23 @@ var SubCategoryItemImage = styled.img(_templateObject2 || (_templateObject2 = _t
40
41
  });
41
42
  var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
42
43
  function LiteKitchenConfigurator(props) {
44
+ var _utmRequestData2, _utmRequestData3, _utmRequestData4, _utmRequestData5, _utmRequestData6, _utmRequestData7, _utmRequestData8, _utmRequestData9, _utmRequestData0;
43
45
  var _this;
44
46
  _classCallCheck(this, LiteKitchenConfigurator);
45
47
  _this = _callSuper(this, LiteKitchenConfigurator, [props]);
48
+ var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
49
+ var utmStrEncoded = utmDetailParams.get('details');
50
+ var utmRequestData = null;
51
+ if (utmStrEncoded) {
52
+ try {
53
+ var _utmRequestData;
54
+ utmRequestData = JSON.parse(base64Decode(utmStrEncoded));
55
+ utmRequestData = JSON.parse((_utmRequestData = utmRequestData) === null || _utmRequestData === void 0 ? void 0 : _utmRequestData.utm);
56
+ } catch (e) {
57
+ console.error('Cannot parse utm parameter: ', e);
58
+ utmRequestData = null;
59
+ }
60
+ }
46
61
  _this.state = {
47
62
  savePopupVisible: false,
48
63
  quotePopupVisible: false,
@@ -75,6 +90,17 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
75
90
  isSaved: false,
76
91
  isLeaving: false
77
92
  };
93
+ _this.utm = {
94
+ utm_source: ((_utmRequestData2 = utmRequestData) === null || _utmRequestData2 === void 0 ? void 0 : _utmRequestData2.source) || 'source',
95
+ utm_medium: ((_utmRequestData3 = utmRequestData) === null || _utmRequestData3 === void 0 ? void 0 : _utmRequestData3.medium) || 'medium',
96
+ utm_campaign: ((_utmRequestData4 = utmRequestData) === null || _utmRequestData4 === void 0 ? void 0 : _utmRequestData4.campaign) || 'campaign',
97
+ utm_term: ((_utmRequestData5 = utmRequestData) === null || _utmRequestData5 === void 0 ? void 0 : _utmRequestData5.term) || 'term',
98
+ utm_content: ((_utmRequestData6 = utmRequestData) === null || _utmRequestData6 === void 0 ? void 0 : _utmRequestData6.content) || 'content',
99
+ gclid: ((_utmRequestData7 = utmRequestData) === null || _utmRequestData7 === void 0 ? void 0 : _utmRequestData7.gclid) || 'gclid',
100
+ msclkid: ((_utmRequestData8 = utmRequestData) === null || _utmRequestData8 === void 0 ? void 0 : _utmRequestData8.msclkid) || 'msclkid',
101
+ fbclid: ((_utmRequestData9 = utmRequestData) === null || _utmRequestData9 === void 0 ? void 0 : _utmRequestData9.fbclid) || 'fbclid',
102
+ ttclid: ((_utmRequestData0 = utmRequestData) === null || _utmRequestData0 === void 0 ? void 0 : _utmRequestData0.ttclid) || 'ttclid'
103
+ };
78
104
  _this.openFloor = _this.openFloor.bind(_this);
79
105
  _this.openCabinet = _this.openCabinet.bind(_this);
80
106
  _this.openFinishing = _this.openFinishing.bind(_this);
@@ -288,22 +314,36 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
288
314
  var el = document.getElementById('add_appliances_inactive');
289
315
  if (el !== null && el !== void 0 && (_el$parentElement0 = el.parentElement) !== null && _el$parentElement0 !== void 0 && _el$parentElement0.parentElement) el.parentElement.parentElement.style.zIndex = 6;
290
316
  }
317
+ }, {
318
+ key: "getChildContext",
319
+ value: function getChildContext() {
320
+ var _this2 = this;
321
+ return _objectSpread(_objectSpread({}, objectsMap(actions, function (actionNamespace) {
322
+ return _this2.props[actionNamespace];
323
+ })), {}, {
324
+ translator: this.props.translator,
325
+ catalog: this.props.catalog
326
+ });
327
+ }
291
328
  }, {
292
329
  key: "componentDidMount",
293
330
  value: function componentDidMount() {
294
- var _extractedState$getIn;
295
331
  window.forRedo = [];
332
+ var store = this.context.store;
296
333
  var _this$props = this.props,
297
- catalog = _this$props.catalog,
298
- extractedState = _this$props.extractedState,
299
- projectActions = _this$props.projectActions;
300
- var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn = extractedState.getIn) === null || _extractedState$getIn === void 0 ? void 0 : _extractedState$getIn.call(extractedState, ['catalog', 'ready']);
301
- if (!catalogReady) projectActions.initCatalog(catalog);
334
+ stateExtractor = _this$props.stateExtractor,
335
+ plugins = _this$props.plugins;
336
+
337
+ // keep old behavior: run plugins once on mount
338
+ var newplugins = _toConsumableArray(plugins);
339
+ newplugins.forEach(function (newplugin) {
340
+ return newplugin(store, stateExtractor);
341
+ });
302
342
  }
303
343
  }, {
304
344
  key: "componentDidUpdate",
305
345
  value: function componentDidUpdate(prevProps) {
306
- var _extractedState$getIn2;
346
+ var _extractedState$getIn;
307
347
  var _this$props2 = this.props,
308
348
  externalEvent = _this$props2.externalEvent,
309
349
  extractedState = _this$props2.extractedState,
@@ -314,7 +354,9 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
314
354
  if (prevProps.externalEvent !== externalEvent) {
315
355
  handleExternalEvent(this.props);
316
356
  }
317
- var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn2 = extractedState.getIn) === null || _extractedState$getIn2 === void 0 ? void 0 : _extractedState$getIn2.call(extractedState, ['catalog', 'ready']);
357
+
358
+ // same behavior: init catalog until ready
359
+ var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn = extractedState.getIn) === null || _extractedState$getIn === void 0 ? void 0 : _extractedState$getIn.call(extractedState, ['catalog', 'ready']);
318
360
  if (!catalogReady) projectActions.initCatalog(catalog);
319
361
  }
320
362
  }, {
@@ -365,7 +407,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
365
407
  }, {
366
408
  key: "render",
367
409
  value: function render() {
368
- var _this2 = this;
369
410
  var _this$props3 = this.props,
370
411
  width = _this$props3.width,
371
412
  height = _this$props3.height,
@@ -380,15 +421,9 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
380
421
  var contentW = width - toolbarW;
381
422
  var contentH = height;
382
423
  var extracted = this.getExtractedStateWithViewer2DInit(extractedState, width, height);
383
- var ctxValue = _objectSpread(_objectSpread({}, objectsMap(actions, function (actionNamespace) {
384
- return _this2.props[actionNamespace];
385
- })), {}, {
386
- translator: this.props.translator,
387
- catalog: this.props.catalog
388
- });
389
- return /*#__PURE__*/React.createElement(AppContext.Provider, {
390
- value: ctxValue
391
- }, /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
424
+ var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extracted.scene);
425
+ var allVisible = firstVisit || signOpen || myProjectsOpen;
426
+ return /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
392
427
  style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
393
428
  height: height,
394
429
  display: 'flex',
@@ -422,7 +457,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
422
457
  height: 30,
423
458
  width: 30
424
459
  }
425
- }), "This item is not available in the current door style. Replace it with another one."))));
460
+ }), "This item is not available in the current door style. Replace it with another one.")));
426
461
  }
427
462
  }]);
428
463
  }(Component);
@@ -442,6 +477,15 @@ LiteKitchenConfigurator.propTypes = {
442
477
  // ✅ injected by connect
443
478
  externalEvent: PropTypes.object
444
479
  };
480
+ LiteKitchenConfigurator.contextTypes = {
481
+ store: PropTypes.object.isRequired
482
+ };
483
+ LiteKitchenConfigurator.childContextTypes = _objectSpread(_objectSpread({}, objectsMap(actions, function () {
484
+ return PropTypes.object;
485
+ })), {}, {
486
+ translator: PropTypes.object,
487
+ catalog: PropTypes.object
488
+ });
445
489
  LiteKitchenConfigurator.defaultProps = {
446
490
  translator: new Translator(),
447
491
  catalog: new Catalog(),
@@ -1,19 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
5
- import _createClass from "@babel/runtime/helpers/esm/createClass";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
8
- import _inherits from "@babel/runtime/helpers/esm/inherits";
9
- var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError", "onViewer2DChange"];
4
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError", "holes"];
10
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
7
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13
8
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
14
9
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
15
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
16
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
17
10
  // LiteRenderer.jsx
18
11
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
19
12
  import PropTypes from 'prop-types';
@@ -29,10 +22,9 @@ import AppContext from "./AppContext";
29
22
  import Catalog from "./catalog/catalog";
30
23
  import * as Areas from "./catalog/areas/area/planner-element";
31
24
  import * as Lines from "./catalog/lines/wall/planner-element";
32
- import * as Holes from "./catalog/holes/export";
25
+ import { buildHoleElements, registerDynamicHoles } from "./mappings/holesToCatalog";
33
26
  import { ConsoleDebugger, Keyboard } from "./plugins/export";
34
27
  import LiteKitchenConfigurator from "./LiteKitchenConfigurator";
35
- import { toPlainObject } from "../es/utils/helper";
36
28
  var isBrowser = typeof window !== 'undefined';
37
29
  if (isBrowser) window.THREE = THREE;
38
30
 
@@ -81,50 +73,15 @@ function serializeError(err) {
81
73
  }
82
74
  }
83
75
 
84
- /* ---------- Error Boundary that pushes into buffer ---------- */
85
- var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
86
- function ToolErrorBoundary() {
87
- _classCallCheck(this, ToolErrorBoundary);
88
- return _callSuper(this, ToolErrorBoundary, arguments);
89
- }
90
- _inherits(ToolErrorBoundary, _React$Component);
91
- return _createClass(ToolErrorBoundary, [{
92
- key: "componentDidCatch",
93
- value: function componentDidCatch(error, info) {
94
- var pushError = this.props.pushError;
95
- pushError({
96
- type: 'render-error',
97
- error: serializeError(error),
98
- info: {
99
- componentStack: info === null || info === void 0 ? void 0 : info.componentStack
100
- }
101
- });
102
- }
103
- }, {
104
- key: "render",
105
- value: function render() {
106
- return this.props.children;
107
- }
108
- }]);
109
- }(React.Component);
110
- ToolErrorBoundary.propTypes = {
111
- pushError: PropTypes.func.isRequired,
112
- children: PropTypes.any
113
- };
114
-
115
76
  // ----------------- catalog init -----------------
116
77
  function initCatalogOnce(catalog) {
117
78
  if (!catalog) return;
118
- if (catalog.__ksInitialized) return;
119
- for (var x in Areas) catalog.registerElement(Areas[x]);
120
- for (var _x in Lines) catalog.registerElement(Lines[_x]);
121
- for (var _x2 in Holes) catalog.registerElement(Holes[_x2]);
122
- catalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
123
- catalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
124
- catalog.__ksInitialized = true;
79
+ if (!catalog.__ksInitialized) {
80
+ for (var x in Areas) catalog.registerElement(Areas[x]);
81
+ for (var _x in Lines) catalog.registerElement(Lines[_x]);
82
+ catalog.__ksInitialized = true;
83
+ }
125
84
  }
126
-
127
- // ----------------- store factory -----------------
128
85
  function createInstanceStore() {
129
86
  var AppState = Map({
130
87
  KitchenConfigurator: new State()
@@ -157,10 +114,6 @@ function createInstanceStore() {
157
114
  function createPlugins() {
158
115
  return [Keyboard(), ConsoleDebugger()];
159
116
  }
160
- function shallowEqualViewer(a, b) {
161
- if (!a || !b) return a === b;
162
- return a.a === b.a && a.d === b.d && a.e === b.e && a.f === b.f && a.viewerWidth === b.viewerWidth && a.viewerHeight === b.viewerHeight && a.SVGWidth === b.SVGWidth && a.SVGHeight === b.SVGHeight;
163
- }
164
117
  export default function LiteRenderer(props) {
165
118
  ensureSentryInit();
166
119
  var width = props.width,
@@ -169,57 +122,23 @@ export default function LiteRenderer(props) {
169
122
  externalEvent = props.externalEvent,
170
123
  onInternalEvent = props.onInternalEvent,
171
124
  onError = props.onError,
172
- onViewer2DChange = props.onViewer2DChange,
125
+ holes = props.holes,
173
126
  passThrough = _objectWithoutProperties(props, _excluded);
174
- useEffect(function () {
175
- return function () {
176
- if (flushTimerRef.current) {
177
- clearTimeout(flushTimerRef.current);
178
- flushTimerRef.current = null;
179
- }
180
- };
181
- }, []);
127
+ var holePayload = useMemo(function () {
128
+ return buildHoleElements(holes);
129
+ }, [holes]);
182
130
 
183
131
  // ✅ instance-scoped store (no module singleton)
184
132
  var storeRef = useRef(null);
185
133
  if (!storeRef.current) storeRef.current = createInstanceStore();
186
- var prevRef = useRef(null);
187
- useEffect(function () {
188
- var _state$viewer2D2, _state$get2;
189
- if (!onViewer2DChange) return;
190
- if (!storeRef.current) return;
191
-
192
- // you must have `store` in scope here (however LiteRenderer gets it)
193
- var unsub = storeRef.current.subscribe(function () {
194
- var _state$viewer2D, _state$get;
195
- var state = storeRef.current.getState();
196
-
197
- // viewer2D might be immutable or plain
198
- var viewer2D = toPlainObject((_state$viewer2D = state.viewer2D) !== null && _state$viewer2D !== void 0 ? _state$viewer2D : (_state$get = state.get) === null || _state$get === void 0 ? void 0 : _state$get.call(state, 'viewer2D'));
199
-
200
- // emit only when changed
201
- if (!shallowEqualViewer(prevRef.current, viewer2D)) {
202
- prevRef.current = viewer2D;
203
- onViewer2DChange(viewer2D);
204
- }
205
- });
206
-
207
- // emit once immediately
208
- var state = storeRef.current.getState();
209
- var viewer2D = toPlainObject((_state$viewer2D2 = state.viewer2D) !== null && _state$viewer2D2 !== void 0 ? _state$viewer2D2 : (_state$get2 = state.get) === null || _state$get2 === void 0 ? void 0 : _state$get2.call(state, 'viewer2D'));
210
- prevRef.current = viewer2D;
211
- onViewer2DChange(viewer2D);
212
- return function () {
213
- return unsub();
214
- };
215
- }, [onViewer2DChange]);
216
134
 
217
135
  // ✅ instance-scoped catalog (no module singleton)
218
136
  var catalogRef = useRef(null);
219
137
  if (!catalogRef.current) {
220
138
  catalogRef.current = new Catalog();
221
- initCatalogOnce(catalogRef.current);
222
139
  }
140
+ initCatalogOnce(catalogRef.current);
141
+ registerDynamicHoles(catalogRef.current, holePayload);
223
142
 
224
143
  // ✅ stable plugins array
225
144
  var plugins = useMemo(function () {
@@ -355,13 +274,8 @@ export default function LiteRenderer(props) {
355
274
  var _ref = configData || {},
356
275
  logoImg = _ref.logoImg,
357
276
  companyUrl = _ref.companyUrl;
358
- if (!catalogRef.current) {
359
- return null;
360
- }
361
- return /*#__PURE__*/React.createElement(Provider, {
277
+ return /*#__PURE__*/React.createElement(AppContext.Provider, null, /*#__PURE__*/React.createElement(Provider, {
362
278
  store: storeRef.current
363
- }, /*#__PURE__*/React.createElement(ToolErrorBoundary, {
364
- pushError: pushError
365
279
  }, /*#__PURE__*/React.createElement(LiteKitchenConfigurator, _extends({
366
280
  catalog: catalogRef.current,
367
281
  width: width,
@@ -395,5 +309,6 @@ LiteRenderer.propTypes = {
395
309
  externalEvent: PropTypes.object,
396
310
  onInternalEvent: PropTypes.func,
397
311
  onError: PropTypes.func,
312
+ holes: PropTypes.array,
398
313
  store: PropTypes.object
399
314
  };
@@ -8,16 +8,29 @@ import * as verticesActions from "./vertices-actions";
8
8
  import * as itemsActions from "./items-actions";
9
9
  import * as areaActions from "./area-actions";
10
10
  import * as groupsActions from "./groups-actions";
11
- export { projectActions, viewer2DActions, viewer3DActions, linesActions, holesActions, sceneActions, verticesActions, itemsActions, areaActions, groupsActions };
11
+
12
+ export {
13
+ projectActions,
14
+ viewer2DActions,
15
+ viewer3DActions,
16
+ linesActions,
17
+ holesActions,
18
+ sceneActions,
19
+ verticesActions,
20
+ itemsActions,
21
+ areaActions,
22
+ groupsActions
23
+ };
24
+
12
25
  export default {
13
- projectActions: projectActions,
14
- viewer2DActions: viewer2DActions,
15
- viewer3DActions: viewer3DActions,
16
- linesActions: linesActions,
17
- holesActions: holesActions,
18
- sceneActions: sceneActions,
19
- verticesActions: verticesActions,
20
- itemsActions: itemsActions,
21
- areaActions: areaActions,
22
- groupsActions: groupsActions
23
- };
26
+ projectActions,
27
+ viewer2DActions,
28
+ viewer3DActions,
29
+ linesActions,
30
+ holesActions,
31
+ sceneActions,
32
+ verticesActions,
33
+ itemsActions,
34
+ areaActions,
35
+ groupsActions
36
+ };
@@ -1,4 +1,5 @@
1
1
  import { TOGGLE_LOADING_CABINET, SELECT_ITEM, SELECT_TOOL_DRAWING_ITEM, UPDATE_DRAWING_ITEM, END_DRAWING_ITEM, BEGIN_DRAGGING_ITEM, BEGIN_DRAGGING_ITEM_3D, UPDATE_DRAGGING_ITEM, UPDATE_DRAGGING_ITEM_3DX, UPDATE_DRAGGING_ITEM_3DY, END_DRAGGING_ITEM, END_DRAGGING_ITEM_3D, UPDATE_DRAGGING_ITEM_CHANGED, UPDATE_ROTATING_ITEM_CHANGED, BEGIN_ROTATING_ITEM, BEGIN_ROTATING_ITEM_3D, UPDATE_ROTATING_ITEM, UPDATE_ROTATING, END_ROTATING_ITEM, END_ROTATING_ITEM_3D, REPLACE_SUBMODULE, ANIMATE_OBJECT, REMOVE_REPLACE_SUBMODULE, ITEM_MOVE_UP, SELECT_TOOL_DRAWING_ITEM_3D, SET_DOOR_STYLE, SET_HANDLE_MATERIAL, SET_INITIAL_DOOR_STYLE, SET_DISTANT, SET_DOOR_HANDLE, SET_WALL_COLOR, END_CREATING_CABINET, UPDATE_POPUP_OPEN, SET_MODELLING, SET_COUNTER_TOP, SET_BACKSPLASH, SET_BACKSPLASH_VISIBLE, SET_APPLIANCE_MATERIAL, DUPLICATE_SELECTED, EDIT_WIDTH, END_LOADING, STORE_DIST_ARRAY, SET_MOLDING, UPDATE_MOLDING, VALIDATE_ITEM_POSTIONS, REPLACE_ITEM, SET_MOVE_STATUS, SET_ROTATE_STATUS } from "../constants";
2
+ import { SET_ITEMS_CCDF } from "../constants";
2
3
  export function storeDistArray(layerID, itemID, distArray) {
3
4
  return {
4
5
  type: STORE_DIST_ARRAY,
@@ -227,12 +228,13 @@ export function updateItemsAltitude(layerID, itemID, value) {
227
228
  value: value
228
229
  };
229
230
  }
230
- export function setDoorStyle(doorStyle, itemCDS, isAll) {
231
+ export function setDoorStyle(doorStyle, itemCDS, applyScope, itemIds) {
231
232
  return {
232
233
  type: SET_DOOR_STYLE,
233
234
  doorStyle: doorStyle,
234
235
  itemCDS: itemCDS,
235
- isAll: isAll
236
+ applyScope: applyScope,
237
+ itemIds: itemIds
236
238
  };
237
239
  }
238
240
  export function setCounterTop(counterTop) {
@@ -313,4 +315,18 @@ export function setRotateStatus(status) {
313
315
  type: SET_ROTATE_STATUS,
314
316
  status: status
315
317
  };
318
+ }
319
+
320
+ // Persist selected ccdf onto placed scene items (instances) so SYNC can return it.
321
+ // ccdf_list entries are matched by `door_finish_id` (== doorStyle.id).
322
+ export function setItemsCCDF(ccdf_list, applyScope) {
323
+ var itemIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
324
+ var doorFinishId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
325
+ return {
326
+ type: SET_ITEMS_CCDF,
327
+ ccdf_list: ccdf_list,
328
+ applyScope: applyScope,
329
+ itemIds: itemIds,
330
+ doorFinishId: doorFinishId
331
+ };
316
332
  }
@@ -0,0 +1,188 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import ReactGA from 'react-ga4';
5
+
6
+ // ---------- Helpers ----------
7
+ function nowMs() {
8
+ return Date.now();
9
+ }
10
+ function getClientName() {
11
+ return sessionStorage.getItem('visualizerName');
12
+ }
13
+ function isDesktopUA() {
14
+ // Lightweight heuristic; GA4 also provides device.category. This flag can help ad-hoc filtering.
15
+ var ua = navigator.userAgent.toLowerCase();
16
+ var isMobile = /mobi|android|iphone|ipad|ipod|windows phone/.test(ua);
17
+ return !isMobile;
18
+ }
19
+
20
+ // ---------- Keys for storage ----------
21
+ var SSN_KEYS = {
22
+ sessionStartMs: 'ga4_session_start_ms',
23
+ introChoiceMs: 'ga4_intro_choice_ms',
24
+ firstCabinetPlaced: 'ga4_first_cabinet_placed',
25
+ contextBooted: 'ga4_context_booted',
26
+ enteredCanvasSent: 'ga4_entered_canvas_sent'
27
+ };
28
+
29
+ // ---------- Core GA wrapper ----------
30
+ export var GA = {
31
+ init: function init(_ref) {
32
+ var measurementId = _ref.measurementId;
33
+ ReactGA.initialize([{
34
+ trackingId: measurementId
35
+ }], {
36
+ testMode: false
37
+ });
38
+ },
39
+ resetSessionKeys: function resetSessionKeys() {
40
+ Object.values(SSN_KEYS).forEach(function (key) {
41
+ sessionStorage.removeItem(key);
42
+ });
43
+ },
44
+ /**
45
+ * Must be called ONCE per page load, *before* other events.
46
+ * Sets user properties (project_entry, cross_auth) and sends an initial page_view with client_name.
47
+ */
48
+ bootSessionContext: function bootSessionContext(_ref2) {
49
+ var projectEntry = _ref2.projectEntry,
50
+ crossAuth = _ref2.crossAuth;
51
+ try {
52
+ var resolvedClient = getClientName();
53
+
54
+ // Persist session start for timing metrics (if not already set for this tab)
55
+ if (!sessionStorage.getItem(SSN_KEYS.sessionStartMs)) {
56
+ sessionStorage.setItem(SSN_KEYS.sessionStartMs, String(nowMs()));
57
+ }
58
+
59
+ // Mark context as booted to avoid duplicate property sets on hot reloads
60
+ if (!sessionStorage.getItem(SSN_KEYS.contextBooted)) {
61
+ sessionStorage.setItem(SSN_KEYS.contextBooted, '1');
62
+
63
+ // Set GA4 user_properties (user-scoped dimensions)
64
+ ReactGA.gtag('set', 'user_properties', {
65
+ project_entry: projectEntry,
66
+ // user scope dimension
67
+ cross_auth: crossAuth // user scope dimension (boolean serialized)
68
+ });
69
+ }
70
+
71
+ // Send first page_view hit enriched with event-scoped client_name
72
+ ReactGA.send({
73
+ hitType: 'pageview',
74
+ page: window.location.pathname + window.location.search,
75
+ // @ts-expect-error react-ga4 passes along additional params into gtag
76
+ client_name: resolvedClient
77
+ });
78
+ } catch (e) {
79
+ // eslint-disable-next-line no-console
80
+ console.warn('GA.bootSessionContext error', e);
81
+ }
82
+ },
83
+ // Utility to derive cross_auth from URL (token or details query params)
84
+ deriveCrossAuthFromUrl: function deriveCrossAuthFromUrl(search) {
85
+ var sp = new URLSearchParams(search);
86
+ return sp.has('token') || sp.has('details');
87
+ },
88
+ // Utility to derive project entry (best-effort). You can also pass explicitly from router logic.
89
+ deriveProjectEntry: function deriveProjectEntry() {
90
+ var projectId = sessionStorage.getItem('projectId');
91
+
92
+ // If a project id exists, consider it "open_existing"; otherwise fallback to "new"
93
+ if (projectId) return 'open_existing';
94
+ return 'new';
95
+ },
96
+ // ---------- Event API ----------
97
+ events: {
98
+ /**
99
+ * intro_choice(option) — records the user's entry choice.
100
+ * Also stores a timestamp for later time_to_canvas calculation.
101
+ */
102
+ introChoice: function introChoice(option, extra) {
103
+ var client_name = getClientName();
104
+ sessionStorage.setItem(SSN_KEYS.introChoiceMs, String(nowMs()));
105
+ ReactGA.event('intro_choice', _objectSpread({
106
+ client_name: client_name,
107
+ option: option
108
+ }, extra || {}));
109
+ },
110
+ /**
111
+ * entered_canvas(time_to_canvas) — compute (now - intro_choice)
112
+ */
113
+ enteredCanvas: function enteredCanvas() {
114
+ // fire only once per tab/session
115
+ if (sessionStorage.getItem(SSN_KEYS.enteredCanvasSent)) return;
116
+ var client_name = getClientName();
117
+ var introMs = Number(sessionStorage.getItem(SSN_KEYS.introChoiceMs) || 0);
118
+ var timeSec = introMs ? Math.max(0, Math.round((Date.now() - introMs) / 1000)) : undefined;
119
+ ReactGA.event('entered_canvas', _objectSpread({
120
+ client_name: client_name
121
+ }, typeof timeSec === 'number' ? {
122
+ time_to_canvas: timeSec
123
+ } : {}));
124
+ sessionStorage.setItem(SSN_KEYS.enteredCanvasSent, '1'); // 👈 lock it
125
+ },
126
+ /**
127
+ * cabinet_placed(time_to_first_cabinet) — send only for the *first* cabinet of the session.
128
+ */
129
+ cabinetPlaced: function cabinetPlaced() {
130
+ var already = sessionStorage.getItem(SSN_KEYS.firstCabinetPlaced);
131
+ var client_name = getClientName();
132
+ var params = {
133
+ client_name: client_name
134
+ };
135
+ if (!already) {
136
+ var startMs = Number(sessionStorage.getItem(SSN_KEYS.sessionStartMs) || 0);
137
+ var timeSec = startMs ? Math.max(0, Math.round((nowMs() - startMs) / 1000)) : undefined;
138
+ if (typeof timeSec === 'number') params.time_to_first_cabinet = timeSec; // custom metric (seconds)
139
+ sessionStorage.setItem(SSN_KEYS.firstCabinetPlaced, '1');
140
+ }
141
+ ReactGA.event('cabinet_placed', params);
142
+ },
143
+ /**
144
+ * door_changed(door_id)
145
+ */
146
+ doorChanged: function doorChanged(door_id) {
147
+ var client_name = getClientName();
148
+ ReactGA.event('door_changed', {
149
+ client_name: client_name,
150
+ door_id: door_id
151
+ });
152
+ },
153
+ /**
154
+ * project_saved(project_id, save_method) — mark as conversion in GA UI.
155
+ */
156
+ projectSaved: function projectSaved(project_id, save_method) {
157
+ var client_name = getClientName();
158
+ ReactGA.event('project_saved', {
159
+ client_name: client_name,
160
+ project_id: project_id,
161
+ save_method: save_method
162
+ });
163
+ },
164
+ /**
165
+ * assistance_requested(method, project_id) — mark as conversion in GA UI.
166
+ */
167
+ assistanceRequested: function assistanceRequested(method, project_id) {
168
+ var client_name = getClientName();
169
+ ReactGA.event('assistance_requested', {
170
+ client_name: client_name,
171
+ method: method,
172
+ project_id: project_id
173
+ });
174
+ },
175
+ /**
176
+ * add_to_cart(project_id, sku_count, price_total) — mark as conversion in GA UI.
177
+ */
178
+ addToCart: function addToCart(project_id, sku_count, price_total) {
179
+ var client_name = getClientName();
180
+ ReactGA.event('add_to_cart', {
181
+ client_name: client_name,
182
+ project_id: project_id,
183
+ sku_count: sku_count,
184
+ price_total: price_total
185
+ });
186
+ }
187
+ }
188
+ };