@colijnit/homedecorator 255.1.1

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 (986) hide show
  1. package/_variables.scss +1 -0
  2. package/app/app.component.scss +30 -0
  3. package/app/app.version.d.ts +5 -0
  4. package/app/bundle/threedselector-bundle/threedselector-bundle.component.scss +24 -0
  5. package/app/bundle/threedselector-bundle/threedselector-selections-bundle.component.scss +4 -0
  6. package/app/core/components/debug/debug.component.d.ts +17 -0
  7. package/app/core/components/debug/debug.component.scss +27 -0
  8. package/app/core/components/error/error-message.component.d.ts +14 -0
  9. package/app/core/components/error/error-message.component.scss +18 -0
  10. package/app/core/components/tooltip/tooltip.component.d.ts +17 -0
  11. package/app/core/components/tooltip/tooltip.component.scss +34 -0
  12. package/app/core/const/dimensioning.d.ts +24 -0
  13. package/app/core/core.module.d.ts +27 -0
  14. package/app/core/directive/autofocus.directive.d.ts +11 -0
  15. package/app/core/directive/tooltip.directive.d.ts +21 -0
  16. package/app/core/directive/visibility-observer-master.directive.d.ts +12 -0
  17. package/app/core/directive/visibility-observer.directive.d.ts +16 -0
  18. package/app/core/enum/configuration-key.enum.d.ts +35 -0
  19. package/app/core/enum/export-type.enum.d.ts +5 -0
  20. package/app/core/enum/google-tag-manager-event.enum.d.ts +12 -0
  21. package/app/core/enum/icon-name.enum.d.ts +15 -0
  22. package/app/core/enum/icon.enum.d.ts +33 -0
  23. package/app/core/enum/light.enum.d.ts +7 -0
  24. package/app/core/enum/message-type.enum.d.ts +69 -0
  25. package/app/core/enum/model-type.enum.d.ts +6 -0
  26. package/app/core/enum/output-encoding.enum.d.ts +4 -0
  27. package/app/core/enum/shadow-map-type.enum.d.ts +6 -0
  28. package/app/core/enum/user-role-type.enum.d.ts +18 -0
  29. package/app/core/enum/view-mode.enum.d.ts +9 -0
  30. package/app/core/enum/xr-mode.enum.d.ts +4 -0
  31. package/app/core/interface/adjustable-element.interface.d.ts +5 -0
  32. package/app/core/interface/category.interface.d.ts +9 -0
  33. package/app/core/interface/changes.interface.d.ts +9 -0
  34. package/app/core/interface/child-params.interface.d.ts +3 -0
  35. package/app/core/interface/configuration-data.interface.d.ts +36 -0
  36. package/app/core/interface/external-settings.interface.d.ts +6 -0
  37. package/app/core/interface/info-dialog-data.interface.d.ts +4 -0
  38. package/app/core/interface/light-preset.interface.d.ts +18 -0
  39. package/app/core/interface/loading-overlay-data.interface.d.ts +4 -0
  40. package/app/core/interface/media-resource.interface.d.ts +6 -0
  41. package/app/core/interface/message-with-payload.interface.d.ts +81 -0
  42. package/app/core/interface/message-without-payload.interface.d.ts +35 -0
  43. package/app/core/interface/preset.interface.d.ts +8 -0
  44. package/app/core/interface/selected-floor-event.interface.d.ts +5 -0
  45. package/app/core/interface/selected-wall-event.interface.d.ts +6 -0
  46. package/app/core/interface/texture.interface.d.ts +37 -0
  47. package/app/core/interface/toolbar-icon.interface.d.ts +8 -0
  48. package/app/core/model/ar-position-indicator.d.ts +4 -0
  49. package/app/core/model/camera-settings.d.ts +12 -0
  50. package/app/core/model/category.d.ts +12 -0
  51. package/app/core/model/custom-button.d.ts +10 -0
  52. package/app/core/model/error-message.d.ts +8 -0
  53. package/app/core/model/export-object.d.ts +5 -0
  54. package/app/core/model/from-intersection-observer.d.ts +7 -0
  55. package/app/core/model/homedecorator-settings-options.d.ts +46 -0
  56. package/app/core/model/homedecorator-settings.d.ts +54 -0
  57. package/app/core/model/icon.d.ts +4 -0
  58. package/app/core/model/light-preset.d.ts +27 -0
  59. package/app/core/model/light-properties.d.ts +25 -0
  60. package/app/core/model/media-resource.d.ts +7 -0
  61. package/app/core/model/preset.d.ts +10 -0
  62. package/app/core/model/ral-color.d.ts +19 -0
  63. package/app/core/model/shadow-properties.d.ts +7 -0
  64. package/app/core/model/texture-type.d.ts +6 -0
  65. package/app/core/model/texture.d.ts +43 -0
  66. package/app/core/model/three-object.d.ts +1 -0
  67. package/app/core/model/toast-type.d.ts +5 -0
  68. package/app/core/model/toast.d.ts +5 -0
  69. package/app/core/model/xr-reticle.d.ts +17 -0
  70. package/app/core/pipe/append.pipe.d.ts +7 -0
  71. package/app/core/pipe/cm-to-measure.pipe.d.ts +10 -0
  72. package/app/core/pipe/filter.pipe.d.ts +7 -0
  73. package/app/core/pipe/keys.pipe.d.ts +7 -0
  74. package/app/core/pipe/localize.pipe.d.ts +10 -0
  75. package/app/core/pipe/m-to-measure.pipe.d.ts +10 -0
  76. package/app/core/pipe/prepend.pipe.d.ts +7 -0
  77. package/app/core/pipe/scm-to-measure.pipe.d.ts +10 -0
  78. package/app/core/pipe/sm-to-measure.pipe.d.ts +10 -0
  79. package/app/core/pipe/strip-html.pipe.d.ts +7 -0
  80. package/app/core/service/3dm-api.d.ts +65 -0
  81. package/app/core/service/app-state.service.d.ts +49 -0
  82. package/app/core/service/configuration.service.d.ts +15 -0
  83. package/app/core/service/debug.service.d.ts +16 -0
  84. package/app/core/service/dimensioning.service.d.ts +14 -0
  85. package/app/core/service/dynamic-camera.service.d.ts +23 -0
  86. package/app/core/service/environment.service.d.ts +8 -0
  87. package/app/core/service/error.service.d.ts +11 -0
  88. package/app/core/service/export.service.d.ts +18 -0
  89. package/app/core/service/file.service.d.ts +9 -0
  90. package/app/core/service/homedecorator-app-event.service.d.ts +23 -0
  91. package/app/core/service/homedecorator-app.service.d.ts +58 -0
  92. package/app/core/service/homedecorator-connector-adapter.service.d.ts +90 -0
  93. package/app/core/service/homedecorator-connector.service.d.ts +127 -0
  94. package/app/core/service/homedecorator-dictionary.service.d.ts +15 -0
  95. package/app/core/service/homedecorator-icon-cache.service.d.ts +21 -0
  96. package/app/core/service/homedecorator-settings.service.d.ts +23 -0
  97. package/app/core/service/homedecorator.service.d.ts +14 -0
  98. package/app/core/service/integration.service.d.ts +16 -0
  99. package/app/core/service/item-serialization.service.d.ts +78 -0
  100. package/app/core/service/json-utils.service.d.ts +7 -0
  101. package/app/core/service/message-bus.service.d.ts +21 -0
  102. package/app/core/service/permanent-store.service.d.ts +37 -0
  103. package/app/core/service/presets.service.d.ts +50 -0
  104. package/app/core/service/progress.service.d.ts +17 -0
  105. package/app/core/service/ral.service.d.ts +17 -0
  106. package/app/core/service/skip-button-info.service.d.ts +19 -0
  107. package/app/core/service/toast.service.d.ts +12 -0
  108. package/app/core/service/utils.service.d.ts +68 -0
  109. package/app/core/service/view-mode.service.d.ts +27 -0
  110. package/app/core/service/web-worker.service.d.ts +18 -0
  111. package/app/core/utils/clone-utils.d.ts +5 -0
  112. package/app/core/utils/color.utils.d.ts +7 -0
  113. package/app/core/utils/file.utils.d.ts +36 -0
  114. package/app/core/utils/function/is-empty.function.d.ts +1 -0
  115. package/app/core/utils/function/is-nill.function.d.ts +1 -0
  116. package/app/core/utils/material.utils.d.ts +33 -0
  117. package/app/core/utils/object.utils.d.ts +14 -0
  118. package/app/core/utils/relative-position.utils.d.ts +12 -0
  119. package/app/core/utils/variation-utils.d.ts +12 -0
  120. package/app/core/workers/enum/web-worker-message.enum.d.ts +4 -0
  121. package/app/core/workers/enum/web-worker-type.enum.d.ts +3 -0
  122. package/app/development/components/selected-child-material-texture.component.d.ts +58 -0
  123. package/app/development/components/selected-child-material-texture.component.scss +122 -0
  124. package/app/development/components/selected-child-material.component.d.ts +73 -0
  125. package/app/development/components/selected-child-material.component.scss +45 -0
  126. package/app/development/components/selected-child.component.d.ts +8 -0
  127. package/app/development/components/selected-child.component.scss +40 -0
  128. package/app/development/components/selected-object-base.d.ts +32 -0
  129. package/app/development/components/selected-object.component.d.ts +20 -0
  130. package/app/development/components/selected-object.component.scss +13 -0
  131. package/app/development/development.module.d.ts +19 -0
  132. package/app/development/directive/development.directive.d.ts +19 -0
  133. package/app/development/service/development.service.d.ts +49 -0
  134. package/app/homedecorator.component.d.ts +42 -0
  135. package/app/homedecorator.component.scss +34 -0
  136. package/app/homedecorator.module.d.ts +18 -0
  137. package/app/plugins/core3d/collision-manager/collision-manager.service.d.ts +23 -0
  138. package/app/plugins/core3d/collision-manager/floorplan-collision-detection.d.ts +9 -0
  139. package/app/plugins/core3d/collision-manager/snapping-collision.service.d.ts +47 -0
  140. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.d.ts +17 -0
  141. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.scss +30 -0
  142. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.d.ts +25 -0
  143. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.scss +13 -0
  144. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.d.ts +21 -0
  145. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.scss +6 -0
  146. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.d.ts +11 -0
  147. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.scss +19 -0
  148. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.d.ts +16 -0
  149. package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.scss +23 -0
  150. package/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.d.ts +46 -0
  151. package/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.scss +93 -0
  152. package/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.d.ts +24 -0
  153. package/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.scss +93 -0
  154. package/app/plugins/core3d/components/lightplan/lightplan.component.d.ts +60 -0
  155. package/app/plugins/core3d/components/lightplan/lightplan.component.scss +102 -0
  156. package/app/plugins/core3d/components/scene-options/scene-options.component.d.ts +17 -0
  157. package/app/plugins/core3d/components/scene-options/scene-options.component.scss +54 -0
  158. package/app/plugins/core3d/core/angles.d.ts +8 -0
  159. package/app/plugins/core3d/core/corner-utils.d.ts +8 -0
  160. package/app/plugins/core3d/core/dimensioning.d.ts +19 -0
  161. package/app/plugins/core3d/core/utils.d.ts +147 -0
  162. package/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.d.ts +49 -0
  163. package/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.scss +3 -0
  164. package/app/plugins/core3d/core3d/core3d.component.d.ts +76 -0
  165. package/app/plugins/core3d/core3d/core3d.component.scss +27 -0
  166. package/app/plugins/core3d/core3d.module.d.ts +38 -0
  167. package/app/plugins/core3d/directive/scene.directive.d.ts +26 -0
  168. package/app/plugins/core3d/enum/ar-feature.enum.d.ts +12 -0
  169. package/app/plugins/core3d/enum/direction.enum.d.ts +8 -0
  170. package/app/plugins/core3d/enum/result-type.enum.d.ts +19 -0
  171. package/app/plugins/core3d/hud/bounding-measurement-box/bounding-box-measurement.d.ts +28 -0
  172. package/app/plugins/core3d/hud/bounding-measurement-box/box-measurement.d.ts +17 -0
  173. package/app/plugins/core3d/hud/bounding-measurement-box/door-or-window-box-measurement.d.ts +29 -0
  174. package/app/plugins/core3d/hud/bounding-measurement-box/measurable.d.ts +8 -0
  175. package/app/plugins/core3d/hud/bounding-measurement-box/measurement-utils.d.ts +9 -0
  176. package/app/plugins/core3d/hud/custom-shape-name-label.d.ts +15 -0
  177. package/app/plugins/core3d/hud/floor-indicator.d.ts +20 -0
  178. package/app/plugins/core3d/hud/furniture-measurements.d.ts +12 -0
  179. package/app/plugins/core3d/hud/indicator-factory.d.ts +7 -0
  180. package/app/plugins/core3d/hud/measurements.d.ts +46 -0
  181. package/app/plugins/core3d/hud/on-wall-measurements.d.ts +18 -0
  182. package/app/plugins/core3d/hud/opening-symbol.d.ts +11 -0
  183. package/app/plugins/core3d/hud/rotation-helper.d.ts +44 -0
  184. package/app/plugins/core3d/hud/utils.d.ts +3 -0
  185. package/app/plugins/core3d/interface/dragged-data.interface.d.ts +10 -0
  186. package/app/plugins/core3d/interface/edge-visibility-changes.d.ts +5 -0
  187. package/app/plugins/core3d/interface/model.interface.d.ts +42 -0
  188. package/app/plugins/core3d/interface/opening.interface.d.ts +6 -0
  189. package/app/plugins/core3d/interface/scene-option-button.interface.d.ts +17 -0
  190. package/app/plugins/core3d/interface/scene-update.interface.d.ts +5 -0
  191. package/app/plugins/core3d/items/base-item.d.ts +97 -0
  192. package/app/plugins/core3d/items/custom-cylinder-floor-item.d.ts +12 -0
  193. package/app/plugins/core3d/items/custom-cylinder-wall-item.d.ts +13 -0
  194. package/app/plugins/core3d/items/custom-floor-item.d.ts +9 -0
  195. package/app/plugins/core3d/items/custom-objects.d.ts +55 -0
  196. package/app/plugins/core3d/items/custom-shape-floor-item.d.ts +9 -0
  197. package/app/plugins/core3d/items/custom-shape-wall-item.d.ts +10 -0
  198. package/app/plugins/core3d/items/custom-wall-floor-item.d.ts +19 -0
  199. package/app/plugins/core3d/items/custom-wall-item.d.ts +9 -0
  200. package/app/plugins/core3d/items/factory.d.ts +24 -0
  201. package/app/plugins/core3d/items/floor-item.d.ts +13 -0
  202. package/app/plugins/core3d/items/floor-pin.d.ts +11 -0
  203. package/app/plugins/core3d/items/floor-plane-item.d.ts +30 -0
  204. package/app/plugins/core3d/items/furniture.d.ts +3 -0
  205. package/app/plugins/core3d/items/in-wall-floor-item.d.ts +9 -0
  206. package/app/plugins/core3d/items/item-group.d.ts +51 -0
  207. package/app/plugins/core3d/items/item-type.d.ts +21 -0
  208. package/app/plugins/core3d/items/item.d.ts +84 -0
  209. package/app/plugins/core3d/items/metadata.d.ts +74 -0
  210. package/app/plugins/core3d/items/on-floor-item.d.ts +8 -0
  211. package/app/plugins/core3d/items/pin.d.ts +5 -0
  212. package/app/plugins/core3d/items/three-mesh.d.ts +8 -0
  213. package/app/plugins/core3d/items/wall-floor-item.d.ts +8 -0
  214. package/app/plugins/core3d/items/wall-objects.d.ts +512 -0
  215. package/app/plugins/core3d/items/wall-pin.d.ts +8 -0
  216. package/app/plugins/core3d/model/ar-parameters.d.ts +9 -0
  217. package/app/plugins/core3d/model/box-skin-default.d.ts +5 -0
  218. package/app/plugins/core3d/model/collision-info.d.ts +6 -0
  219. package/app/plugins/core3d/model/custom-floor-group-result.d.ts +18 -0
  220. package/app/plugins/core3d/model/cylinder-skin-default.d.ts +4 -0
  221. package/app/plugins/core3d/model/dragged-status.d.ts +18 -0
  222. package/app/plugins/core3d/model/face.d.ts +11 -0
  223. package/app/plugins/core3d/model/geometry.d.ts +11 -0
  224. package/app/plugins/core3d/model/scene-event.enum.d.ts +10 -0
  225. package/app/plugins/core3d/model/skin.d.ts +15 -0
  226. package/app/plugins/core3d/model/threed-model.d.ts +47 -0
  227. package/app/plugins/core3d/service/ar.service.d.ts +121 -0
  228. package/app/plugins/core3d/service/camera.service.d.ts +70 -0
  229. package/app/plugins/core3d/service/ceiling.service.d.ts +25 -0
  230. package/app/plugins/core3d/service/controls.d.ts +11 -0
  231. package/app/plugins/core3d/service/drag-and-drop.service.d.ts +73 -0
  232. package/app/plugins/core3d/service/error-glow.service.d.ts +18 -0
  233. package/app/plugins/core3d/service/floor.service.d.ts +43 -0
  234. package/app/plugins/core3d/service/font.service.d.ts +10 -0
  235. package/app/plugins/core3d/service/hud.service.d.ts +79 -0
  236. package/app/plugins/core3d/service/intersection.service.d.ts +10 -0
  237. package/app/plugins/core3d/service/item-group.service.d.ts +33 -0
  238. package/app/plugins/core3d/service/item.service.d.ts +37 -0
  239. package/app/plugins/core3d/service/light-presets.service.d.ts +46 -0
  240. package/app/plugins/core3d/service/lights.service.d.ts +38 -0
  241. package/app/plugins/core3d/service/message-board.service.d.ts +18 -0
  242. package/app/plugins/core3d/service/models.service.d.ts +37 -0
  243. package/app/plugins/core3d/service/outline.service.d.ts +40 -0
  244. package/app/plugins/core3d/service/rotation.service.d.ts +57 -0
  245. package/app/plugins/core3d/service/scene-event.service.d.ts +131 -0
  246. package/app/plugins/core3d/service/scene-options.service.d.ts +11 -0
  247. package/app/plugins/core3d/service/scene.service.d.ts +74 -0
  248. package/app/plugins/core3d/service/vr.service.d.ts +44 -0
  249. package/app/plugins/core3d/service/wall-measurements.service.d.ts +23 -0
  250. package/app/plugins/core3d/service/xr.service.d.ts +56 -0
  251. package/app/plugins/core3d/textures/DepthDataTexture.d.ts +5 -0
  252. package/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.d.ts +19 -0
  253. package/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.scss +7 -0
  254. package/app/plugins/furniture-manager/furniture-library/furniture-library.component.d.ts +27 -0
  255. package/app/plugins/furniture-manager/furniture-library/furniture-library.component.scss +20 -0
  256. package/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.d.ts +91 -0
  257. package/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.scss +57 -0
  258. package/app/plugins/furniture-manager/furniture-manager.module.d.ts +23 -0
  259. package/app/plugins/help/help/help.component.d.ts +21 -0
  260. package/app/plugins/help/help/help.component.scss +0 -0
  261. package/app/plugins/help/help-dialog/help-dialog.component.d.ts +20 -0
  262. package/app/plugins/help/help-dialog/help-dialog.component.scss +28 -0
  263. package/app/plugins/help/help.module.d.ts +12 -0
  264. package/app/plugins/lite-selector/lite-selector/component/animation/animation.component.d.ts +19 -0
  265. package/app/plugins/lite-selector/lite-selector/component/animation/animation.component.scss +0 -0
  266. package/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.d.ts +41 -0
  267. package/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.scss +25 -0
  268. package/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.d.ts +72 -0
  269. package/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.scss +146 -0
  270. package/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.d.ts +19 -0
  271. package/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.scss +37 -0
  272. package/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.d.ts +28 -0
  273. package/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.scss +127 -0
  274. package/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.d.ts +9 -0
  275. package/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.scss +47 -0
  276. package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.d.ts +31 -0
  277. package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.scss +11 -0
  278. package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.d.ts +38 -0
  279. package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.scss +80 -0
  280. package/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.d.ts +8 -0
  281. package/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.scss +10 -0
  282. package/app/plugins/lite-selector/lite-selector/lite-selector.component.d.ts +40 -0
  283. package/app/plugins/lite-selector/lite-selector/lite-selector.component.scss +10 -0
  284. package/app/plugins/lite-selector/lite-selector/service/customizer.service.d.ts +44 -0
  285. package/app/plugins/lite-selector/lite-selector.module.d.ts +22 -0
  286. package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +57 -0
  287. package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +75 -0
  288. package/app/plugins/model-uploader/model-uploader/model-upload.component.scss +34 -0
  289. package/app/plugins/model-uploader/model-uploader/model-uploader.component.d.ts +23 -0
  290. package/app/plugins/model-uploader/model-uploader.module.d.ts +16 -0
  291. package/app/plugins/plugin-interface.d.ts +5 -0
  292. package/app/plugins/plugins.module.d.ts +15 -0
  293. package/app/plugins/presets/presets/presets.component.d.ts +22 -0
  294. package/app/plugins/presets/presets/presets.component.scss +0 -0
  295. package/app/plugins/presets/presets.module.d.ts +10 -0
  296. package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.d.ts +19 -0
  297. package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.scss +4 -0
  298. package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.module.d.ts +10 -0
  299. package/app/plugins/product-catalog/product-catalog/product-catalog.component.d.ts +70 -0
  300. package/app/plugins/product-catalog/product-catalog/product-catalog.component.scss +128 -0
  301. package/app/plugins/product-catalog/product-catalog.module.d.ts +16 -0
  302. package/app/plugins/render/enum/connection-status.d.ts +6 -0
  303. package/app/plugins/render/enum/render-modes.d.ts +5 -0
  304. package/app/plugins/render/enum/render-status.d.ts +7 -0
  305. package/app/plugins/render/model/camera-position.d.ts +7 -0
  306. package/app/plugins/render/model/image-size.d.ts +6 -0
  307. package/app/plugins/render/model/lightning.d.ts +5 -0
  308. package/app/plugins/render/model/render-data.d.ts +15 -0
  309. package/app/plugins/render/model/render-environment.d.ts +6 -0
  310. package/app/plugins/render/model/render-parameters.d.ts +15 -0
  311. package/app/plugins/render/model/render-queue-item.d.ts +14 -0
  312. package/app/plugins/render/model/render-settings.d.ts +9 -0
  313. package/app/plugins/render/model/render.d.ts +14 -0
  314. package/app/plugins/render/render-controls/render-controls.component.d.ts +27 -0
  315. package/app/plugins/render/render-controls/render-controls.component.scss +51 -0
  316. package/app/plugins/render/render-dialog/render-dialog.component.d.ts +59 -0
  317. package/app/plugins/render/render-dialog/render-dialog.component.scss +320 -0
  318. package/app/plugins/render/render.module.d.ts +20 -0
  319. package/app/plugins/render/service/new-render.service.d.ts +65 -0
  320. package/app/plugins/render/service/render.service.d.ts +104 -0
  321. package/app/plugins/room-planner/components/appearance-section/appearance-section.component.d.ts +43 -0
  322. package/app/plugins/room-planner/components/appearance-section/appearance-section.component.scss +14 -0
  323. package/app/plugins/room-planner/components/color-picker/color-picker.component.d.ts +11 -0
  324. package/app/plugins/room-planner/components/color-picker/color-picker.component.scss +0 -0
  325. package/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.d.ts +49 -0
  326. package/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.scss +19 -0
  327. package/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.d.ts +49 -0
  328. package/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.scss +24 -0
  329. package/app/plugins/room-planner/components/dimension-input/dimension-input.component.d.ts +22 -0
  330. package/app/plugins/room-planner/components/dimension-input/dimension-input.component.scss +14 -0
  331. package/app/plugins/room-planner/components/edit-apply/edit-apply.component.d.ts +19 -0
  332. package/app/plugins/room-planner/components/edit-apply/edit-apply.component.scss +0 -0
  333. package/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.d.ts +28 -0
  334. package/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.scss +23 -0
  335. package/app/plugins/room-planner/components/file-drop/file-drop.component.d.ts +21 -0
  336. package/app/plugins/room-planner/components/file-drop/file-drop.component.scss +31 -0
  337. package/app/plugins/room-planner/components/floorplanner/const/defaults.d.ts +48 -0
  338. package/app/plugins/room-planner/components/floorplanner/floorplanner-mode.d.ts +9 -0
  339. package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +172 -0
  340. package/app/plugins/room-planner/components/floorplanner/floorplanner.component.scss +48 -0
  341. package/app/plugins/room-planner/components/floorplanner/service/floorplan.service.d.ts +103 -0
  342. package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +75 -0
  343. package/app/plugins/room-planner/components/floorplanner/snap-indicator-mode.d.ts +5 -0
  344. package/app/plugins/room-planner/components/floorplanner/utils/context.utils.d.ts +5 -0
  345. package/app/plugins/room-planner/components/object-library/object-library.component.d.ts +23 -0
  346. package/app/plugins/room-planner/components/object-library/object-library.component.scss +43 -0
  347. package/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.d.ts +22 -0
  348. package/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.scss +55 -0
  349. package/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.d.ts +11 -0
  350. package/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.scss +10 -0
  351. package/app/plugins/room-planner/components/selected-floor/selected-floor.component.d.ts +16 -0
  352. package/app/plugins/room-planner/components/selected-floor/selected-floor.component.scss +16 -0
  353. package/app/plugins/room-planner/components/selected-object/selected-object.component.d.ts +44 -0
  354. package/app/plugins/room-planner/components/selected-object/selected-object.component.scss +21 -0
  355. package/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.d.ts +57 -0
  356. package/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.scss +35 -0
  357. package/app/plugins/room-planner/components/selected-wall/selected-wall.component.d.ts +45 -0
  358. package/app/plugins/room-planner/components/selected-wall/selected-wall.component.scss +31 -0
  359. package/app/plugins/room-planner/components/settings/settings-options.component.d.ts +18 -0
  360. package/app/plugins/room-planner/components/settings/settings-options.component.scss +46 -0
  361. package/app/plugins/room-planner/components/settings/settings.component.d.ts +63 -0
  362. package/app/plugins/room-planner/components/settings/settings.component.scss +42 -0
  363. package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +125 -0
  364. package/app/plugins/room-planner/components/texture-editor/texture-editor.component.scss +38 -0
  365. package/app/plugins/room-planner/components/texture-picker/texture-picker.component.d.ts +25 -0
  366. package/app/plugins/room-planner/components/texture-picker/texture-picker.component.scss +49 -0
  367. package/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.d.ts +16 -0
  368. package/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.scss +5 -0
  369. package/app/plugins/room-planner/const/key.d.ts +10 -0
  370. package/app/plugins/room-planner/room-planner/room-planner.component.d.ts +236 -0
  371. package/app/plugins/room-planner/room-planner/room-planner.component.scss +167 -0
  372. package/app/plugins/room-planner/room-planner.module.d.ts +59 -0
  373. package/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.d.ts +18 -0
  374. package/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.scss +7 -0
  375. package/app/plugins/threed-in-photo/components/upload-image/upload-image.component.d.ts +18 -0
  376. package/app/plugins/threed-in-photo/components/upload-image/upload-image.component.scss +7 -0
  377. package/app/plugins/threed-in-photo/components/view-control/view-control.component.d.ts +30 -0
  378. package/app/plugins/threed-in-photo/components/view-control/view-control.component.scss +40 -0
  379. package/app/plugins/threed-in-photo/models/model-output.d.ts +14 -0
  380. package/app/plugins/threed-in-photo/services/threed-in-photo-build.service.d.ts +37 -0
  381. package/app/plugins/threed-in-photo/services/threed-in-photo-connection.service.d.ts +8 -0
  382. package/app/plugins/threed-in-photo/services/threed-in-photo-control.service.d.ts +14 -0
  383. package/app/plugins/threed-in-photo/services/threed-in-photo-event-listeners.service.d.ts +15 -0
  384. package/app/plugins/threed-in-photo/services/threed-in-photo-event.service.d.ts +9 -0
  385. package/app/plugins/threed-in-photo/services/threed-in-photo-initializer.service.d.ts +27 -0
  386. package/app/plugins/threed-in-photo/services/threed-in-photo-render.service.d.ts +20 -0
  387. package/app/plugins/threed-in-photo/services/threed-in-photo-scene.service.d.ts +12 -0
  388. package/app/plugins/threed-in-photo/services/threed-in-photo-view.service.d.ts +8 -0
  389. package/app/plugins/threed-in-photo/threed-in-photo.module.d.ts +17 -0
  390. package/app/plugins/threed-in-photo/utils/utils.d.ts +6 -0
  391. package/app/plugins/threedselector/element-buttons/element-buttons.component.d.ts +31 -0
  392. package/app/plugins/threedselector/element-buttons/element-buttons.component.scss +61 -0
  393. package/app/plugins/threedselector/element-slider/element-slider.component.d.ts +14 -0
  394. package/app/plugins/threedselector/element-slider/element-slider.component.scss +47 -0
  395. package/app/plugins/threedselector/element-toolbar/element-toolbar.component.d.ts +26 -0
  396. package/app/plugins/threedselector/element-toolbar/element-toolbar.component.scss +142 -0
  397. package/app/plugins/threedselector/threedselector/model/furniture-connected-part-integration.d.ts +7 -0
  398. package/app/plugins/threedselector/threedselector/model/furniture-integration.d.ts +12 -0
  399. package/app/plugins/threedselector/threedselector/model/furniture-part-integration.d.ts +14 -0
  400. package/app/plugins/threedselector/threedselector/model/furniture-part-variation.d.ts +7 -0
  401. package/app/plugins/threedselector/threedselector/model/material.d.ts +41 -0
  402. package/app/plugins/threedselector/threedselector/model/variation-settings.d.ts +53 -0
  403. package/app/plugins/threedselector/threedselector/model/variation.d.ts +11 -0
  404. package/app/plugins/threedselector/threedselector/service/animation.service.d.ts +22 -0
  405. package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +186 -0
  406. package/app/plugins/threedselector/threedselector/service/dimensions.service.d.ts +33 -0
  407. package/app/plugins/threedselector/threedselector/service/element.service.d.ts +45 -0
  408. package/app/plugins/threedselector/threedselector/service/light-creation.service.d.ts +9 -0
  409. package/app/plugins/threedselector/threedselector/service/load-furniture.service.d.ts +74 -0
  410. package/app/plugins/threedselector/threedselector/service/resize.service.d.ts +13 -0
  411. package/app/plugins/threedselector/threedselector/service/third-party-model.service.d.ts +66 -0
  412. package/app/plugins/threedselector/threedselector/service/threedselector.service.d.ts +22 -0
  413. package/app/plugins/threedselector/threedselector/service/variation-cache.service.d.ts +23 -0
  414. package/app/plugins/threedselector/threedselector/service/variation.service.d.ts +23 -0
  415. package/app/plugins/threedselector/threedselector/threedselector.component.d.ts +188 -0
  416. package/app/plugins/threedselector/threedselector/threedselector.component.scss +82 -0
  417. package/app/plugins/threedselector/threedselector/utils/asset.utils.d.ts +19 -0
  418. package/app/plugins/threedselector/threedselector/utils/image.utils.d.ts +6 -0
  419. package/app/plugins/threedselector/threedselector/utils/json-parser.utils.d.ts +9 -0
  420. package/app/plugins/threedselector/threedselector/utils/scene-3d.utils.d.ts +10 -0
  421. package/app/plugins/threedselector/threedselector.module.d.ts +31 -0
  422. package/app/plugins/toolbar/download-dialog/download-dialog.component.d.ts +14 -0
  423. package/app/plugins/toolbar/download-dialog/download-dialog.component.scss +22 -0
  424. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +66 -0
  425. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +97 -0
  426. package/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.d.ts +8 -0
  427. package/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.scss +0 -0
  428. package/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.d.ts +36 -0
  429. package/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.scss +71 -0
  430. package/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.d.ts +36 -0
  431. package/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.scss +3 -0
  432. package/app/plugins/toolbar/open-dialog/open-dialog.component.d.ts +23 -0
  433. package/app/plugins/toolbar/open-dialog/open-dialog.component.scss +0 -0
  434. package/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.d.ts +34 -0
  435. package/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.scss +17 -0
  436. package/app/plugins/toolbar/save-dialog/save-dialog.component.d.ts +38 -0
  437. package/app/plugins/toolbar/save-dialog/save-dialog.component.scss +33 -0
  438. package/app/plugins/toolbar/saved-dialog/saved-dialog.component.d.ts +24 -0
  439. package/app/plugins/toolbar/saved-dialog/saved-dialog.component.scss +7 -0
  440. package/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.d.ts +9 -0
  441. package/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.scss +10 -0
  442. package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +101 -0
  443. package/app/plugins/toolbar/toolbar/toolbar.component.scss +251 -0
  444. package/app/plugins/toolbar/toolbar.module.d.ts +44 -0
  445. package/app/root/root.component.scss +0 -0
  446. package/app/service/dynamic-script.service.d.ts +8 -0
  447. package/app/service/google-tag-manager.service.d.ts +19 -0
  448. package/app/service/local-storage.service.d.ts +18 -0
  449. package/app/service/service-locator.service.d.ts +4 -0
  450. package/app/shared/base64-images.d.ts +4 -0
  451. package/app/shared/button-elevation/button-elevation.component.d.ts +40 -0
  452. package/app/shared/button-elevation/button-elevation.component.scss +109 -0
  453. package/app/shared/button-elevation/button-elevation.module.d.ts +16 -0
  454. package/app/shared/camera-settings-dialog/camera-settings-dialog.component.d.ts +24 -0
  455. package/app/shared/camera-settings-dialog/camera-settings-dialog.component.scss +30 -0
  456. package/app/shared/camera-settings-dialog/camera-settings-dialog.module.d.ts +16 -0
  457. package/app/shared/category-library/category-library.component.d.ts +10 -0
  458. package/app/shared/category-library/category-library.component.scss +16 -0
  459. package/app/shared/category-library/category-library.module.d.ts +11 -0
  460. package/app/shared/context-menu/context-menu.component.d.ts +12 -0
  461. package/app/shared/context-menu/context-menu.component.scss +25 -0
  462. package/app/shared/context-menu/context-menu.module.d.ts +14 -0
  463. package/app/shared/context-menu/item-context-menu/item-context-menu.component.d.ts +30 -0
  464. package/app/shared/context-menu/item-context-menu/item-context-menu.component.scss +32 -0
  465. package/app/shared/dialog/dialog.component.d.ts +26 -0
  466. package/app/shared/dialog/dialog.component.scss +25 -0
  467. package/app/shared/dialog/dialog.module.d.ts +12 -0
  468. package/app/shared/dialog/enum/dialog-type.enum.d.ts +6 -0
  469. package/app/shared/dialog/interface/dialog-config.interface.d.ts +7 -0
  470. package/app/shared/dialog/service/dialog.service.d.ts +11 -0
  471. package/app/shared/error-dialog/error-dialog.component.d.ts +11 -0
  472. package/app/shared/error-dialog/error-dialog.component.scss +0 -0
  473. package/app/shared/error-dialog/error-dialog.module.d.ts +10 -0
  474. package/app/shared/export-dialog/export-dialog.component.d.ts +11 -0
  475. package/app/shared/export-dialog/export-dialog.component.scss +19 -0
  476. package/app/shared/export-dialog/export-dialog.module.d.ts +11 -0
  477. package/app/shared/info-dialog/info-dialog.component.d.ts +9 -0
  478. package/app/shared/info-dialog/info-dialog.component.scss +15 -0
  479. package/app/shared/info-dialog/info-dialog.module.d.ts +12 -0
  480. package/app/shared/loader/hd-loader.component.d.ts +6 -0
  481. package/app/shared/loader/hd-loader.component.scss +44 -0
  482. package/app/shared/loader/hd-loader.module.d.ts +9 -0
  483. package/app/shared/loader/loader.component.scss +42 -0
  484. package/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.d.ts +8 -0
  485. package/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.scss +3 -0
  486. package/app/shared/loading-overlay/loading-overlay.component.d.ts +19 -0
  487. package/app/shared/loading-overlay/loading-overlay.component.scss +9 -0
  488. package/app/shared/loading-overlay/loading-overlay.module.d.ts +11 -0
  489. package/app/shared/model-dialog/model-dialog-furniture-list.component.d.ts +35 -0
  490. package/app/shared/model-dialog/model-dialog-furniture-list.component.scss +221 -0
  491. package/app/shared/model-dialog/model-dialog.component.d.ts +31 -0
  492. package/app/shared/model-dialog/model-dialog.component.scss +22 -0
  493. package/app/shared/model-dialog/model-dialog.module.d.ts +16 -0
  494. package/app/shared/progress-bar/progress-bar.component.d.ts +9 -0
  495. package/app/shared/progress-bar/progress-bar.component.scss +11 -0
  496. package/app/shared/progress-bar/progress-bar.module.d.ts +9 -0
  497. package/app/shared/register-dialog/register-dialog.component.d.ts +26 -0
  498. package/app/shared/register-dialog/register-dialog.component.scss +21 -0
  499. package/app/shared/screen-size-analysis/device-size-type.d.ts +5 -0
  500. package/app/shared/screen-size-analysis/navigator-type.enum.d.ts +4 -0
  501. package/app/shared/screen-size-analysis/screen-size-analysis.service.d.ts +27 -0
  502. package/app/shared/screen-size-analysis/screen-size-config.d.ts +5 -0
  503. package/app/shared/screen-size-analysis/screen-size-info.d.ts +10 -0
  504. package/app/shared/slider-input/slider-input.component.d.ts +13 -0
  505. package/app/shared/slider-input/slider-input.component.scss +12 -0
  506. package/app/shared/slider-input/slider-input.module.d.ts +13 -0
  507. package/app/shared/toolbar-icon/toolbar-icon.component.d.ts +12 -0
  508. package/app/shared/toolbar-icon/toolbar-icon.component.scss +8 -0
  509. package/app/shared/toolbar-icon/toolbar-icon.module.d.ts +11 -0
  510. package/app/shared/zoom-controls/zoom-controls.component.d.ts +16 -0
  511. package/app/shared/zoom-controls/zoom-controls.component.scss +0 -0
  512. package/app/shared/zoom-controls/zoom-controls.module.d.ts +10 -0
  513. package/assets/.gitkeep +0 -0
  514. package/assets/3d-models/pin.mtl +12 -0
  515. package/assets/3d-models/pin.obj +1083 -0
  516. package/assets/colors/ral.json +2345 -0
  517. package/assets/cursors/pencil.png +0 -0
  518. package/assets/cursors/pencil.svg +1 -0
  519. package/assets/fonts/helvetiker_regular.ttf +0 -0
  520. package/assets/fonts/helvetiker_regular.typeface.json +1 -0
  521. package/assets/fonts/helvetiker_regular.woff +0 -0
  522. package/assets/fonts/optimer_regular.typeface.json +1 -0
  523. package/assets/hdri/TSStudio3Point.hdr +135 -0
  524. package/assets/hdri/ground_MASK.jpg +0 -0
  525. package/assets/hdri/std_env_v2_A.hdr +0 -0
  526. package/assets/hdri/std_env_v2_B.hdr +0 -0
  527. package/assets/hdri/std_env_v2_C.hdr +0 -0
  528. package/assets/hdri/std_env_v2_D.hdr +0 -0
  529. package/assets/hdri/std_env_v2_E.hdr +46 -0
  530. package/assets/icons/add-button.svg +10 -0
  531. package/assets/icons/ar_circle.svg +7 -0
  532. package/assets/icons/arrow_point_down.svg +6 -0
  533. package/assets/icons/brush.svg +1 -0
  534. package/assets/icons/cart-shopping-regular.svg +1 -0
  535. package/assets/icons/check.svg +6 -0
  536. package/assets/icons/cit_powered_white.svg +92 -0
  537. package/assets/icons/conf_frame.svg +1 -0
  538. package/assets/icons/conf_plane.svg +1 -0
  539. package/assets/icons/cross.svg +1 -0
  540. package/assets/icons/cube-outline.svg +1 -0
  541. package/assets/icons/cube-unfolded.svg +1 -0
  542. package/assets/icons/delete-button.svg +16 -0
  543. package/assets/icons/download.svg +4 -0
  544. package/assets/icons/edit-button.svg +18 -0
  545. package/assets/icons/google-cardboard-orange.svg +1 -0
  546. package/assets/icons/google-cardboard.svg +1 -0
  547. package/assets/icons/hand-pointer.svg +1 -0
  548. package/assets/icons/height_adjust.svg +1 -0
  549. package/assets/icons/magic-wand.svg +57 -0
  550. package/assets/icons/magnifier.svg +12 -0
  551. package/assets/icons/measurements.svg +1 -0
  552. package/assets/icons/move-phone-ar.svg +4 -0
  553. package/assets/icons/qrcode.svg +1 -0
  554. package/assets/icons/street-view-orange.svg +5 -0
  555. package/assets/icons/street-view.svg +6 -0
  556. package/assets/icons/swap-button.svg +12 -0
  557. package/assets/icons/tilt-phone.svg +29 -0
  558. package/assets/icons/triangle_down.svg +1 -0
  559. package/assets/icons/triangle_up.svg +1 -0
  560. package/assets/images/colijn-logo.webp +0 -0
  561. package/assets/images/favicon.ico +0 -0
  562. package/assets/images/favicon.png +0 -0
  563. package/assets/images/ione360-logo.webp +0 -0
  564. package/assets/images/logo.svg +35 -0
  565. package/assets/workers/indexedDB-web-worker.js +74 -0
  566. package/bundle-styles.scss +267 -0
  567. package/bundles/colijnit-homedecorator.umd.js +47374 -0
  568. package/bundles/colijnit-homedecorator.umd.js.map +1 -0
  569. package/colijnit-homedecorator.d.ts +5 -0
  570. package/environments/environment.d.ts +11 -0
  571. package/esm2015/app/app.version.js +9 -0
  572. package/esm2015/app/core/components/debug/debug.component.js +57 -0
  573. package/esm2015/app/core/components/error/error-message.component.js +55 -0
  574. package/esm2015/app/core/components/tooltip/tooltip.component.js +73 -0
  575. package/esm2015/app/core/const/dimensioning.js +28 -0
  576. package/esm2015/app/core/core.module.js +159 -0
  577. package/esm2015/app/core/directive/autofocus.directive.js +26 -0
  578. package/esm2015/app/core/directive/tooltip.directive.js +64 -0
  579. package/esm2015/app/core/directive/visibility-observer-master.directive.js +53 -0
  580. package/esm2015/app/core/directive/visibility-observer.directive.js +54 -0
  581. package/esm2015/app/core/enum/configuration-key.enum.js +37 -0
  582. package/esm2015/app/core/enum/export-type.enum.js +7 -0
  583. package/esm2015/app/core/enum/google-tag-manager-event.enum.js +14 -0
  584. package/esm2015/app/core/enum/icon-name.enum.js +17 -0
  585. package/esm2015/app/core/enum/icon.enum.js +35 -0
  586. package/esm2015/app/core/enum/light.enum.js +9 -0
  587. package/esm2015/app/core/enum/message-type.enum.js +71 -0
  588. package/esm2015/app/core/enum/model-type.enum.js +8 -0
  589. package/esm2015/app/core/enum/output-encoding.enum.js +6 -0
  590. package/esm2015/app/core/enum/shadow-map-type.enum.js +8 -0
  591. package/esm2015/app/core/enum/user-role-type.enum.js +22 -0
  592. package/esm2015/app/core/enum/view-mode.enum.js +11 -0
  593. package/esm2015/app/core/enum/xr-mode.enum.js +6 -0
  594. package/esm2015/app/core/interface/adjustable-element.interface.js +2 -0
  595. package/esm2015/app/core/interface/category.interface.js +2 -0
  596. package/esm2015/app/core/interface/changes.interface.js +2 -0
  597. package/esm2015/app/core/interface/child-params.interface.js +2 -0
  598. package/esm2015/app/core/interface/configuration-data.interface.js +2 -0
  599. package/esm2015/app/core/interface/external-settings.interface.js +2 -0
  600. package/esm2015/app/core/interface/info-dialog-data.interface.js +2 -0
  601. package/esm2015/app/core/interface/light-preset.interface.js +2 -0
  602. package/esm2015/app/core/interface/loading-overlay-data.interface.js +2 -0
  603. package/esm2015/app/core/interface/media-resource.interface.js +2 -0
  604. package/esm2015/app/core/interface/message-with-payload.interface.js +2 -0
  605. package/esm2015/app/core/interface/message-without-payload.interface.js +2 -0
  606. package/esm2015/app/core/interface/preset.interface.js +2 -0
  607. package/esm2015/app/core/interface/selected-floor-event.interface.js +2 -0
  608. package/esm2015/app/core/interface/selected-wall-event.interface.js +2 -0
  609. package/esm2015/app/core/interface/texture.interface.js +2 -0
  610. package/esm2015/app/core/interface/toolbar-icon.interface.js +2 -0
  611. package/esm2015/app/core/model/ar-position-indicator.js +21 -0
  612. package/esm2015/app/core/model/camera-settings.js +14 -0
  613. package/esm2015/app/core/model/category.js +15 -0
  614. package/esm2015/app/core/model/custom-button.js +16 -0
  615. package/esm2015/app/core/model/error-message.js +9 -0
  616. package/esm2015/app/core/model/export-object.js +3 -0
  617. package/esm2015/app/core/model/from-intersection-observer.js +64 -0
  618. package/esm2015/app/core/model/homedecorator-settings-options.js +49 -0
  619. package/esm2015/app/core/model/homedecorator-settings.js +22 -0
  620. package/esm2015/app/core/model/icon.js +34 -0
  621. package/esm2015/app/core/model/light-preset.js +59 -0
  622. package/esm2015/app/core/model/light-properties.js +45 -0
  623. package/esm2015/app/core/model/media-resource.js +10 -0
  624. package/esm2015/app/core/model/preset.js +15 -0
  625. package/esm2015/app/core/model/ral-color.js +2 -0
  626. package/esm2015/app/core/model/shadow-properties.js +10 -0
  627. package/esm2015/app/core/model/texture-type.js +8 -0
  628. package/esm2015/app/core/model/texture.js +58 -0
  629. package/esm2015/app/core/model/three-object.js +2 -0
  630. package/esm2015/app/core/model/toast-type.js +7 -0
  631. package/esm2015/app/core/model/toast.js +7 -0
  632. package/esm2015/app/core/model/xr-reticle.js +87 -0
  633. package/esm2015/app/core/pipe/append.pipe.js +21 -0
  634. package/esm2015/app/core/pipe/cm-to-measure.pipe.js +20 -0
  635. package/esm2015/app/core/pipe/filter.pipe.js +20 -0
  636. package/esm2015/app/core/pipe/keys.pipe.js +22 -0
  637. package/esm2015/app/core/pipe/localize.pipe.js +28 -0
  638. package/esm2015/app/core/pipe/m-to-measure.pipe.js +20 -0
  639. package/esm2015/app/core/pipe/prepend.pipe.js +21 -0
  640. package/esm2015/app/core/pipe/scm-to-measure.pipe.js +20 -0
  641. package/esm2015/app/core/pipe/sm-to-measure.pipe.js +20 -0
  642. package/esm2015/app/core/pipe/strip-html.pipe.js +17 -0
  643. package/esm2015/app/core/service/3dm-api.js +246 -0
  644. package/esm2015/app/core/service/app-state.service.js +128 -0
  645. package/esm2015/app/core/service/configuration.service.js +72 -0
  646. package/esm2015/app/core/service/debug.service.js +45 -0
  647. package/esm2015/app/core/service/dimensioning.service.js +45 -0
  648. package/esm2015/app/core/service/dynamic-camera.service.js +107 -0
  649. package/esm2015/app/core/service/environment.service.js +17 -0
  650. package/esm2015/app/core/service/error.service.js +30 -0
  651. package/esm2015/app/core/service/export.service.js +97 -0
  652. package/esm2015/app/core/service/file.service.js +44 -0
  653. package/esm2015/app/core/service/homedecorator-app-event.service.js +27 -0
  654. package/esm2015/app/core/service/homedecorator-app.service.js +201 -0
  655. package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +455 -0
  656. package/esm2015/app/core/service/homedecorator-connector.service.js +604 -0
  657. package/esm2015/app/core/service/homedecorator-dictionary.service.js +73 -0
  658. package/esm2015/app/core/service/homedecorator-icon-cache.service.js +43 -0
  659. package/esm2015/app/core/service/homedecorator-settings.service.js +146 -0
  660. package/esm2015/app/core/service/homedecorator.service.js +37 -0
  661. package/esm2015/app/core/service/integration.service.js +56 -0
  662. package/esm2015/app/core/service/item-serialization.service.js +188 -0
  663. package/esm2015/app/core/service/json-utils.service.js +56 -0
  664. package/esm2015/app/core/service/message-bus.service.js +28 -0
  665. package/esm2015/app/core/service/permanent-store.service.js +135 -0
  666. package/esm2015/app/core/service/presets.service.js +297 -0
  667. package/esm2015/app/core/service/progress.service.js +74 -0
  668. package/esm2015/app/core/service/ral.service.js +98 -0
  669. package/esm2015/app/core/service/skip-button-info.service.js +60 -0
  670. package/esm2015/app/core/service/toast.service.js +23 -0
  671. package/esm2015/app/core/service/utils.service.js +566 -0
  672. package/esm2015/app/core/service/view-mode.service.js +61 -0
  673. package/esm2015/app/core/service/web-worker.service.js +44 -0
  674. package/esm2015/app/core/utils/clone-utils.js +41 -0
  675. package/esm2015/app/core/utils/color.utils.js +20 -0
  676. package/esm2015/app/core/utils/file.utils.js +234 -0
  677. package/esm2015/app/core/utils/function/is-empty.function.js +5 -0
  678. package/esm2015/app/core/utils/function/is-nill.function.js +5 -0
  679. package/esm2015/app/core/utils/material.utils.js +407 -0
  680. package/esm2015/app/core/utils/object.utils.js +191 -0
  681. package/esm2015/app/core/utils/relative-position.utils.js +74 -0
  682. package/esm2015/app/core/utils/variation-utils.js +314 -0
  683. package/esm2015/app/core/workers/enum/web-worker-message.enum.js +6 -0
  684. package/esm2015/app/core/workers/enum/web-worker-type.enum.js +5 -0
  685. package/esm2015/app/development/components/selected-child-material-texture.component.js +467 -0
  686. package/esm2015/app/development/components/selected-child-material.component.js +863 -0
  687. package/esm2015/app/development/components/selected-child.component.js +64 -0
  688. package/esm2015/app/development/components/selected-object-base.js +127 -0
  689. package/esm2015/app/development/components/selected-object.component.js +98 -0
  690. package/esm2015/app/development/development.module.js +74 -0
  691. package/esm2015/app/development/directive/development.directive.js +92 -0
  692. package/esm2015/app/development/service/development.service.js +212 -0
  693. package/esm2015/app/homedecorator.component.js +285 -0
  694. package/esm2015/app/homedecorator.module.js +60 -0
  695. package/esm2015/app/plugins/core3d/collision-manager/collision-manager.service.js +119 -0
  696. package/esm2015/app/plugins/core3d/collision-manager/floorplan-collision-detection.js +158 -0
  697. package/esm2015/app/plugins/core3d/collision-manager/snapping-collision.service.js +234 -0
  698. package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.js +36 -0
  699. package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.js +49 -0
  700. package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.js +77 -0
  701. package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.js +26 -0
  702. package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.js +46 -0
  703. package/esm2015/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.js +197 -0
  704. package/esm2015/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.js +197 -0
  705. package/esm2015/app/plugins/core3d/components/lightplan/lightplan.component.js +512 -0
  706. package/esm2015/app/plugins/core3d/components/scene-options/scene-options.component.js +88 -0
  707. package/esm2015/app/plugins/core3d/core/angles.js +19 -0
  708. package/esm2015/app/plugins/core3d/core/corner-utils.js +9 -0
  709. package/esm2015/app/plugins/core3d/core/dimensioning.js +79 -0
  710. package/esm2015/app/plugins/core3d/core/utils.js +606 -0
  711. package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +289 -0
  712. package/esm2015/app/plugins/core3d/core3d/core3d.component.js +243 -0
  713. package/esm2015/app/plugins/core3d/core3d.module.js +201 -0
  714. package/esm2015/app/plugins/core3d/directive/scene.directive.js +41 -0
  715. package/esm2015/app/plugins/core3d/enum/ar-feature.enum.js +14 -0
  716. package/esm2015/app/plugins/core3d/enum/direction.enum.js +10 -0
  717. package/esm2015/app/plugins/core3d/enum/result-type.enum.js +21 -0
  718. package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/bounding-box-measurement.js +99 -0
  719. package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/box-measurement.js +35 -0
  720. package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/door-or-window-box-measurement.js +95 -0
  721. package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/measurable.js +2 -0
  722. package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/measurement-utils.js +22 -0
  723. package/esm2015/app/plugins/core3d/hud/custom-shape-name-label.js +31 -0
  724. package/esm2015/app/plugins/core3d/hud/floor-indicator.js +80 -0
  725. package/esm2015/app/plugins/core3d/hud/furniture-measurements.js +44 -0
  726. package/esm2015/app/plugins/core3d/hud/indicator-factory.js +49 -0
  727. package/esm2015/app/plugins/core3d/hud/measurements.js +165 -0
  728. package/esm2015/app/plugins/core3d/hud/on-wall-measurements.js +80 -0
  729. package/esm2015/app/plugins/core3d/hud/opening-symbol.js +74 -0
  730. package/esm2015/app/plugins/core3d/hud/rotation-helper.js +263 -0
  731. package/esm2015/app/plugins/core3d/hud/utils.js +30 -0
  732. package/esm2015/app/plugins/core3d/interface/dragged-data.interface.js +2 -0
  733. package/esm2015/app/plugins/core3d/interface/edge-visibility-changes.js +2 -0
  734. package/esm2015/app/plugins/core3d/interface/model.interface.js +2 -0
  735. package/esm2015/app/plugins/core3d/interface/opening.interface.js +2 -0
  736. package/esm2015/app/plugins/core3d/interface/scene-option-button.interface.js +6 -0
  737. package/esm2015/app/plugins/core3d/interface/scene-update.interface.js +2 -0
  738. package/esm2015/app/plugins/core3d/items/base-item.js +233 -0
  739. package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +41 -0
  740. package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +45 -0
  741. package/esm2015/app/plugins/core3d/items/custom-floor-item.js +11 -0
  742. package/esm2015/app/plugins/core3d/items/custom-objects.js +295 -0
  743. package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +45 -0
  744. package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +37 -0
  745. package/esm2015/app/plugins/core3d/items/custom-wall-floor-item.js +84 -0
  746. package/esm2015/app/plugins/core3d/items/custom-wall-item.js +11 -0
  747. package/esm2015/app/plugins/core3d/items/factory.js +130 -0
  748. package/esm2015/app/plugins/core3d/items/floor-item.js +29 -0
  749. package/esm2015/app/plugins/core3d/items/floor-pin.js +31 -0
  750. package/esm2015/app/plugins/core3d/items/floor-plane-item.js +95 -0
  751. package/esm2015/app/plugins/core3d/items/furniture.js +2 -0
  752. package/esm2015/app/plugins/core3d/items/in-wall-floor-item.js +14 -0
  753. package/esm2015/app/plugins/core3d/items/item-group.js +160 -0
  754. package/esm2015/app/plugins/core3d/items/item-type.js +23 -0
  755. package/esm2015/app/plugins/core3d/items/item.js +388 -0
  756. package/esm2015/app/plugins/core3d/items/metadata.js +2 -0
  757. package/esm2015/app/plugins/core3d/items/on-floor-item.js +10 -0
  758. package/esm2015/app/plugins/core3d/items/pin.js +2 -0
  759. package/esm2015/app/plugins/core3d/items/three-mesh.js +17 -0
  760. package/esm2015/app/plugins/core3d/items/wall-floor-item.js +9 -0
  761. package/esm2015/app/plugins/core3d/items/wall-objects.js +2381 -0
  762. package/esm2015/app/plugins/core3d/items/wall-pin.js +25 -0
  763. package/esm2015/app/plugins/core3d/model/ar-parameters.js +12 -0
  764. package/esm2015/app/plugins/core3d/model/box-skin-default.js +17 -0
  765. package/esm2015/app/plugins/core3d/model/collision-info.js +2 -0
  766. package/esm2015/app/plugins/core3d/model/custom-floor-group-result.js +13 -0
  767. package/esm2015/app/plugins/core3d/model/cylinder-skin-default.js +14 -0
  768. package/esm2015/app/plugins/core3d/model/dragged-status.js +51 -0
  769. package/esm2015/app/plugins/core3d/model/face.js +18 -0
  770. package/esm2015/app/plugins/core3d/model/geometry.js +52 -0
  771. package/esm2015/app/plugins/core3d/model/scene-event.enum.js +12 -0
  772. package/esm2015/app/plugins/core3d/model/skin.js +2 -0
  773. package/esm2015/app/plugins/core3d/model/threed-model.js +49 -0
  774. package/esm2015/app/plugins/core3d/service/ar.service.js +844 -0
  775. package/esm2015/app/plugins/core3d/service/camera.service.js +340 -0
  776. package/esm2015/app/plugins/core3d/service/ceiling.service.js +104 -0
  777. package/esm2015/app/plugins/core3d/service/controls.js +763 -0
  778. package/esm2015/app/plugins/core3d/service/drag-and-drop.service.js +369 -0
  779. package/esm2015/app/plugins/core3d/service/error-glow.service.js +131 -0
  780. package/esm2015/app/plugins/core3d/service/floor.service.js +229 -0
  781. package/esm2015/app/plugins/core3d/service/font.service.js +27 -0
  782. package/esm2015/app/plugins/core3d/service/hud.service.js +404 -0
  783. package/esm2015/app/plugins/core3d/service/intersection.service.js +55 -0
  784. package/esm2015/app/plugins/core3d/service/item-group.service.js +117 -0
  785. package/esm2015/app/plugins/core3d/service/item.service.js +205 -0
  786. package/esm2015/app/plugins/core3d/service/light-presets.service.js +296 -0
  787. package/esm2015/app/plugins/core3d/service/lights.service.js +190 -0
  788. package/esm2015/app/plugins/core3d/service/message-board.service.js +60 -0
  789. package/esm2015/app/plugins/core3d/service/models.service.js +146 -0
  790. package/esm2015/app/plugins/core3d/service/outline.service.js +150 -0
  791. package/esm2015/app/plugins/core3d/service/rotation.service.js +183 -0
  792. package/esm2015/app/plugins/core3d/service/scene-event.service.js +1000 -0
  793. package/esm2015/app/plugins/core3d/service/scene-options.service.js +24 -0
  794. package/esm2015/app/plugins/core3d/service/scene.service.js +351 -0
  795. package/esm2015/app/plugins/core3d/service/vr.service.js +198 -0
  796. package/esm2015/app/plugins/core3d/service/wall-measurements.service.js +79 -0
  797. package/esm2015/app/plugins/core3d/service/xr.service.js +397 -0
  798. package/esm2015/app/plugins/core3d/textures/DepthDataTexture.js +17 -0
  799. package/esm2015/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.js +54 -0
  800. package/esm2015/app/plugins/furniture-manager/furniture-library/furniture-library.component.js +92 -0
  801. package/esm2015/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.js +458 -0
  802. package/esm2015/app/plugins/furniture-manager/furniture-manager.module.js +100 -0
  803. package/esm2015/app/plugins/help/help/help.component.js +71 -0
  804. package/esm2015/app/plugins/help/help-dialog/help-dialog.component.js +83 -0
  805. package/esm2015/app/plugins/help/help.module.js +35 -0
  806. package/esm2015/app/plugins/lite-selector/lite-selector/component/animation/animation.component.js +36 -0
  807. package/esm2015/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.js +187 -0
  808. package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +417 -0
  809. package/esm2015/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.js +44 -0
  810. package/esm2015/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.js +82 -0
  811. package/esm2015/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.js +27 -0
  812. package/esm2015/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.js +148 -0
  813. package/esm2015/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.js +167 -0
  814. package/esm2015/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.js +25 -0
  815. package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +150 -0
  816. package/esm2015/app/plugins/lite-selector/lite-selector/service/customizer.service.js +222 -0
  817. package/esm2015/app/plugins/lite-selector/lite-selector.module.js +108 -0
  818. package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +470 -0
  819. package/esm2015/app/plugins/model-uploader/model-uploader/model-uploader.component.js +132 -0
  820. package/esm2015/app/plugins/model-uploader/model-uploader.module.js +60 -0
  821. package/esm2015/app/plugins/plugin-interface.js +2 -0
  822. package/esm2015/app/plugins/plugins.module.js +80 -0
  823. package/esm2015/app/plugins/presets/presets/presets.component.js +72 -0
  824. package/esm2015/app/plugins/presets/presets.module.js +33 -0
  825. package/esm2015/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.js +57 -0
  826. package/esm2015/app/plugins/product-catalog/own-collection-catalog/product-own-collection.module.js +34 -0
  827. package/esm2015/app/plugins/product-catalog/product-catalog/product-catalog.component.js +428 -0
  828. package/esm2015/app/plugins/product-catalog/product-catalog.module.js +61 -0
  829. package/esm2015/app/plugins/render/enum/connection-status.js +8 -0
  830. package/esm2015/app/plugins/render/enum/render-modes.js +7 -0
  831. package/esm2015/app/plugins/render/enum/render-status.js +9 -0
  832. package/esm2015/app/plugins/render/model/camera-position.js +6 -0
  833. package/esm2015/app/plugins/render/model/image-size.js +3 -0
  834. package/esm2015/app/plugins/render/model/lightning.js +3 -0
  835. package/esm2015/app/plugins/render/model/render-data.js +6 -0
  836. package/esm2015/app/plugins/render/model/render-environment.js +3 -0
  837. package/esm2015/app/plugins/render/model/render-parameters.js +15 -0
  838. package/esm2015/app/plugins/render/model/render-queue-item.js +11 -0
  839. package/esm2015/app/plugins/render/model/render-settings.js +12 -0
  840. package/esm2015/app/plugins/render/model/render.js +10 -0
  841. package/esm2015/app/plugins/render/render-controls/render-controls.component.js +89 -0
  842. package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +318 -0
  843. package/esm2015/app/plugins/render/render.module.js +85 -0
  844. package/esm2015/app/plugins/render/service/new-render.service.js +302 -0
  845. package/esm2015/app/plugins/render/service/render.service.js +650 -0
  846. package/esm2015/app/plugins/room-planner/components/appearance-section/appearance-section.component.js +190 -0
  847. package/esm2015/app/plugins/room-planner/components/color-picker/color-picker.component.js +32 -0
  848. package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +219 -0
  849. package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +257 -0
  850. package/esm2015/app/plugins/room-planner/components/dimension-input/dimension-input.component.js +66 -0
  851. package/esm2015/app/plugins/room-planner/components/edit-apply/edit-apply.component.js +57 -0
  852. package/esm2015/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.js +79 -0
  853. package/esm2015/app/plugins/room-planner/components/file-drop/file-drop.component.js +107 -0
  854. package/esm2015/app/plugins/room-planner/components/floorplanner/const/defaults.js +57 -0
  855. package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner-mode.js +11 -0
  856. package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +1303 -0
  857. package/esm2015/app/plugins/room-planner/components/floorplanner/service/floorplan.service.js +536 -0
  858. package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +330 -0
  859. package/esm2015/app/plugins/room-planner/components/floorplanner/snap-indicator-mode.js +7 -0
  860. package/esm2015/app/plugins/room-planner/components/floorplanner/utils/context.utils.js +53 -0
  861. package/esm2015/app/plugins/room-planner/components/object-library/object-library.component.js +63 -0
  862. package/esm2015/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.js +128 -0
  863. package/esm2015/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.js +37 -0
  864. package/esm2015/app/plugins/room-planner/components/selected-floor/selected-floor.component.js +36 -0
  865. package/esm2015/app/plugins/room-planner/components/selected-object/selected-object.component.js +203 -0
  866. package/esm2015/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.js +139 -0
  867. package/esm2015/app/plugins/room-planner/components/selected-wall/selected-wall.component.js +102 -0
  868. package/esm2015/app/plugins/room-planner/components/settings/settings-options.component.js +152 -0
  869. package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +188 -0
  870. package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +617 -0
  871. package/esm2015/app/plugins/room-planner/components/texture-picker/texture-picker.component.js +74 -0
  872. package/esm2015/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.js +48 -0
  873. package/esm2015/app/plugins/room-planner/const/key.js +12 -0
  874. package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +1681 -0
  875. package/esm2015/app/plugins/room-planner/room-planner.module.js +233 -0
  876. package/esm2015/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.js +43 -0
  877. package/esm2015/app/plugins/threed-in-photo/components/upload-image/upload-image.component.js +61 -0
  878. package/esm2015/app/plugins/threed-in-photo/components/view-control/view-control.component.js +164 -0
  879. package/esm2015/app/plugins/threed-in-photo/models/model-output.js +18 -0
  880. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-build.service.js +243 -0
  881. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-connection.service.js +50 -0
  882. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-control.service.js +33 -0
  883. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-event-listeners.service.js +36 -0
  884. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-event.service.js +19 -0
  885. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-initializer.service.js +53 -0
  886. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-render.service.js +61 -0
  887. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-scene.service.js +37 -0
  888. package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-view.service.js +21 -0
  889. package/esm2015/app/plugins/threed-in-photo/threed-in-photo.module.js +67 -0
  890. package/esm2015/app/plugins/threed-in-photo/utils/utils.js +21 -0
  891. package/esm2015/app/plugins/threedselector/element-buttons/element-buttons.component.js +95 -0
  892. package/esm2015/app/plugins/threedselector/element-slider/element-slider.component.js +28 -0
  893. package/esm2015/app/plugins/threedselector/element-toolbar/element-toolbar.component.js +80 -0
  894. package/esm2015/app/plugins/threedselector/threedselector/model/furniture-connected-part-integration.js +3 -0
  895. package/esm2015/app/plugins/threedselector/threedselector/model/furniture-integration.js +13 -0
  896. package/esm2015/app/plugins/threedselector/threedselector/model/furniture-part-integration.js +6 -0
  897. package/esm2015/app/plugins/threedselector/threedselector/model/furniture-part-variation.js +3 -0
  898. package/esm2015/app/plugins/threedselector/threedselector/model/material.js +11 -0
  899. package/esm2015/app/plugins/threedselector/threedselector/model/variation-settings.js +11 -0
  900. package/esm2015/app/plugins/threedselector/threedselector/model/variation.js +3 -0
  901. package/esm2015/app/plugins/threedselector/threedselector/service/animation.service.js +65 -0
  902. package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +1343 -0
  903. package/esm2015/app/plugins/threedselector/threedselector/service/dimensions.service.js +183 -0
  904. package/esm2015/app/plugins/threedselector/threedselector/service/element.service.js +373 -0
  905. package/esm2015/app/plugins/threedselector/threedselector/service/light-creation.service.js +35 -0
  906. package/esm2015/app/plugins/threedselector/threedselector/service/load-furniture.service.js +291 -0
  907. package/esm2015/app/plugins/threedselector/threedselector/service/resize.service.js +70 -0
  908. package/esm2015/app/plugins/threedselector/threedselector/service/third-party-model.service.js +156 -0
  909. package/esm2015/app/plugins/threedselector/threedselector/service/threedselector.service.js +101 -0
  910. package/esm2015/app/plugins/threedselector/threedselector/service/variation-cache.service.js +133 -0
  911. package/esm2015/app/plugins/threedselector/threedselector/service/variation.service.js +436 -0
  912. package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1116 -0
  913. package/esm2015/app/plugins/threedselector/threedselector/utils/asset.utils.js +128 -0
  914. package/esm2015/app/plugins/threedselector/threedselector/utils/image.utils.js +33 -0
  915. package/esm2015/app/plugins/threedselector/threedselector/utils/json-parser.utils.js +188 -0
  916. package/esm2015/app/plugins/threedselector/threedselector/utils/scene-3d.utils.js +159 -0
  917. package/esm2015/app/plugins/threedselector/threedselector.module.js +129 -0
  918. package/esm2015/app/plugins/toolbar/download-dialog/download-dialog.component.js +33 -0
  919. package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +279 -0
  920. package/esm2015/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.js +22 -0
  921. package/esm2015/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.js +123 -0
  922. package/esm2015/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.js +140 -0
  923. package/esm2015/app/plugins/toolbar/open-dialog/open-dialog.component.js +83 -0
  924. package/esm2015/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.js +92 -0
  925. package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +146 -0
  926. package/esm2015/app/plugins/toolbar/saved-dialog/saved-dialog.component.js +66 -0
  927. package/esm2015/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.js +26 -0
  928. package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +676 -0
  929. package/esm2015/app/plugins/toolbar/toolbar.module.js +177 -0
  930. package/esm2015/app/service/dynamic-script.service.js +56 -0
  931. package/esm2015/app/service/google-tag-manager.service.js +89 -0
  932. package/esm2015/app/service/local-storage.service.js +93 -0
  933. package/esm2015/app/service/service-locator.service.js +4 -0
  934. package/esm2015/app/shared/base64-images.js +6 -0
  935. package/esm2015/app/shared/button-elevation/button-elevation.component.js +279 -0
  936. package/esm2015/app/shared/button-elevation/button-elevation.module.js +60 -0
  937. package/esm2015/app/shared/camera-settings-dialog/camera-settings-dialog.component.js +197 -0
  938. package/esm2015/app/shared/camera-settings-dialog/camera-settings-dialog.module.js +58 -0
  939. package/esm2015/app/shared/category-library/category-library.component.js +27 -0
  940. package/esm2015/app/shared/category-library/category-library.module.js +39 -0
  941. package/esm2015/app/shared/context-menu/context-menu.component.js +35 -0
  942. package/esm2015/app/shared/context-menu/context-menu.module.js +49 -0
  943. package/esm2015/app/shared/context-menu/item-context-menu/item-context-menu.component.js +93 -0
  944. package/esm2015/app/shared/dialog/dialog.component.js +119 -0
  945. package/esm2015/app/shared/dialog/dialog.module.js +45 -0
  946. package/esm2015/app/shared/dialog/enum/dialog-type.enum.js +8 -0
  947. package/esm2015/app/shared/dialog/interface/dialog-config.interface.js +2 -0
  948. package/esm2015/app/shared/dialog/service/dialog.service.js +21 -0
  949. package/esm2015/app/shared/error-dialog/error-dialog.component.js +24 -0
  950. package/esm2015/app/shared/error-dialog/error-dialog.module.js +30 -0
  951. package/esm2015/app/shared/export-dialog/export-dialog.component.js +68 -0
  952. package/esm2015/app/shared/export-dialog/export-dialog.module.js +35 -0
  953. package/esm2015/app/shared/info-dialog/info-dialog.component.js +54 -0
  954. package/esm2015/app/shared/info-dialog/info-dialog.module.js +37 -0
  955. package/esm2015/app/shared/loader/hd-loader.component.js +24 -0
  956. package/esm2015/app/shared/loader/hd-loader.module.js +33 -0
  957. package/esm2015/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.js +26 -0
  958. package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +55 -0
  959. package/esm2015/app/shared/loading-overlay/loading-overlay.module.js +42 -0
  960. package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +325 -0
  961. package/esm2015/app/shared/model-dialog/model-dialog.component.js +104 -0
  962. package/esm2015/app/shared/model-dialog/model-dialog.module.js +64 -0
  963. package/esm2015/app/shared/progress-bar/progress-bar.component.js +39 -0
  964. package/esm2015/app/shared/progress-bar/progress-bar.module.js +33 -0
  965. package/esm2015/app/shared/register-dialog/register-dialog.component.js +112 -0
  966. package/esm2015/app/shared/screen-size-analysis/device-size-type.js +7 -0
  967. package/esm2015/app/shared/screen-size-analysis/navigator-type.enum.js +6 -0
  968. package/esm2015/app/shared/screen-size-analysis/screen-size-analysis.service.js +93 -0
  969. package/esm2015/app/shared/screen-size-analysis/screen-size-config.js +7 -0
  970. package/esm2015/app/shared/screen-size-analysis/screen-size-info.js +2 -0
  971. package/esm2015/app/shared/slider-input/slider-input.component.js +35 -0
  972. package/esm2015/app/shared/slider-input/slider-input.module.js +46 -0
  973. package/esm2015/app/shared/toolbar-icon/toolbar-icon.component.js +95 -0
  974. package/esm2015/app/shared/toolbar-icon/toolbar-icon.module.js +38 -0
  975. package/esm2015/app/shared/zoom-controls/zoom-controls.component.js +47 -0
  976. package/esm2015/app/shared/zoom-controls/zoom-controls.module.js +34 -0
  977. package/esm2015/colijnit-homedecorator.js +5 -0
  978. package/esm2015/environments/environment.js +17 -0
  979. package/esm2015/public_api.js +4 -0
  980. package/fesm2015/colijnit-homedecorator.js +45086 -0
  981. package/fesm2015/colijnit-homedecorator.js.map +1 -0
  982. package/homedecorator-globals.scss +361 -0
  983. package/package.json +48 -0
  984. package/palette.scss +32 -0
  985. package/public_api.d.ts +3 -0
  986. package/styles.scss +377 -0
