kitchen-simulator 1.1.1-test.49 → 1.1.1-test.50

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