@@ -0,0 +1,60 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { HomedecoratorComponent } from './homedecorator.component';
3
+ import { ServiceLocator } from './service/service-locator.service';
4
+ import { CommonModule } from '@angular/common';
5
+ import { ProgressBarModule } from './shared/progress-bar/progress-bar.module';
6
+ import { LoadingOverlayModule } from './shared/loading-overlay/loading-overlay.module';
7
+ import { HdLoaderModule } from './shared/loader/hd-loader.module';
8
+ import { ExportDialogModule } from './shared/export-dialog/export-dialog.module';
9
+ import { PluginsModule } from './plugins/plugins.module';
10
+ import { InfoDialogModule } from './shared/info-dialog/info-dialog.module';
11
+ import { DialogModule } from './shared/dialog/dialog.module';
12
+ import * as i0 from "@angular/core";
13
+ export class HomedecoratorModule {
14
+ constructor(_injector) {
15
+ this._injector = _injector;
16
+ ServiceLocator.injector = this._injector;
17
+ }
18
+ }
19
+ HomedecoratorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule });
20
+ HomedecoratorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, bootstrap: [HomedecoratorComponent], declarations: [HomedecoratorComponent], imports: [CommonModule,
21
+ ProgressBarModule,
22
+ LoadingOverlayModule,
23
+ HdLoaderModule,
24
+ ExportDialogModule,
25
+ InfoDialogModule,
26
+ PluginsModule,
27
+ DialogModule], exports: [HomedecoratorComponent] });
28
+ HomedecoratorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, imports: [[
29
+ CommonModule,
30
+ ProgressBarModule,
31
+ LoadingOverlayModule,
32
+ HdLoaderModule,
33
+ ExportDialogModule,
34
+ InfoDialogModule,
35
+ PluginsModule,
36
+ DialogModule
37
+ ]] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, decorators: [{
39
+ type: NgModule,
40
+ args: [{
41
+ imports: [
42
+ CommonModule,
43
+ ProgressBarModule,
44
+ LoadingOverlayModule,
45
+ HdLoaderModule,
46
+ ExportDialogModule,
47
+ InfoDialogModule,
48
+ PluginsModule,
49
+ DialogModule
50
+ ],
51
+ declarations: [
52
+ HomedecoratorComponent
53
+ ],
54
+ exports: [
55
+ HomedecoratorComponent
56
+ ],
57
+ bootstrap: [HomedecoratorComponent]
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9ob21lZGVjb3JhdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBcUIzRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7O2lIQUhVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLHNCQUFzQixrQkFMaEMsc0JBQXNCLGFBVnRCLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixZQUFZLGFBTVosc0JBQXNCO2tIQUliLG1CQUFtQixZQWxCckI7WUFDUCxZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsWUFBWTtTQUNiOzRGQVNVLG1CQUFtQjtrQkFuQi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asc0JBQXNCO3FCQUN2QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbXBvbmVudH0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U2VydmljZUxvY2F0b3J9IGZyb20gJy4vc2VydmljZS9zZXJ2aWNlLWxvY2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1Byb2dyZXNzQmFyTW9kdWxlfSBmcm9tICcuL3NoYXJlZC9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLm1vZHVsZSc7XHJcbmltcG9ydCB7TG9hZGluZ092ZXJsYXlNb2R1bGV9IGZyb20gJy4vc2hhcmVkL2xvYWRpbmctb3ZlcmxheS9sb2FkaW5nLW92ZXJsYXkubW9kdWxlJztcclxuaW1wb3J0IHtIZExvYWRlck1vZHVsZX0gZnJvbSAnLi9zaGFyZWQvbG9hZGVyL2hkLWxvYWRlci5tb2R1bGUnO1xyXG5pbXBvcnQge0V4cG9ydERpYWxvZ01vZHVsZX0gZnJvbSAnLi9zaGFyZWQvZXhwb3J0LWRpYWxvZy9leHBvcnQtZGlhbG9nLm1vZHVsZSc7XHJcbmltcG9ydCB7UGx1Z2luc01vZHVsZX0gZnJvbSAnLi9wbHVnaW5zL3BsdWdpbnMubW9kdWxlJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nTW9kdWxlfSBmcm9tICcuL3NoYXJlZC9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQge0RpYWxvZ01vZHVsZX0gZnJvbSAnLi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIExvYWRpbmdPdmVybGF5TW9kdWxlLFxyXG4gICAgSGRMb2FkZXJNb2R1bGUsXHJcbiAgICBFeHBvcnREaWFsb2dNb2R1bGUsXHJcbiAgICBJbmZvRGlhbG9nTW9kdWxlLFxyXG4gICAgUGx1Z2luc01vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBIb21lZGVjb3JhdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBIb21lZGVjb3JhdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBib290c3RyYXA6IFtIb21lZGVjb3JhdG9yQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZWRlY29yYXRvck1vZHVsZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBTZXJ2aWNlTG9jYXRvci5pbmplY3RvciA9IHRoaXMuX2luamVjdG9yO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,119 @@
1
+ import { Euler, Vector3 } from 'three';
2
+ import { Injectable } from '@angular/core';
3
+ import { validFloorplanPosition } from './floorplan-collision-detection';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../room-planner/components/floorplanner/service/floorplan.service";
6
+ import * as i2 from "../service/scene.service";
7
+ import * as i3 from "../service/intersection.service";
8
+ import * as i4 from "../service/floor.service";
9
+ export class CollisionManagerService {
10
+ constructor(_floorplanService, _sceneService, _intersectionService, _floorService) {
11
+ this._floorplanService = _floorplanService;
12
+ this._sceneService = _sceneService;
13
+ this._intersectionService = _intersectionService;
14
+ this._floorService = _floorService;
15
+ this.checkCollisions = true;
16
+ this._cachedMeshes = {};
17
+ this._origPosition = new Vector3();
18
+ this._origRotation = new Euler();
19
+ }
20
+ validatePosition(newPosition, newRotation, piece, allFurniture = []) {
21
+ if (!this.checkCollisions) {
22
+ return { valid: true };
23
+ }
24
+ const otherFurniture = allFurniture.filter(f => f.uuid !== piece.uuid);
25
+ const floorplanRooms = this._floorplanService.getRooms();
26
+ const orphanWalls = this._floorplanService.getOrphanWalls();
27
+ /*
28
+ for debugging purposes, uncomment to visualize bounding boxes
29
+ */
30
+ // if (this._sceneService) {
31
+ // const meshes = piece.getVisibleMeshesParents();
32
+ // const corners = meshes.map((mesh: Item | CustomMesh) => {
33
+ // if (mesh instanceof CustomMesh) {
34
+ // if (newPosition) {
35
+ // piece.wantsRotation = undefined;
36
+ // return mesh.moveBBoxCorners(newPosition);
37
+ // }
38
+ // if (newRotation) {
39
+ // piece.wantsRotation = newRotation;
40
+ // return mesh.rotateBBoxCorners(newRotation);
41
+ // }
42
+ // return mesh.getBBoxCorners();
43
+ // } else {
44
+ // return mesh.computeBBoxCorners(newPosition, newRotation);
45
+ // }
46
+ // });
47
+ //
48
+ // const points = (corners as any).flat();
49
+ // this._sceneService.removeObject(this.collisionMesh);
50
+ // const geo = new BufferGeometry().setFromPoints(points).rotateX(Math.PI / 2);
51
+ // // const mat = new MeshBasicMaterial({color: 'blue'});
52
+ // // this.collisionMesh = new Mesh(geo, mat);
53
+ // const material = new LineBasicMaterial({color: 'blue', linewidth: 5});
54
+ // // Create the final object to add to the scene
55
+ // this.collisionMesh = new Line(geo, material);
56
+ //
57
+ // this.collisionMesh.name = 'collision-mesh';
58
+ // this._sceneService.addObject(this.collisionMesh);
59
+ // }
60
+ /* end debugging */
61
+ const { valid, intersectsWall, obstructingObjects, noRooms } = validFloorplanPosition(newPosition, newRotation, piece, otherFurniture, floorplanRooms, orphanWalls);
62
+ if (valid && !obstructingObjects) {
63
+ return { valid };
64
+ }
65
+ else if (valid && obstructingObjects) {
66
+ return { valid, obstructingObjects };
67
+ }
68
+ else if (!valid && intersectsWall) {
69
+ if (noRooms) {
70
+ const groundIntersects = this._intersectionService.getIntersections(newPosition, [this._floorService.groundPlane]);
71
+ if (groundIntersects.length > 0) {
72
+ return { valid: true };
73
+ }
74
+ }
75
+ else {
76
+ return { valid, intersectsWall };
77
+ }
78
+ }
79
+ // const wallPlanes: Mesh[] = this.model.getWallEdgePlanes();
80
+ this._origPosition.copy(piece.position);
81
+ this._origRotation.copy(piece.rotation);
82
+ if (newPosition) {
83
+ piece.position.copy(newPosition);
84
+ }
85
+ if (newRotation) {
86
+ piece.rotation.copy(newRotation);
87
+ }
88
+ piece.updateMatrix();
89
+ // const collides = rayCollides(piece, obstructingObjects, wallPlanes);
90
+ // const collides = deepCollides(piece, obstructingObjects, this._cachedMeshes);
91
+ if (newPosition) {
92
+ piece.position.copy(this._origPosition);
93
+ }
94
+ if (newRotation) {
95
+ piece.rotation.copy(this._origRotation);
96
+ }
97
+ piece.updateMatrix();
98
+ // TODO: Tidy up caching of positions
99
+ // if (!collides) {
100
+ // if (piece instanceof CustomMesh || piece instanceof Item) {
101
+ // this._cachedMeshes[piece.id] = piece.getBBoxCorners();
102
+ // } else {
103
+ // this._cachedMeshes[piece.id] = null;
104
+ // }
105
+ // }
106
+ //
107
+ // return { valid: !collides };
108
+ return { valid: !obstructingObjects };
109
+ }
110
+ }
111
+ CollisionManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, deps: [{ token: i1.FloorplanService }, { token: i2.SceneService }, { token: i3.IntersectionService }, { token: i4.FloorService }], target: i0.ɵɵFactoryTarget.Injectable });
112
+ CollisionManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, providedIn: 'root' });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, decorators: [{
114
+ type: Injectable,
115
+ args: [{
116
+ providedIn: 'root'
117
+ }]
118
+ }], ctorParameters: function () { return [{ type: i1.FloorplanService }, { type: i2.SceneService }, { type: i3.IntersectionService }, { type: i4.FloorService }]; } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGlzaW9uLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvY29yZTNkL2NvbGxpc2lvbi1tYW5hZ2VyL2NvbGxpc2lvbi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBUSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBV3ZFLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFDVSxpQkFBbUMsRUFDbkMsYUFBMkIsRUFDM0Isb0JBQXlDLEVBQ3pDLGFBQTJCO1FBSDNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQVg5QixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUcvQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBUXBDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsV0FBb0IsRUFDcEIsV0FBa0IsRUFDbEIsS0FBZ0IsRUFDaEIsZUFBNEIsRUFBRTtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxjQUFjLEdBQWdCLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFB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O1FBQ0osRUFBRTtRQUNGLCtCQUErQjtRQUMvQixPQUFPLEVBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLEVBQUMsQ0FBQztJQUN0QyxDQUFDOztxSEFySFUsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdWxlciwgTGluZSwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge3ZhbGlkRmxvb3JwbGFuUG9zaXRpb259IGZyb20gJy4vZmxvb3JwbGFuLWNvbGxpc2lvbi1kZXRlY3Rpb24nO1xyXG5pbXBvcnQge0Zsb29ycGxhblNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL2Zsb29ycGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7SW50ZXJzZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9pbnRlcnNlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2Zsb29yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Z1cm5pdHVyZX0gZnJvbSAnLi4vaXRlbXMvZnVybml0dXJlJztcclxuaW1wb3J0IHtDb2xsaXNpb25JbmZvfSBmcm9tICcuLi9tb2RlbC9jb2xsaXNpb24taW5mbyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsaXNpb25NYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBjaGVja0NvbGxpc2lvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBjb2xsaXNpb25NZXNoOiBMaW5lO1xyXG5cclxuICBwcml2YXRlIF9jYWNoZWRNZXNoZXM6IG9iamVjdCA9IHt9O1xyXG4gIHByaXZhdGUgX29yaWdQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XHJcbiAgcHJpdmF0ZSBfb3JpZ1JvdGF0aW9uID0gbmV3IEV1bGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmxvb3JwbGFuU2VydmljZTogRmxvb3JwbGFuU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW50ZXJzZWN0aW9uU2VydmljZTogSW50ZXJzZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yU2VydmljZTogRmxvb3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGVQb3NpdGlvbihcclxuICAgIG5ld1Bvc2l0aW9uOiBWZWN0b3IzLFxyXG4gICAgbmV3Um90YXRpb246IEV1bGVyLFxyXG4gICAgcGllY2U6IEZ1cm5pdHVyZSxcclxuICAgIGFsbEZ1cm5pdHVyZTogRnVybml0dXJlW10gPSBbXVxyXG4gICk6IENvbGxpc2lvbkluZm8ge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrQ29sbGlzaW9ucykge1xyXG4gICAgICByZXR1cm4ge3ZhbGlkOiB0cnVlfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG90aGVyRnVybml0dXJlOiBGdXJuaXR1cmVbXSA9IGFsbEZ1cm5pdHVyZS5maWx0ZXIoZiA9PiBmLnV1aWQgIT09IHBpZWNlLnV1aWQpO1xyXG4gICAgY29uc3QgZmxvb3JwbGFuUm9vbXMgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldFJvb21zKCk7XHJcbiAgICBjb25zdCBvcnBoYW5XYWxscyA9IHRoaXMuX2Zsb29ycGxhblNlcnZpY2UuZ2V0T3JwaGFuV2FsbHMoKTtcclxuXHJcbiAgICAvKlxyXG4gICAgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgdW5jb21tZW50IHRvIHZpc3VhbGl6ZSBib3VuZGluZyBib3hlc1xyXG4gICAgICovXHJcbiAgICAvLyBpZiAodGhpcy5fc2NlbmVTZXJ2aWNlKSB7XHJcbiAgICAvLyAgIGNvbnN0IG1lc2hlcyA9IHBpZWNlLmdldFZpc2libGVNZXNoZXNQYXJlbnRzKCk7XHJcbiAgICAvLyAgIGNvbnN0IGNvcm5lcnMgPSBtZXNoZXMubWFwKChtZXNoOiBJdGVtIHwgQ3VzdG9tTWVzaCkgPT4ge1xyXG4gICAgLy8gICAgIGlmIChtZXNoIGluc3RhbmNlb2YgQ3VzdG9tTWVzaCkge1xyXG4gICAgLy8gICAgICAgaWYgKG5ld1Bvc2l0aW9uKSB7XHJcbiAgICAvLyAgICAgICAgIHBpZWNlLndhbnRzUm90YXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBtZXNoLm1vdmVCQm94Q29ybmVycyhuZXdQb3NpdGlvbik7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICBpZiAobmV3Um90YXRpb24pIHtcclxuICAgIC8vICAgICAgICAgcGllY2Uud2FudHNSb3RhdGlvbiA9IG5ld1JvdGF0aW9uO1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gbWVzaC5yb3RhdGVCQm94Q29ybmVycyhuZXdSb3RhdGlvbik7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICByZXR1cm4gbWVzaC5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICByZXR1cm4gbWVzaC5jb21wdXRlQkJveENvcm5lcnMobmV3UG9zaXRpb24sIG5ld1JvdGF0aW9uKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy9cclxuICAgIC8vICAgY29uc3QgcG9pbnRzID0gKGNvcm5lcnMgYXMgYW55KS5mbGF0KCk7XHJcbiAgICAvLyAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QodGhpcy5jb2xsaXNpb25NZXNoKTtcclxuICAgIC8vICAgY29uc3QgZ2VvID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyhwb2ludHMpLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgLy8gICAvLyBjb25zdCBtYXQgPSBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoe2NvbG9yOiAnYmx1ZSd9KTtcclxuICAgIC8vICAgLy8gdGhpcy5jb2xsaXNpb25NZXNoID0gbmV3IE1lc2goZ2VvLCBtYXQpO1xyXG4gICAgLy8gICBjb25zdCBtYXRlcmlhbCA9IG5ldyBMaW5lQmFzaWNNYXRlcmlhbCh7Y29sb3I6ICdibHVlJywgbGluZXdpZHRoOiA1fSk7XHJcbiAgICAvLyAgIC8vIENyZWF0ZSB0aGUgZmluYWwgb2JqZWN0IHRvIGFkZCB0byB0aGUgc2NlbmVcclxuICAgIC8vICAgdGhpcy5jb2xsaXNpb25NZXNoID0gbmV3IExpbmUoZ2VvLCBtYXRlcmlhbCk7XHJcbiAgICAvL1xyXG4gICAgLy8gICB0aGlzLmNvbGxpc2lvbk1lc2gubmFtZSA9ICdjb2xsaXNpb24tbWVzaCc7XHJcbiAgICAvLyAgIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QodGhpcy5jb2xsaXNpb25NZXNoKTtcclxuICAgIC8vIH1cclxuICAgIC8qIGVuZCBkZWJ1Z2dpbmcgICAgICovXHJcblxyXG4gICAgY29uc3Qge3ZhbGlkLCBpbnRlcnNlY3RzV2FsbCwgb2JzdHJ1Y3RpbmdPYmplY3RzLCBub1Jvb21zfSA9IHZhbGlkRmxvb3JwbGFuUG9zaXRpb24oXHJcbiAgICAgIG5ld1Bvc2l0aW9uLCBuZXdSb3RhdGlvbiwgcGllY2UsIG90aGVyRnVybml0dXJlLCBmbG9vcnBsYW5Sb29tcywgb3JwaGFuV2FsbHNcclxuICAgICk7XHJcbiAgICBpZiAodmFsaWQgJiYgIW9ic3RydWN0aW5nT2JqZWN0cykge1xyXG4gICAgICByZXR1cm4ge3ZhbGlkfTtcclxuICAgIH0gZWxzZSBpZiAodmFsaWQgJiYgb2JzdHJ1Y3RpbmdPYmplY3RzKSB7XHJcbiAgICAgIHJldHVybiB7dmFsaWQsIG9ic3RydWN0aW5nT2JqZWN0c307XHJcbiAgICB9IGVsc2UgaWYgKCF2YWxpZCAmJiBpbnRlcnNlY3RzV2FsbCkge1xyXG4gICAgICBpZiAobm9Sb29tcykge1xyXG4gICAgICAgIGNvbnN0IGdyb3VuZEludGVyc2VjdHMgPSB0aGlzLl9pbnRlcnNlY3Rpb25TZXJ2aWNlLmdldEludGVyc2VjdGlvbnMobmV3UG9zaXRpb24sIFt0aGlzLl9mbG9vclNlcnZpY2UuZ3JvdW5kUGxhbmVdKTtcclxuICAgICAgICBpZiAoZ3JvdW5kSW50ZXJzZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4ge3ZhbGlkOiB0cnVlfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHt2YWxpZCwgaW50ZXJzZWN0c1dhbGx9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc3Qgd2FsbFBsYW5lczogTWVzaFtdID0gdGhpcy5tb2RlbC5nZXRXYWxsRWRnZVBsYW5lcygpO1xyXG4gICAgdGhpcy5fb3JpZ1Bvc2l0aW9uLmNvcHkocGllY2UucG9zaXRpb24pO1xyXG4gICAgdGhpcy5fb3JpZ1JvdGF0aW9uLmNvcHkocGllY2Uucm90YXRpb24pO1xyXG5cclxuICAgIGlmIChuZXdQb3NpdGlvbikge1xyXG4gICAgICBwaWVjZS5wb3NpdGlvbi5jb3B5KG5ld1Bvc2l0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChuZXdSb3RhdGlvbikge1xyXG4gICAgICBwaWVjZS5yb3RhdGlvbi5jb3B5KG5ld1JvdGF0aW9uKTtcclxuICAgIH1cclxuICAgIHBpZWNlLnVwZGF0ZU1hdHJpeCgpO1xyXG5cclxuICAgIC8vIGNvbnN0IGNvbGxpZGVzID0gcmF5Q29sbGlkZXMocGllY2UsIG9ic3RydWN0aW5nT2JqZWN0cywgd2FsbFBsYW5lcyk7XHJcbiAgICAvLyBjb25zdCBjb2xsaWRlcyA9IGRlZXBDb2xsaWRlcyhwaWVjZSwgb2JzdHJ1Y3RpbmdPYmplY3RzLCB0aGlzLl9jYWNoZWRNZXNoZXMpO1xyXG5cclxuICAgIGlmIChuZXdQb3NpdGlvbikge1xyXG4gICAgICBwaWVjZS5wb3NpdGlvbi5jb3B5KHRoaXMuX29yaWdQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3Um90YXRpb24pIHtcclxuICAgICAgcGllY2Uucm90YXRpb24uY29weSh0aGlzLl9vcmlnUm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgcGllY2UudXBkYXRlTWF0cml4KCk7XHJcblxyXG4gICAgLy8gVE9ETzogVGlkeSB1cCBjYWNoaW5nIG9mIHBvc2l0aW9uc1xyXG4gICAgLy8gaWYgKCFjb2xsaWRlcykge1xyXG4gICAgLy8gICBpZiAocGllY2UgaW5zdGFuY2VvZiBDdXN0b21NZXNoIHx8IHBpZWNlIGluc3RhbmNlb2YgSXRlbSkge1xyXG4gICAgLy8gICAgIHRoaXMuX2NhY2hlZE1lc2hlc1twaWVjZS5pZF0gPSBwaWVjZS5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgLy8gICB9IGVsc2Uge1xyXG4gICAgLy8gICAgIHRoaXMuX2NhY2hlZE1lc2hlc1twaWVjZS5pZF0gPSBudWxsO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gcmV0dXJuIHsgdmFsaWQ6ICFjb2xsaWRlcyB9O1xyXG4gICAgcmV0dXJuIHt2YWxpZDogIW9ic3RydWN0aW5nT2JqZWN0c307XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,158 @@
1
+ import { Vector2 } from 'three';
2
+ import { CustomMesh } from '../items/custom-objects';
3
+ import { ItemGroup } from '../items/item-group';
4
+ import { Utils } from '../core/utils';
5
+ // checks if given corners of mesh are inside a room
6
+ function meshInRoom(corners, rooms) {
7
+ let insideRoom = false;
8
+ for (let i = 0; i < rooms.length; i++) {
9
+ const room = rooms[i];
10
+ const interiorCorners = room.getInteriorCorners();
11
+ if (Utils.polygonInsidePolygon(corners, interiorCorners)) {
12
+ insideRoom = true;
13
+ }
14
+ }
15
+ return insideRoom;
16
+ }
17
+ // returns list of rooms an item defined by corners belongs to
18
+ function roomsContainingMesh(meshPosition, rooms) {
19
+ return rooms.reduce((belongsTo, room) => {
20
+ const interiorCorners = room.getInteriorCorners();
21
+ if (Utils.pointInPolygon(meshPosition.x, meshPosition.z, interiorCorners)) {
22
+ return belongsTo.concat(room);
23
+ }
24
+ return belongsTo;
25
+ }, []);
26
+ }
27
+ function edgeIsObstructingMesh(meshCorners, edge) {
28
+ const edgeCorners = edge.corners().map(corner => {
29
+ return new Vector2(corner.x, corner.y);
30
+ });
31
+ for (const mCorners of meshCorners) {
32
+ if (Utils.polygonPolygonIntersect(mCorners, edgeCorners)) {
33
+ return true;
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+ function objectsObstructingMesh(meshGroup, meshCorners, objects) {
39
+ return objects.reduce((obstructing, object) => {
40
+ if (object !== meshGroup && object.obstructFloorMoves) {
41
+ const children = object.getVisibleMeshesParents();
42
+ for (let i = 0; i < children.length; i++) {
43
+ const child = children[i];
44
+ const childCorners = child.getBBoxCorners();
45
+ const isInside = Utils.polygonInsidePolygon(meshCorners, childCorners) ||
46
+ Utils.polygonInsidePolygon(childCorners, meshCorners);
47
+ if (isInside || Utils.polygonPolygonIntersect(meshCorners, childCorners)) {
48
+ obstructing.push(object);
49
+ break; // already found obstruction, so might as well break
50
+ }
51
+ }
52
+ }
53
+ return obstructing;
54
+ }, []);
55
+ }
56
+ function includeItemGroupAsItems(objects) {
57
+ const result = [];
58
+ for (let i = 0; i < objects.length; i++) {
59
+ if (objects[i] instanceof ItemGroup) {
60
+ objects[i].children.forEach(child => result.push(child));
61
+ }
62
+ else {
63
+ result.push(objects[i]);
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ function uniqueCorners(value, index, self) {
69
+ return self.indexOf(value) === index;
70
+ }
71
+ export function validFloorplanPosition(newPosition, newRotation, meshGroup, objects = [], floorplanRooms, orphanWalls) {
72
+ // if there is no room, then there's possibly some imported room (glb)
73
+ if (floorplanRooms.length === 0) {
74
+ return { valid: false, noRooms: true };
75
+ }
76
+ const meshes = meshGroup.getVisibleMeshesParents();
77
+ let corners = meshes.map((mesh) => {
78
+ if (mesh instanceof CustomMesh) {
79
+ if (newPosition) {
80
+ meshGroup.wantsRotation = undefined;
81
+ return mesh.moveBBoxCorners(newPosition);
82
+ }
83
+ if (newRotation) {
84
+ meshGroup.wantsRotation = newRotation;
85
+ return mesh.rotateBBoxCorners(newRotation);
86
+ }
87
+ return mesh.getBBoxCorners();
88
+ }
89
+ else {
90
+ return mesh.computeBBoxCorners(newPosition, newRotation);
91
+ }
92
+ });
93
+ // remove duplicates
94
+ corners = corners.filter((v, i, a) => a.findIndex(f => JSON.stringify(f) === JSON.stringify(v)) === i);
95
+ // ensure that every mesh is inside a room
96
+ let inRoom = true;
97
+ for (let i = 0; i < corners.length; i++) {
98
+ if (!meshInRoom(corners[i], floorplanRooms)) {
99
+ inRoom = false;
100
+ break; // mesh is placed out of room, get out
101
+ }
102
+ }
103
+ if (!inRoom) {
104
+ return { valid: false, intersectsWall: true };
105
+ }
106
+ const inRooms = meshes.reduce((rooms, mesh) => {
107
+ return rooms.concat(roomsContainingMesh(mesh.localAnchor(newPosition), floorplanRooms));
108
+ }, []);
109
+ // check whether mesh intersects inner rooms walls
110
+ const maxRoomArea = inRooms.reduce((max, room) => Math.max(max, room.area), 0);
111
+ const accountedRooms = floorplanRooms.filter(room => room.area <= maxRoomArea);
112
+ for (const room of accountedRooms) {
113
+ for (const meshCorners of corners) {
114
+ if (Utils.polygonPolygonIntersect(room.getInteriorCorners(), meshCorners)) {
115
+ return { valid: false, intersectsWall: true };
116
+ }
117
+ }
118
+ }
119
+ // check whether mesh intersects any inner walls
120
+ for (const wall of orphanWalls) {
121
+ if ((wall.frontEdge && edgeIsObstructingMesh(corners, wall.frontEdge)) ||
122
+ (wall.backEdge && edgeIsObstructingMesh(corners, wall.backEdge))) {
123
+ return { valid: false, intersectsWall: true };
124
+ }
125
+ }
126
+ // check whether other objects get in the way
127
+ if (typeof meshGroup.obstructFloorMoves === 'boolean' && meshGroup.obstructFloorMoves === false) {
128
+ objects = [];
129
+ }
130
+ else {
131
+ objects = includeItemGroupAsItems(objects).filter((item) => item !== meshGroup && item.obstructFloorMoves);
132
+ }
133
+ if (!objects.length) {
134
+ return { valid: true };
135
+ }
136
+ // check whether there are any other objects obstructing mesh
137
+ // const obstructing = meshes.reduce((o, mesh, index) =>
138
+ // o.concat(objectsObstructingMesh(meshGroup, corners[index], objects)), []);
139
+ const obstructing = [];
140
+ for (let i = 0; i < corners.length; i++) {
141
+ const obstructingMeshes = objectsObstructingMesh(meshGroup, corners[i], objects);
142
+ if (obstructingMeshes.length > 0) {
143
+ for (let j = 0; j < obstructingMeshes.length; j++) {
144
+ if (obstructing.indexOf(obstructingMeshes[j]) < 0) {
145
+ obstructing.push(obstructingMeshes[j]);
146
+ }
147
+ }
148
+ }
149
+ }
150
+ return obstructing.length
151
+ ? (obstructing.length === 1
152
+ ? (meshGroup.canElevate && obstructing[0].stackable ?
153
+ { valid: true, obstructingObjects: obstructing } :
154
+ { valid: false, obstructingObjects: obstructing })
155
+ : { valid: false, obstructingObjects: obstructing })
156
+ : { valid: true };
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvb3JwbGFuLWNvbGxpc2lvbi1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9jb2xsaXNpb24tbWFuYWdlci9mbG9vcnBsYW4tY29sbGlzaW9uLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVEsT0FBTyxFQUFVLE1BQU0sT0FBTyxDQUFDO0FBRTlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdwQyxvREFBb0Q7QUFDcEQsU0FBUyxVQUFVLENBQUMsT0FBa0IsRUFBRSxLQUFhO0lBQ25ELElBQUksVUFBVSxHQUFZLEtBQUssQ0FBQztJQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLElBQUksR0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEQsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFFO1lBQ3hELFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDbkI7S0FDRjtJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsU0FBUyxtQkFBbUIsQ0FBQyxZQUFxQixFQUFFLEtBQWE7SUFDL0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBaUIsRUFBRSxJQUFVLEVBQVUsRUFBRTtRQUM1RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENB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QUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixHQUFnQixzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlGLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pELFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLFdBQVcsQ0FBQyxNQUFNO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkQsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdWxlciwgVmVjdG9yMiwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0hhbGZFZGdlLCBSb29tLCBXYWxsfSBmcm9tICcuLi9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5pbXBvcnQge0N1c3RvbU1lc2h9IGZyb20gJy4uL2l0ZW1zL2N1c3RvbS1vYmplY3RzJztcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuLi9pdGVtcy9pdGVtJztcclxuaW1wb3J0IHtJdGVtR3JvdXB9IGZyb20gJy4uL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHtGdXJuaXR1cmV9IGZyb20gJy4uL2l0ZW1zL2Z1cm5pdHVyZSc7XHJcblxyXG4vLyBjaGVja3MgaWYgZ2l2ZW4gY29ybmVycyBvZiBtZXNoIGFyZSBpbnNpZGUgYSByb29tXHJcbmZ1bmN0aW9uIG1lc2hJblJvb20oY29ybmVyczogVmVjdG9yMltdLCByb29tczogUm9vbVtdKTogYm9vbGVhbiB7XHJcbiAgbGV0IGluc2lkZVJvb206IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvb21zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCByb29tOiBSb29tID0gcm9vbXNbaV07XHJcbiAgICBjb25zdCBpbnRlcmlvckNvcm5lcnMgPSByb29tLmdldEludGVyaW9yQ29ybmVycygpO1xyXG4gICAgaWYgKFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKGNvcm5lcnMsIGludGVyaW9yQ29ybmVycykpIHtcclxuICAgICAgaW5zaWRlUm9vbSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBpbnNpZGVSb29tO1xyXG59XHJcblxyXG4vLyByZXR1cm5zIGxpc3Qgb2Ygcm9vbXMgYW4gaXRlbSBkZWZpbmVkIGJ5IGNvcm5lcnMgYmVsb25ncyB0b1xyXG5mdW5jdGlvbiByb29tc0NvbnRhaW5pbmdNZXNoKG1lc2hQb3NpdGlvbjogVmVjdG9yMywgcm9vbXM6IFJvb21bXSk6IFJvb21bXSB7XHJcbiAgcmV0dXJuIHJvb21zLnJlZHVjZSgoYmVsb25nc1RvOiBSb29tW10sIHJvb206IFJvb20pOiBSb29tW10gPT4ge1xyXG4gICAgY29uc3QgaW50ZXJpb3JDb3JuZXJzID0gcm9vbS5nZXRJbnRlcmlvckNvcm5lcnMoKTtcclxuICAgIGlmIChVdGlscy5wb2ludEluUG9seWdvbihtZXNoUG9zaXRpb24ueCwgbWVzaFBvc2l0aW9uLnosIGludGVyaW9yQ29ybmVycykpIHtcclxuICAgICAgcmV0dXJuIGJlbG9uZ3NUby5jb25jYXQocm9vbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmVsb25nc1RvO1xyXG4gIH0sIFtdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZWRnZUlzT2JzdHJ1Y3RpbmdNZXNoKG1lc2hDb3JuZXJzOiBWZWN0b3IyW11bXSwgZWRnZTogSGFsZkVkZ2UpOiBib29sZWFuIHtcclxuICBjb25zdCBlZGdlQ29ybmVycyA9IGVkZ2UuY29ybmVycygpLm1hcChjb3JuZXIgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IyKGNvcm5lci54LCBjb3JuZXIueSk7XHJcbiAgfSk7XHJcblxyXG4gIGZvciAoY29uc3QgbUNvcm5lcnMgb2YgbWVzaENvcm5lcnMpIHtcclxuICAgIGlmIChVdGlscy5wb2x5Z29uUG9seWdvbkludGVyc2VjdChtQ29ybmVycywgZWRnZUNvcm5lcnMpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvYmplY3RzT2JzdHJ1Y3RpbmdNZXNoKG1lc2hHcm91cCwgbWVzaENvcm5lcnMsIG9iamVjdHMpOiBGdXJuaXR1cmVbXSB7XHJcbiAgcmV0dXJuIG9iamVjdHMucmVkdWNlKChvYnN0cnVjdGluZywgb2JqZWN0KSA9PiB7XHJcbiAgICBpZiAob2JqZWN0ICE9PSBtZXNoR3JvdXAgJiYgb2JqZWN0Lm9ic3RydWN0Rmxvb3JNb3Zlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG9iamVjdC5nZXRWaXNpYmxlTWVzaGVzUGFyZW50cygpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZDogSXRlbSB8IEN1c3RvbU1lc2ggPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBjb25zdCBjaGlsZENvcm5lcnMgPSBjaGlsZC5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgICAgIGNvbnN0IGlzSW5zaWRlXHJcbiAgICAgICAgICA9IFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKG1lc2hDb3JuZXJzLCBjaGlsZENvcm5lcnMpIHx8XHJcbiAgICAgICAgICAgIFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKGNoaWxkQ29ybmVycywgbWVzaENvcm5lcnMpO1xyXG4gICAgICAgIGlmIChpc0luc2lkZSB8fCBVdGlscy5wb2x5Z29uUG9seWdvbkludGVyc2VjdChtZXNoQ29ybmVycywgY2hpbGRDb3JuZXJzKSkge1xyXG4gICAgICAgICAgb2JzdHJ1Y3RpbmcucHVzaChvYmplY3QpO1xyXG4gICAgICAgICAgYnJlYWs7IC8vIGFscmVhZHkgZm91bmQgb2JzdHJ1Y3Rpb24sIHNvIG1pZ2h0IGFzIHdlbGwgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvYnN0cnVjdGluZztcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluY2x1ZGVJdGVtR3JvdXBBc0l0ZW1zKG9iamVjdHMpOiBGdXJuaXR1cmVbXSB7XHJcbiAgY29uc3QgcmVzdWx0OiBGdXJuaXR1cmVbXSA9IFtdO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKG9iamVjdHNbaV0gaW5zdGFuY2VvZiBJdGVtR3JvdXApIHtcclxuICAgICAgb2JqZWN0c1tpXS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHJlc3VsdC5wdXNoKGNoaWxkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHQucHVzaChvYmplY3RzW2ldKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gdW5pcXVlQ29ybmVycyh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcclxuICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZEZsb29ycGxhblBvc2l0aW9uKFxyXG4gIG5ld1Bvc2l0aW9uOiBWZWN0b3IzLFxyXG4gIG5ld1JvdGF0aW9uOiBFdWxlcixcclxuICBtZXNoR3JvdXA6IEZ1cm5pdHVyZSxcclxuICBvYmplY3RzOiBGdXJuaXR1cmVbXSA9IFtdLFxyXG4gIGZsb29ycGxhblJvb21zOiBSb29tW10sXHJcbiAgb3JwaGFuV2FsbHM6IFdhbGxbXVxyXG4pOiB7XHJcbiAgdmFsaWQ6IGJvb2xlYW4sXHJcbiAgaW50ZXJzZWN0c1dhbGw/OiBib29sZWFuLFxyXG4gIG9ic3RydWN0aW5nT2JqZWN0cz86IEZ1cm5pdHVyZVtdLFxyXG4gIG5vUm9vbXM/OiBib29sZWFuXHJcbn0ge1xyXG4gIC8vIGlmIHRoZXJlIGlzIG5vIHJvb20sIHRoZW4gdGhlcmUncyBwb3NzaWJseSBzb21lIGltcG9ydGVkIHJvb20gKGdsYilcclxuICBpZiAoZmxvb3JwbGFuUm9vbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIG5vUm9vbXM6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1lc2hlcyA9IG1lc2hHcm91cC5nZXRWaXNpYmxlTWVzaGVzUGFyZW50cygpO1xyXG4gIGxldCBjb3JuZXJzID0gbWVzaGVzLm1hcCgobWVzaDogSXRlbSB8IEN1c3RvbU1lc2gpID0+IHtcclxuICAgIGlmIChtZXNoIGluc3RhbmNlb2YgQ3VzdG9tTWVzaCkge1xyXG4gICAgICBpZiAobmV3UG9zaXRpb24pIHtcclxuICAgICAgICBtZXNoR3JvdXAud2FudHNSb3RhdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gbWVzaC5tb3ZlQkJveENvcm5lcnMobmV3UG9zaXRpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdSb3RhdGlvbikge1xyXG4gICAgICAgIG1lc2hHcm91cC53YW50c1JvdGF0aW9uID0gbmV3Um90YXRpb247XHJcbiAgICAgICAgcmV0dXJuIG1lc2gucm90YXRlQkJveENvcm5lcnMobmV3Um90YXRpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtZXNoLmdldEJCb3hDb3JuZXJzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbWVzaC5jb21wdXRlQkJveENvcm5lcnMobmV3UG9zaXRpb24sIG5ld1JvdGF0aW9uKTtcclxuICAgIH1cclxuICB9KTtcclxuICAvLyByZW1vdmUgZHVwbGljYXRlc1xyXG4gIGNvcm5lcnMgPSBjb3JuZXJzLmZpbHRlcigodiwgaSwgYSkgPT4gYS5maW5kSW5kZXgoZiA9PiBKU09OLnN0cmluZ2lmeShmKSA9PT0gSlNPTi5zdHJpbmdpZnkodikpID09PSBpKTtcclxuXHJcbiAgLy8gZW5zdXJlIHRoYXQgZXZlcnkgbWVzaCBpcyBpbnNpZGUgYSByb29tXHJcbiAgbGV0IGluUm9vbTogYm9vbGVhbiA9IHRydWU7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3JuZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoIW1lc2hJblJvb20oY29ybmVyc1tpXSwgZmxvb3JwbGFuUm9vbXMpKSB7XHJcbiAgICAgIGluUm9vbSA9IGZhbHNlO1xyXG4gICAgICBicmVhazsgLy8gbWVzaCBpcyBwbGFjZWQgb3V0IG9mIHJvb20sIGdldCBvdXRcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKCFpblJvb20pIHtcclxuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgaW50ZXJzZWN0c1dhbGw6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGluUm9vbXMgPSBtZXNoZXMucmVkdWNlKChyb29tcywgbWVzaDogSXRlbSB8IEN1c3RvbU1lc2gpID0+IHtcclxuICAgIHJldHVybiByb29tcy5jb25jYXQoXHJcbiAgICAgIHJvb21zQ29udGFpbmluZ01lc2gobWVzaC5sb2NhbEFuY2hvcihuZXdQb3NpdGlvbiksIGZsb29ycGxhblJvb21zKVxyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIC8vIGNoZWNrIHdoZXRoZXIgbWVzaCBpbnRlcnNlY3RzIGlubmVyIHJvb21zIHdhbGxzXHJcbiAgY29uc3QgbWF4Um9vbUFyZWEgPSBpblJvb21zLnJlZHVjZSgobWF4LCByb29tKSA9PiBNYXRoLm1heChtYXgsIHJvb20uYXJlYSksIDApO1xyXG4gIGNvbnN0IGFjY291bnRlZFJvb21zID0gZmxvb3JwbGFuUm9vbXMuZmlsdGVyKHJvb20gPT4gcm9vbS5hcmVhIDw9IG1heFJvb21BcmVhKTtcclxuICBmb3IgKGNvbnN0IHJvb20gb2YgYWNjb3VudGVkUm9vbXMpIHtcclxuICAgIGZvciAoY29uc3QgbWVzaENvcm5lcnMgb2YgY29ybmVycykge1xyXG4gICAgICBpZiAoVXRpbHMucG9seWdvblBvbHlnb25JbnRlcnNlY3Qocm9vbS5nZXRJbnRlcmlvckNvcm5lcnMoKSwgbWVzaENvcm5lcnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBpbnRlcnNlY3RzV2FsbDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIG1lc2ggaW50ZXJzZWN0cyBhbnkgaW5uZXIgd2FsbHNcclxuICBmb3IgKGNvbnN0IHdhbGwgb2Ygb3JwaGFuV2FsbHMpIHtcclxuICAgIGlmIChcclxuICAgICAgKHdhbGwuZnJvbnRFZGdlICYmIGVkZ2VJc09ic3RydWN0aW5nTWVzaChjb3JuZXJzLCB3YWxsLmZyb250RWRnZSkpIHx8XHJcbiAgICAgICh3YWxsLmJhY2tFZGdlICYmIGVkZ2VJc09ic3RydWN0aW5nTWVzaChjb3JuZXJzLCB3YWxsLmJhY2tFZGdlKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGludGVyc2VjdHNXYWxsOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIG90aGVyIG9iamVjdHMgZ2V0IGluIHRoZSB3YXlcclxuICBpZiAodHlwZW9mIG1lc2hHcm91cC5vYnN0cnVjdEZsb29yTW92ZXMgPT09ICdib29sZWFuJyAmJiBtZXNoR3JvdXAub2JzdHJ1Y3RGbG9vck1vdmVzID09PSBmYWxzZSkge1xyXG4gICAgb2JqZWN0cyA9IFtdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBvYmplY3RzID0gaW5jbHVkZUl0ZW1Hcm91cEFzSXRlbXMob2JqZWN0cykuZmlsdGVyKChpdGVtOiBGdXJuaXR1cmUpID0+XHJcbiAgICAgIGl0ZW0gIT09IG1lc2hHcm91cCAmJiBpdGVtLm9ic3RydWN0Rmxvb3JNb3Zlcyk7XHJcbiAgfVxyXG4gIGlmICghb2JqZWN0cy5sZW5ndGgpIHtcclxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgb2JqZWN0cyBvYnN0cnVjdGluZyBtZXNoXHJcbiAgLy8gY29uc3Qgb2JzdHJ1Y3RpbmcgPSBtZXNoZXMucmVkdWNlKChvLCBtZXNoLCBpbmRleCkgPT5cclxuICAvLyAgIG8uY29uY2F0KG9iamVjdHNPYnN0cnVjdGluZ01lc2gobWVzaEdyb3VwLCBjb3JuZXJzW2luZGV4XSwgb2JqZWN0cykpLCBbXSk7XHJcbiAgY29uc3Qgb2JzdHJ1Y3RpbmcgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcm5lcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IG9ic3RydWN0aW5nTWVzaGVzOiBGdXJuaXR1cmVbXSA9IG9iamVjdHNPYnN0cnVjdGluZ01lc2gobWVzaEdyb3VwLCBjb3JuZXJzW2ldLCBvYmplY3RzKTtcclxuICAgIGlmIChvYnN0cnVjdGluZ01lc2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgb2JzdHJ1Y3RpbmdNZXNoZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAob2JzdHJ1Y3RpbmcuaW5kZXhPZihvYnN0cnVjdGluZ01lc2hlc1tqXSkgPCAwKSB7XHJcbiAgICAgICAgICBvYnN0cnVjdGluZy5wdXNoKG9ic3RydWN0aW5nTWVzaGVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBvYnN0cnVjdGluZy5sZW5ndGhcclxuICAgID8gKG9ic3RydWN0aW5nLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IChtZXNoR3JvdXAuY2FuRWxldmF0ZSAmJiBvYnN0cnVjdGluZ1swXS5zdGFja2FibGUgP1xyXG4gICAgICAgIHsgdmFsaWQ6IHRydWUsIG9ic3RydWN0aW5nT2JqZWN0czogb2JzdHJ1Y3RpbmcgfSA6XHJcbiAgICAgICAgeyB2YWxpZDogZmFsc2UsIG9ic3RydWN0aW5nT2JqZWN0czogb2JzdHJ1Y3Rpbmd9KVxyXG4gICAgICA6IHsgdmFsaWQ6IGZhbHNlLCBvYnN0cnVjdGluZ09iamVjdHM6IG9ic3RydWN0aW5nIH0pXHJcbiAgICA6IHsgdmFsaWQ6IHRydWUgfTtcclxufVxyXG4iXX0=