@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,243 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Injectable } from '@angular/core';
11
+ import { ArrowHelper, BoxGeometry, BufferAttribute, BufferGeometry, DoubleSide, Group, Mesh, MeshStandardMaterial, NoColorSpace, ShadowMaterial, Vector3 } from 'three';
12
+ import Delaunator from 'delaunator';
13
+ import { VertexNormalsHelper } from 'three/examples/jsm/helpers/VertexNormalsHelper';
14
+ import { LinearFilter } from 'three/src/constants';
15
+ import { ModelOutput } from '../models/model-output';
16
+ import { Utils } from '../utils/utils';
17
+ import * as i0 from "@angular/core";
18
+ import * as i1 from "./threed-in-photo-connection.service";
19
+ import * as i2 from "./threed-in-photo-scene.service";
20
+ import * as i3 from "./threed-in-photo-view.service";
21
+ import * as i4 from "./threed-in-photo-control.service";
22
+ import * as i5 from "../../core3d/service/floor.service";
23
+ export class ThreedInPhotoBuildService {
24
+ constructor(_connectionService, _sceneService, _cameraService, _controlService, _floorService) {
25
+ this._connectionService = _connectionService;
26
+ this._sceneService = _sceneService;
27
+ this._cameraService = _cameraService;
28
+ this._controlService = _controlService;
29
+ this._floorService = _floorService;
30
+ this._textureMapSize = 512;
31
+ this.shadowMaterial = new ShadowMaterial({ opacity: 0.4, side: DoubleSide });
32
+ this.visibilityMaterial = new MeshStandardMaterial({
33
+ color: '#' + Math.floor(Math.random() * 16777215).toString(16),
34
+ side: DoubleSide
35
+ });
36
+ }
37
+ generateScene(file) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ yield this._connectionService.requestSceneParameters(file).then(result => {
40
+ if (result) {
41
+ if (this._cachedModelOutput) {
42
+ this._prepareForNewImage();
43
+ }
44
+ this._cachedModelOutput = ModelOutput.ObjectToModelOutput(result);
45
+ this._createSceneBackground(file);
46
+ this._generateMeshes([this._cachedModelOutput.polygons3D.floor], file, [this._cachedModelOutput.polygons2D.floor]);
47
+ this._controlService.placeCustomFloorItems(this._placementMatrix);
48
+ this._resetCamera();
49
+ }
50
+ });
51
+ // this._cachedModelOutput = ModelOutput.ObjectToModelOutput({"layout_2d":{"ceiling":[[530.9105603992939,0.3118055760860443],[47.03086057305336,0.3118055760860443],[223.9230525791645,116.30347988009453],[448.5480583012104,105.07847914099694]],"floor":[[11.46523466706276,477.99794813990595],[558.0527485907078,477.99794813990595],[541.2058731615543,463.0312804877758],[448.5480583012104,332.0729385316372],[224.85899010300637,319.6007154881954]],"walls":[[[47.03086057305336,0.3118055760860443],[0.23398438096046449,0.3118055760860443],[0.23398438096046449,477.99794813990595],[11.46523466706276,477.99794813990595],[224.85899010300637,319.6007154881954],[223.9230525791645,116.30347988009453]],[[223.9230525791645,116.30347988009453],[224.85899010300637,319.6007154881954],[448.5480583012104,332.0729385316372],[448.5480583012104,105.07847914099694]],[[538.3980605900288,0.3118055760860443],[530.9105603992939,0.3118055760860443],[448.5480583012104,105.07847914099694],[448.5480583012104,332.0729385316372],[541.2058731615543,463.0312804877758]],[[558.0527485907078,477.99794813990595],[598.2980621159077,477.99794813990595],[598.2980621159077,0.3118055760860443],[538.3980605900288,0.3118055760860443],[541.2058731615543,463.0312804877758]]]},"layout_3d":{"ceiling":[[1.3872436768478816,-1.4127035164170796,-1.3719063348240326],[-2.752578448586994,-1.4158451580339009,-1.365247303909726],[-2.0475381129317817,-1.5404981397920186,2.456250136428409],[1.9674640185303157,-1.512902142935329,1.7001819067531159]],"floor":[[-2.798312615685993,1.48322367436356,-1.6857259816593598],[1.3594668394989436,1.4595421529478497,-1.730117852158017],[1.3432941920227473,1.4569534040159649,-1.5665455407566498],[1.949396181768841,1.4005049443907208,1.656955187850528],[-2.0389817469649849,1.4100615955061382,2.5015868597560457]],"walls":[[[-2.7499639504485664,-1.4141030334764058,-1.368939930862851],[-2.820334863000446,-1.2286291145616109,-1.762072379059262],[-2.8040821068816719,1.4321645475096173,-1.7814384049839447],[-2.7884995453887519,1.4767428613371319,-1.6978746003574799],[-2.03023905687862,1.4017025209135479,2.459818785720401],[-2.0503613465362129,-1.543531181746059,2.4695710592799715]],[[-2.0563641303115425,-1.5499800466828878,2.4978937559657625],[-2.028852772050434,1.4003771520323223,2.453195994430118],[1.947130966848797,1.399278042382664,1.6515354567103913],[1.9620111472076838,-1.509623529844814,1.6871356421046784]],[[1.3584952837891047,-1.3473986410432393,-1.5103271550602387],[1.3837347514099543,-1.4101525568299825,-1.377313429779477],[1.9666138178772395,-1.5123909735017354,1.6981477194362214],[1.963871050543255,1.4083445048994488,1.69158548646503],[1.3476056343979304,1.460146305627293,-1.5601847714847992]],[[1.3654572255081599,1.4639496780104107,-1.7218559331364106],[1.4059656149811213,1.2959241843885845,-2.036826188034482],[1.4197884089416926,-1.1067872070603902,-2.0203297681278657],[1.3577268607086604,-1.3468575500779683,-1.5114741868442963],[1.3456337935394709,1.458685991830296,-1.5630939549869965]]]}});
52
+ });
53
+ }
54
+ _generateMeshes(coordinates3D, file, coordinates2D, createTextures = false, createHelpers = false) {
55
+ const meshGroup = new Group();
56
+ meshGroup.name = 'threed-in-photo-mesh-group';
57
+ coordinates3D.forEach((positionVertices, index) => {
58
+ const geometry = this._createGeometryAndUvs(positionVertices);
59
+ const polygonMesh = new Mesh(geometry, this.visibilityMaterial);
60
+ polygonMesh.receiveShadow = true;
61
+ this.floorMesh = polygonMesh;
62
+ this._floorService.groundPlane = this.floorMesh;
63
+ if (createTextures) {
64
+ this._createTextures(file, coordinates2D[index], polygonMesh);
65
+ }
66
+ const middle = new Vector3();
67
+ positionVertices.forEach((v) => {
68
+ middle.add(v);
69
+ });
70
+ middle.multiplyScalar(1 / positionVertices.length);
71
+ polygonMesh.localToWorld(middle);
72
+ if (createHelpers) {
73
+ this._createHelpers(polygonMesh, middle);
74
+ }
75
+ meshGroup.add(polygonMesh, this._createPlacementBoxTest(geometry, middle));
76
+ });
77
+ this._meshGroup = meshGroup;
78
+ meshGroup.scale.set(1, -1, -1);
79
+ this._sceneService.scene.add(meshGroup);
80
+ }
81
+ _createGeometryAndUvs(positionVertices) {
82
+ const geometry = new BufferGeometry().setFromPoints(positionVertices);
83
+ const indexDelaunay = Delaunator.from(positionVertices.map(v => [v.x, v.z]));
84
+ const meshIndex = [];
85
+ const quadUvs = [];
86
+ for (let i = 0; i < indexDelaunay.triangles.length; i++) {
87
+ meshIndex.push(indexDelaunay.triangles[i]);
88
+ }
89
+ const minX = Math.min(...positionVertices.map((n) => n.x));
90
+ const maxX = Math.max(...positionVertices.map((n) => n.x));
91
+ const minY = Math.min(...positionVertices.map((n) => n.z));
92
+ const maxY = Math.max(...positionVertices.map((n) => n.z));
93
+ for (let j = 0; j < positionVertices.length; j++) {
94
+ const qx = this._remapFloat(positionVertices[j].x, minX, maxX, 1, 0);
95
+ const qz = this._remapFloat(positionVertices[j].z, minY, maxY, 0, 1);
96
+ quadUvs.push(...[qx, qz]);
97
+ }
98
+ const uvs = new Float32Array(quadUvs);
99
+ geometry.setAttribute('uv', new BufferAttribute(uvs, 2));
100
+ geometry.getAttribute('uv').needsUpdate = true;
101
+ geometry.setIndex(meshIndex);
102
+ geometry.computeVertexNormals();
103
+ return geometry;
104
+ }
105
+ _createTextures(file, points, object) {
106
+ const canvas = document.createElement('canvas');
107
+ const ctx = canvas.getContext('2d');
108
+ const image = new Image();
109
+ const fileReader = new FileReader();
110
+ fileReader.onload = () => {
111
+ image.src = fileReader.result;
112
+ };
113
+ image.onload = () => __awaiter(this, void 0, void 0, function* () {
114
+ canvas.width = image.width;
115
+ canvas.height = image.height;
116
+ let minX = Infinity;
117
+ let maxX = -Infinity;
118
+ let minY = Infinity;
119
+ let maxY = -Infinity;
120
+ ctx.save();
121
+ ctx.beginPath();
122
+ ctx.moveTo(points[0].x, points[0].y);
123
+ for (let i = 0; i < points.length; i++) {
124
+ minX = points[i].x < minX ? points[i].x : minX;
125
+ maxX = points[i].x > maxX ? points[i].x : maxX;
126
+ minY = points[i].y < minY ? points[i].y : minY;
127
+ maxY = points[i].y > maxY ? points[i].y : maxY;
128
+ if (i !== 0) {
129
+ ctx.lineTo(points[i].x, points[i].y);
130
+ }
131
+ }
132
+ ctx.closePath();
133
+ ctx.clip();
134
+ ctx.drawImage(image, 0, 0);
135
+ const c = document.createElement('canvas');
136
+ const cx = c.getContext('2d');
137
+ c.width = this._textureMapSize;
138
+ c.height = this._textureMapSize;
139
+ cx.scale(this._textureMapSize / (maxX - minX), this._textureMapSize / (maxY - minY));
140
+ cx.drawImage(canvas, -minX, -minY);
141
+ const uvCoordinates = this._generateUVCoordinates(points, minX, minY, maxX - minX, maxY - minY);
142
+ this._setUVCoordinates(object.geometry, uvCoordinates);
143
+ object.material.map = yield Utils.CreateTextureFromBase64(c.toDataURL());
144
+ object.material.color = undefined;
145
+ object.material.needsUpdate = true;
146
+ });
147
+ fileReader.readAsDataURL(file);
148
+ }
149
+ _createSceneBackground(file) {
150
+ const fileReader = new FileReader();
151
+ fileReader.onload = () => __awaiter(this, void 0, void 0, function* () {
152
+ const texture = yield Utils.CreateTextureFromBase64(fileReader.result);
153
+ texture.flipY = true;
154
+ texture.colorSpace = NoColorSpace;
155
+ texture.minFilter = LinearFilter;
156
+ texture.matrixAutoUpdate = false;
157
+ const sceneWidth = this._sceneService.renderer.domElement.clientWidth;
158
+ const sceneHeight = this._sceneService.renderer.domElement.clientHeight;
159
+ const imageAspect = texture.image.width / texture.image.height;
160
+ const sceneAspect = sceneWidth / sceneHeight;
161
+ if (imageAspect > sceneAspect) {
162
+ // Image is wider than the scene
163
+ texture.matrix.setUvTransform(0, 0, // Translation
164
+ sceneAspect / imageAspect, 1, // Scale
165
+ 0, (1 - sceneAspect / imageAspect) / 2, // Offset
166
+ 0.5 // Center point
167
+ );
168
+ }
169
+ else {
170
+ // Image is taller than the scene
171
+ texture.matrix.setUvTransform(0, 0, // Translation
172
+ 1, imageAspect / sceneAspect, // Scale
173
+ 0, (1 - imageAspect / sceneAspect) / 2, // Offset
174
+ 0.5 // Center point
175
+ );
176
+ }
177
+ this._sceneService.scene.background = texture;
178
+ this._sceneService.sceneWidth = texture.image.width;
179
+ this._sceneService.sceneHeight = texture.image.height;
180
+ });
181
+ fileReader.readAsDataURL(file);
182
+ }
183
+ _createHelpers(polygonMesh, middle) {
184
+ const n1 = Utils.GetFaceNormalFromBufferGeometry(polygonMesh.geometry, 0, 0);
185
+ const arrowHelper1 = new ArrowHelper(n1, middle, 1, 0xffff00);
186
+ const vertexHelper = new VertexNormalsHelper(polygonMesh, 2, 0x00ff00);
187
+ const bf = new BoxGeometry(0.3, 0.3, 0.3);
188
+ const ft = new MeshStandardMaterial({ color: 'blue', side: DoubleSide });
189
+ const f = new Mesh(bf, ft);
190
+ f.position.copy(middle);
191
+ f.lookAt(new Vector3().addVectors(middle, n1));
192
+ f.updateMatrix();
193
+ this._sceneService.scene.add(arrowHelper1, vertexHelper);
194
+ }
195
+ _createPlacementBoxTest(geometry, middle) {
196
+ const n1 = Utils.GetFaceNormalFromBufferGeometry(geometry, 0, 0);
197
+ const ad = new BoxGeometry(0.3, 0.3, 0.3);
198
+ const af = new MeshStandardMaterial({ color: 'blue', side: DoubleSide });
199
+ const ag = new Mesh(ad, af);
200
+ ag.position.copy(middle);
201
+ ag.lookAt(new Vector3().addVectors(middle, n1));
202
+ this._placementMatrix = ag.matrix;
203
+ ag.translateZ(-0.15);
204
+ ag.translateX(0.15);
205
+ ag.castShadow = true;
206
+ ag.visible = false;
207
+ return ag;
208
+ }
209
+ _setUVCoordinates(geometry, coordinates) {
210
+ const uvAttribute = geometry.getAttribute('uv');
211
+ coordinates.forEach((uvVector, index) => {
212
+ uvAttribute.setXY(index, uvVector.x, uvVector.y);
213
+ });
214
+ uvAttribute.needsUpdate = true;
215
+ }
216
+ _generateUVCoordinates(points, minX, minY, maxX, maxY) {
217
+ for (const point of points) {
218
+ point.x = (point.x - minX) / maxX;
219
+ point.y = (point.y - minY) / maxY;
220
+ }
221
+ return points;
222
+ }
223
+ _remapFloat(v, min0, max0, min1, max1) {
224
+ return min1 + (v - min0) / (max0 - min0) * (max1 - min1);
225
+ }
226
+ _prepareForNewImage() {
227
+ this._sceneService.scene.remove(this._meshGroup);
228
+ }
229
+ _resetCamera() {
230
+ this._cameraService.camera.position.set(0, 0, 4);
231
+ this._cameraService.camera.rotation.set(0, 0, 0);
232
+ this._cameraService.camera.fov = 45;
233
+ }
234
+ }
235
+ ThreedInPhotoBuildService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, deps: [{ token: i1.ThreedInPhotoConnectionService }, { token: i2.ThreedInPhotoSceneService }, { token: i3.ThreedInPhotoViewService }, { token: i4.ThreedInPhotoControlService }, { token: i5.FloorService }], target: i0.ɵɵFactoryTarget.Injectable });
236
+ ThreedInPhotoBuildService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, providedIn: 'root' });
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, decorators: [{
238
+ type: Injectable,
239
+ args: [{
240
+ providedIn: 'root'
241
+ }]
242
+ }], ctorParameters: function () { return [{ type: i1.ThreedInPhotoConnectionService }, { type: i2.ThreedInPhotoSceneService }, { type: i3.ThreedInPhotoViewService }, { type: i4.ThreedInPhotoControlService }, { type: i5.FloorService }]; } });
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWJ1aWxkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8tYnVpbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLEtBQUssRUFFTCxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBR2QsT0FBTyxFQUNSLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQU1qRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3JDLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQ1Usa0JBQWtELEVBQ2xELGFBQXdDLEVBQ3hDLGNBQXdDLEVBQ3hDLGVBQTRDLEVBQzVDLGFBQTJCO1FBSjNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZ0M7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBNkI7UUFDNUMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFwQnBCLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBU3hDLG1CQUFjLEdBQW1CLElBQUksY0FBYyxDQUFDLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUN0Rix1QkFBa0IsR0FBeUIsSUFBSSxvQkFBb0IsQ0FBQztZQUN6RSxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUQsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO0lBU0gsQ0FBQztJQUVZLGFBQWEsQ0FBQyxJQUFVOztZQUNuQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO3dCQUMzQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztxQkFDNUI7b0JBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ25ILElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILGs5RkFBazlGO1FBQ3A5RixDQUFDO0tBQUE7SUFFTyxlQUFlLENBQUMsYUFBMEIsRUFBRSxJQUFTLEVBQUUsYUFBMEIsRUFBRSxpQkFBMEIsS0FBSyxFQUFFLGdCQUF5QixLQUFLO1FBQ3hKLE1BQU0sU0FBUyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFDckMsU0FBUyxDQUFDLElBQUksR0FBRyw0QkFBNEIsQ0FBQztRQUU5QyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQTJCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbkUsTUFBTSxRQUFRLEdBQW1CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sV0FBVyxHQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUV0RSxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRWhELElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDL0Q7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVqQyxJQUFJLGFBQWEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDMUM7WUFFRCxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGdCQUEyQjtRQUN2RCxNQUFNLFFBQVEsR0FBbUIsSUFBSSxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RixNQUFNLGFBQWEsR0FBUSxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFFN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxNQUFNLEVBQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RSxNQUFNLEVBQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUVELE1BQU0sR0FBRyxHQUFpQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDL0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVoQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVUsRUFBRSxNQUFpQixFQUFFLE1BQVc7UUFDaEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVwQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN2QixLQUFLLENBQUMsR0FBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBRUYsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFTLEVBQUU7WUFDeEIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUU3QixJQUFJLElBQUksR0FBVyxRQUFRLENBQUM7WUFDNUIsSUFBSSxJQUFJLEdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDN0IsSUFBSSxJQUFJLEdBQVcsUUFBUSxDQUFDO1lBQzVCLElBQUksSUFBSSxHQUFXLENBQUMsUUFBUSxDQUFDO1lBRTdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDL0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMvQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RDO2FBQ0Y7WUFFRCxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTNCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDL0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2hDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckYsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuQyxNQUFNLGFBQWEsR0FBYyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDM0csSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFdkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDekUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyQyxDQUFDLENBQUEsQ0FBQztRQUVGLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVU7UUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVwQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQVMsRUFBRTtZQUM3QixNQUFNLE9BQU8sR0FBWSxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBUyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEYsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7WUFDbEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDakMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUVqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7WUFDeEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUU3QyxJQUFJLFdBQVcsR0FBRyxXQUFXLEVBQUU7Z0JBQzdCLGdDQUFnQztnQkFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzNCLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYztnQkFDcEIsV0FBVyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUTtnQkFDdEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUztnQkFDakQsR0FBRyxDQUFDLGVBQWU7aUJBQ3BCLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxpQ0FBaUM7Z0JBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUMzQixDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWM7Z0JBQ3BCLENBQUMsRUFBRSxXQUFXLEdBQUcsV0FBVyxFQUFFLFFBQVE7Z0JBQ3RDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVM7Z0JBQ2pELEdBQUcsQ0FBQyxlQUFlO2lCQUNwQixDQUFDO2FBQ0g7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3hELENBQUMsQ0FBQSxDQUFDO1FBRUYsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQWlCLEVBQUUsTUFBZTtRQUN2RCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsK0JBQStCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sRUFBRSxHQUFnQixJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sRUFBRSxHQUF5QixJQUFJLG9CQUFvQixDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLENBQUMsR0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBd0IsRUFBRSxNQUFlO1FBQ3ZFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxHQUFnQixJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sRUFBRSxHQUF5QixJQUFJLG9CQUFvQixDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLEVBQUUsR0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQixFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUF3QixFQUFFLFdBQXNCO1FBQ3hFLE1BQU0sV0FBVyxHQUFxQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xGLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFpQixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3ZELFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQWlCLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsSUFBSTtRQUM5RixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUMxQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbEMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFTLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsSUFBWTtRQUNuRixPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7O3VIQXZRVSx5QkFBeUI7MkhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFycm93SGVscGVyLFxyXG4gIEJveEdlb21ldHJ5LFxyXG4gIEJ1ZmZlckF0dHJpYnV0ZSxcclxuICBCdWZmZXJHZW9tZXRyeSxcclxuICBEb3VibGVTaWRlLFxyXG4gIEdyb3VwLFxyXG4gIE1hdHJpeDQsXHJcbiAgTWVzaCxcclxuICBNZXNoU3RhbmRhcmRNYXRlcmlhbCxcclxuICBOb0NvbG9yU3BhY2UsXHJcbiAgU2NlbmUsXHJcbiAgU2hhZG93TWF0ZXJpYWwsXHJcbiAgVGV4dHVyZSxcclxuICBWZWN0b3IyLFxyXG4gIFZlY3RvcjNcclxufSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCBEZWxhdW5hdG9yIGZyb20gJ2RlbGF1bmF0b3InO1xyXG5pbXBvcnQge1ZlcnRleE5vcm1hbHNIZWxwZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9oZWxwZXJzL1ZlcnRleE5vcm1hbHNIZWxwZXInO1xyXG5pbXBvcnQge0xpbmVhckZpbHRlcn0gZnJvbSAndGhyZWUvc3JjL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b0Nvbm5lY3Rpb25TZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9TY2VuZVNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXNjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9WaWV3U2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tdmlldy5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvQ29udHJvbFNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtNb2RlbE91dHB1dH0gZnJvbSAnLi4vbW9kZWxzL21vZGVsLW91dHB1dCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRocmVlZEluUGhvdG9CdWlsZFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RleHR1cmVNYXBTaXplOiBudW1iZXIgPSA1MTI7XHJcblxyXG4gIHByaXZhdGUgX2NhY2hlZE1vZGVsT3V0cHV0OiBNb2RlbE91dHB1dDtcclxuICBwcml2YXRlIF9wbGFjZW1lbnRNYXRyaXg6IE1hdHJpeDQ7XHJcbiAgcHJpdmF0ZSBfbWVzaEdyb3VwOiBHcm91cDtcclxuXHJcbiAgcHVibGljIGZsb29yTWVzaDogTWVzaDtcclxuICBwdWJsaWMgc2NlbmU6IFNjZW5lO1xyXG5cclxuICBwdWJsaWMgc2hhZG93TWF0ZXJpYWw6IFNoYWRvd01hdGVyaWFsID0gbmV3IFNoYWRvd01hdGVyaWFsKHtvcGFjaXR5OiAwLjQsIHNpZGU6IERvdWJsZVNpZGV9KTtcclxuICBwdWJsaWMgdmlzaWJpbGl0eU1hdGVyaWFsOiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbCh7XHJcbiAgICBjb2xvcjogJyMnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KSxcclxuICAgIHNpZGU6IERvdWJsZVNpZGVcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb25uZWN0aW9uU2VydmljZTogVGhyZWVkSW5QaG90b0Nvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2FtZXJhU2VydmljZTogVGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29udHJvbFNlcnZpY2U6IFRocmVlZEluUGhvdG9Db250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yU2VydmljZTogRmxvb3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVTY2VuZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5yZXF1ZXN0U2NlbmVQYXJhbWV0ZXJzKGZpbGUpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jYWNoZWRNb2RlbE91dHB1dCkge1xyXG4gICAgICAgICAgdGhpcy5fcHJlcGFyZUZvck5ld0ltYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NhY2hlZE1vZGVsT3V0cHV0ID0gTW9kZWxPdXRwdXQuT2JqZWN0VG9Nb2RlbE91dHB1dChyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZVNjZW5lQmFja2dyb3VuZChmaWxlKTtcclxuICAgICAgICB0aGlzLl9nZW5lcmF0ZU1lc2hlcyhbdGhpcy5fY2FjaGVkTW9kZWxPdXRwdXQucG9seWdvbnMzRC5mbG9vcl0sIGZpbGUsIFt0aGlzLl9jYWNoZWRNb2RlbE91dHB1dC5wb2x5Z29uczJELmZsb29yXSk7XHJcbiAgICAgICAgdGhpcy5fY29udHJvbFNlcnZpY2UucGxhY2VDdXN0b21GbG9vckl0ZW1zKHRoaXMuX3BsYWNlbWVudE1hdHJpeCk7XHJcbiAgICAgICAgdGhpcy5fcmVzZXRDYW1lcmEoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy5fY2FjaGVkTW9kZWxPdXRwdXQgPSBNb2RlbE91dHB1dC5PYmplY3RUb01vZGVsT3V0cHV0KHtcImxheW91dF8yZFwiOntcImNlaWxpbmdcIjpbWzUzMC45MTA1NjAzOTkyOTM5LDAuMzExODA1NTc2MDg2MDQ0M10sWzQ3LjAzMDg2MDU3MzA1MzM2LDAuMzExODA1NTc2MDg2MDQ0M10sWzIyMy45MjMwNTI1NzkxNjQ1LDExNi4zMDM0Nzk4ODAwOTQ1M10sWzQ0OC41NDgwNTgzMDEyMTA0LDEwNS4wNzg0NzkxNDA5OTY5NF1dLFwiZmxvb3JcIjpbWzExLjQ2NTIzNDY2NzA2Mjc2LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU1OC4wNTI3NDg1OTA3MDc4LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU0MS4yMDU4NzMxNjE1NTQzLDQ2My4wMzEyODA0ODc3NzU4XSxbNDQ4LjU0ODA1ODMwMTIxMDQsMzMyLjA3MjkzODUzMTYzNzJdLFsyMjQuODU4OTkwMTAzMDA2MzcsMzE5LjYwMDcxNTQ4ODE5NTRdXSxcIndhbGxzXCI6W1tbNDcuMDMwODYwNTczMDUzMzYsMC4zMTE4MDU1NzYwODYwNDQzXSxbMC4yMzM5ODQzODA5NjA0NjQ0OSwwLjMxMTgwNTU3NjA4NjA0NDNdLFswLjIzMzk4NDM4MDk2MDQ2NDQ5LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzExLjQ2NTIzNDY2NzA2Mjc2LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzIyNC44NTg5OTAxMDMwMDYzNywzMTkuNjAwNzE1NDg4MTk1NF0sWzIyMy45MjMwNTI1NzkxNjQ1LDExNi4zMDM0Nzk4ODAwOTQ1M11dLFtbMjIzLjkyMzA1MjU3OTE2NDUsMTE2LjMwMzQ3OTg4MDA5NDUzXSxbMjI0Ljg1ODk5MDEwMzAwNjM3LDMxOS42MDA3MTU0ODgxOTU0XSxbNDQ4LjU0ODA1ODMwMTIxMDQsMzMyLjA3MjkzODUzMTYzNzJdLFs0NDguNTQ4MDU4MzAxMjEwNCwxMDUuMDc4NDc5MTQwOTk2OTRdXSxbWzUzOC4zOTgwNjA1OTAwMjg4LDAuMzExODA1NTc2MDg2MDQ0M10sWzUzMC45MTA1NjAzOTkyOTM5LDAuMzExODA1NTc2MDg2MDQ0M10sWzQ0OC41NDgwNTgzMDEyMTA0LDEwNS4wNzg0NzkxNDA5OTY5NF0sWzQ0OC41NDgwNTgzMDEyMTA0LDMzMi4wNzI5Mzg1MzE2MzcyXSxbNTQxLjIwNTg3MzE2MTU1NDMsNDYzLjAzMTI4MDQ4Nzc3NThdXSxbWzU1OC4wNTI3NDg1OTA3MDc4LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU5OC4yOTgwNjIxMTU5MDc3LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU5OC4yOTgwNjIxMTU5MDc3LDAuMzExODA1NTc2MDg2MDQ0M10sWzUzOC4zOTgwNjA1OTAwMjg4LDAuMzExODA1NTc2MDg2MDQ0M10sWzU0MS4yMDU4NzMxNjE1NTQzLDQ2My4wMzEyODA0ODc3NzU4XV1dfSxcImxheW91dF8zZFwiOntcImNlaWxpbmdcIjpbWzEuMzg3MjQzNjc2ODQ3ODgxNiwtMS40MTI3MDM1MTY0MTcwNzk2LC0xLjM3MTkwNjMzNDgyNDAzMjZdLFstMi43NTI1Nzg0NDg1ODY5OTQsLTEuNDE1ODQ1MTU4MDMzOTAwOSwtMS4zNjUyNDczMDM5MDk3MjZdLFstMi4wNDc1MzgxMTI5MzE3ODE3LC0xLjU0MDQ5ODEzOTc5MjAxODYsMi40NTYyNTAxMzY0Mjg0MDldLFsxLjk2NzQ2NDAxODUzMDMxNTcsLTEuNTEyOTAyMTQyOTM1MzI5LDEuNzAwMTgxOTA2NzUzMTE1OV1dLFwiZmxvb3JcIjpbWy0yLjc5ODMxMjYxNTY4NTk5MywxLjQ4MzIyMzY3NDM2MzU2LC0xLjY4NTcyNTk4MTY1OTM1OThdLFsxLjM1OTQ2NjgzOTQ5ODk0MzYsMS40NTk1NDIxNTI5NDc4NDk3LC0xLjczMDExNzg1MjE1ODAxN10sWzEuMzQzMjk0MTkyMDIyNzQ3MywxLjQ1Njk1MzQwNDAxNTk2NDksLTEuNTY2NTQ1NTQwNzU2NjQ5OF0sWzEuOTQ5Mzk2MTgxNzY4ODQxLDEuNDAwNTA0OTQ0MzkwNzIwOCwxLjY1Njk1NTE4Nzg1MDUyOF0sWy0yLjAzODk4MTc0Njk2NDk4NDksMS40MTAwNjE1OTU1MDYxMzgyLDIuNTAxNTg2ODU5NzU2MDQ1N11dLFwid2FsbHNcIjpbW1stMi43NDk5NjM5NTA0NDg1NjY0LC0xLjQxNDEwMzAzMzQ3NjQwNTgsLTEuMzY4OTM5OTMwODYyODUxXSxbLTIuODIwMzM0ODYzMDAwNDQ2LC0xLjIyODYyOTExNDU2MTYxMDksLTEuNzYyMDcyMzc5MDU5MjYyXSxbLTIuODA0MDgyMTA2ODgxNjcxOSwxLjQzMjE2NDU0NzUwOTYxNzMsLTEuNzgxNDM4NDA0OTgzOTQ0N10sWy0yLjc4ODQ5OTU0NTM4ODc1MTksMS40NzY3NDI4NjEzMzcxMzE5LC0xLjY5Nzg3NDYwMDM1NzQ3OTldLFstMi4wMzAyMzkwNTY4Nzg2MiwxLjQwMTcwMjUyMDkxMzU0NzksMi40NTk4MTg3ODU3MjA0MDFdLFstMi4wNTAzNjEzNDY1MzYyMTI5LC0xLjU0MzUzMTE4MTc0NjA1OSwyLjQ2OTU3MTA1OTI3OTk3MTVdXSxbWy0yLjA1NjM2NDEzMDMxMTU0MjUsLTEuNTQ5OTgwMDQ2NjgyODg3OCwyLjQ5Nzg5Mzc1NTk2NTc2MjVdLFstMi4wMjg4NTI3NzIwNTA0MzQsMS40MDAzNzcxNTIwMzIzMjIzLDIuNDUzMTk1OTk0NDMwMTE4XSxbMS45NDcxMzA5NjY4NDg3OTcsMS4zOTkyNzgwNDIzODI2NjQsMS42NTE1MzU0NTY3MTAzOTEzXSxbMS45NjIwMTExNDcyMDc2ODM4LC0xLjUwOTYyMzUyOTg0NDgxNCwxLjY4NzEzNTY0MjEwNDY3ODRdXSxbWzEuMzU4NDk1MjgzNzg5MTA0NywtMS4zNDczOTg2NDEwNDMyMzkzLC0xLjUxMDMyNzE1NTA2MDIzODddLFsxLjM4MzczNDc1MTQwOTk1NDMsLTEuNDEwMTUyNTU2ODI5OTgyNSwtMS4zNzczMTM0Mjk3Nzk0NzddLFsxLjk2NjYxMzgxNzg3NzIzOTUsLTEuNTEyMzkwOTczNTAxNzM1NCwxLjY5ODE0NzcxOTQzNjIyMTRdLFsxLjk2Mzg3MTA1MDU0MzI1NSwxLjQwODM0NDUwNDg5OTQ0ODgsMS42OTE1ODU0ODY0NjUwM10sWzEuMzQ3NjA1NjM0Mzk3OTMwNCwxLjQ2MDE0NjMwNTYyNzI5MywtMS41NjAxODQ3NzE0ODQ3OTkyXV0sW1sxLjM2NTQ1NzIyNTUwODE1OTksMS40NjM5NDk2NzgwMTA0MTA3LC0xLjcyMTg1NTkzMzEzNjQxMDZdLFsxLjQwNTk2NTYxNDk4MTEyMTMsMS4yOTU5MjQxODQzODg1ODQ1LC0yLjAzNjgyNjE4ODAzNDQ4Ml0sWzEuNDE5Nzg4NDA4OTQxNjkyNiwtMS4xMDY3ODcyMDcwNjAzOTAyLC0yLjAyMDMyOTc2ODEyNzg2NTddLFsxLjM1NzcyNjg2MDcwODY2MDQsLTEuMzQ2ODU3NTUwMDc3OTY4MywtMS41MTE0NzQxODY4NDQyOTYzXSxbMS4zNDU2MzM3OTM1Mzk0NzA5LDEuNDU4Njg1OTkxODMwMjk2LC0xLjU2MzA5Mzk1NDk4Njk5NjVdXV19fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZU1lc2hlcyhjb29yZGluYXRlczNEOiBWZWN0b3IzW11bXSwgZmlsZTogYW55LCBjb29yZGluYXRlczJEOiBWZWN0b3IyW11bXSwgY3JlYXRlVGV4dHVyZXM6IGJvb2xlYW4gPSBmYWxzZSwgY3JlYXRlSGVscGVyczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBtZXNoR3JvdXA6IEdyb3VwID0gbmV3IEdyb3VwKCk7XHJcbiAgICBtZXNoR3JvdXAubmFtZSA9ICd0aHJlZWQtaW4tcGhvdG8tbWVzaC1ncm91cCc7XHJcblxyXG4gICAgY29vcmRpbmF0ZXMzRC5mb3JFYWNoKChwb3NpdGlvblZlcnRpY2VzOiBWZWN0b3IzW10sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5ID0gdGhpcy5fY3JlYXRlR2VvbWV0cnlBbmRVdnMocG9zaXRpb25WZXJ0aWNlcyk7XHJcbiAgICAgIGNvbnN0IHBvbHlnb25NZXNoOiBNZXNoID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMudmlzaWJpbGl0eU1hdGVyaWFsKTtcclxuXHJcbiAgICAgIHBvbHlnb25NZXNoLnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZsb29yTWVzaCA9IHBvbHlnb25NZXNoO1xyXG4gICAgICB0aGlzLl9mbG9vclNlcnZpY2UuZ3JvdW5kUGxhbmUgPSB0aGlzLmZsb29yTWVzaDtcclxuXHJcbiAgICAgIGlmIChjcmVhdGVUZXh0dXJlcykge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRleHR1cmVzKGZpbGUsIGNvb3JkaW5hdGVzMkRbaW5kZXhdLCBwb2x5Z29uTWVzaCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG1pZGRsZSA9IG5ldyBWZWN0b3IzKCk7XHJcbiAgICAgIHBvc2l0aW9uVmVydGljZXMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIG1pZGRsZS5hZGQodik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBtaWRkbGUubXVsdGlwbHlTY2FsYXIoMSAvIHBvc2l0aW9uVmVydGljZXMubGVuZ3RoKTtcclxuICAgICAgcG9seWdvbk1lc2gubG9jYWxUb1dvcmxkKG1pZGRsZSk7XHJcblxyXG4gICAgICBpZiAoY3JlYXRlSGVscGVycykge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUhlbHBlcnMocG9seWdvbk1lc2gsIG1pZGRsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1lc2hHcm91cC5hZGQocG9seWdvbk1lc2gsIHRoaXMuX2NyZWF0ZVBsYWNlbWVudEJveFRlc3QoZ2VvbWV0cnksIG1pZGRsZSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fbWVzaEdyb3VwID0gbWVzaEdyb3VwO1xyXG4gICAgbWVzaEdyb3VwLnNjYWxlLnNldCgxLCAtMSwgLTEpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnNjZW5lLmFkZChtZXNoR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlR2VvbWV0cnlBbmRVdnMocG9zaXRpb25WZXJ0aWNlczogVmVjdG9yM1tdKTogQnVmZmVyR2VvbWV0cnkge1xyXG4gICAgY29uc3QgZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5ID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyhwb3NpdGlvblZlcnRpY2VzKTtcclxuICAgIGNvbnN0IGluZGV4RGVsYXVuYXk6IGFueSA9IERlbGF1bmF0b3IuZnJvbShwb3NpdGlvblZlcnRpY2VzLm1hcCh2ID0+IFt2LngsIHYuel0pKTtcclxuICAgIGNvbnN0IG1lc2hJbmRleDogbnVtYmVyW10gPSBbXTtcclxuICAgIGNvbnN0IHF1YWRVdnM6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleERlbGF1bmF5LnRyaWFuZ2xlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBtZXNoSW5kZXgucHVzaChpbmRleERlbGF1bmF5LnRyaWFuZ2xlc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWluWDogbnVtYmVyID0gTWF0aC5taW4oLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueCkpO1xyXG4gICAgY29uc3QgbWF4WDogbnVtYmVyID0gTWF0aC5tYXgoLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueCkpO1xyXG4gICAgY29uc3QgbWluWTogbnVtYmVyID0gTWF0aC5taW4oLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueikpO1xyXG4gICAgY29uc3QgbWF4WTogbnVtYmVyID0gTWF0aC5tYXgoLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueikpO1xyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9zaXRpb25WZXJ0aWNlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICBjb25zdCBxeDogbnVtYmVyID0gdGhpcy5fcmVtYXBGbG9hdChwb3NpdGlvblZlcnRpY2VzW2pdLngsIG1pblgsIG1heFgsIDEsIDApO1xyXG4gICAgICBjb25zdCBxejogbnVtYmVyID0gdGhpcy5fcmVtYXBGbG9hdChwb3NpdGlvblZlcnRpY2VzW2pdLnosIG1pblksIG1heFksIDAsIDEpO1xyXG4gICAgICBxdWFkVXZzLnB1c2goLi4uW3F4LCBxel0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHV2czogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShxdWFkVXZzKTtcclxuXHJcbiAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3V2JywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSh1dnMsIDIpKTtcclxuICAgIGdlb21ldHJ5LmdldEF0dHJpYnV0ZSgndXYnKS5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICBnZW9tZXRyeS5zZXRJbmRleChtZXNoSW5kZXgpO1xyXG4gICAgZ2VvbWV0cnkuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvbWV0cnk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVUZXh0dXJlcyhmaWxlOiBGaWxlLCBwb2ludHM6IFZlY3RvcjJbXSwgb2JqZWN0OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGltYWdlLnNyYyA9IDxzdHJpbmc+ZmlsZVJlYWRlci5yZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGltYWdlLm9ubG9hZCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2Uud2lkdGg7XHJcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgbWluWDogbnVtYmVyID0gSW5maW5pdHk7XHJcbiAgICAgIGxldCBtYXhYOiBudW1iZXIgPSAtSW5maW5pdHk7XHJcbiAgICAgIGxldCBtaW5ZOiBudW1iZXIgPSBJbmZpbml0eTtcclxuICAgICAgbGV0IG1heFk6IG51bWJlciA9IC1JbmZpbml0eTtcclxuXHJcbiAgICAgIGN0eC5zYXZlKCk7XHJcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgICAgY3R4Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtaW5YID0gcG9pbnRzW2ldLnggPCBtaW5YID8gcG9pbnRzW2ldLnggOiBtaW5YO1xyXG4gICAgICAgIG1heFggPSBwb2ludHNbaV0ueCA+IG1heFggPyBwb2ludHNbaV0ueCA6IG1heFg7XHJcbiAgICAgICAgbWluWSA9IHBvaW50c1tpXS55IDwgbWluWSA/IHBvaW50c1tpXS55IDogbWluWTtcclxuICAgICAgICBtYXhZID0gcG9pbnRzW2ldLnkgPiBtYXhZID8gcG9pbnRzW2ldLnkgOiBtYXhZO1xyXG4gICAgICAgIGlmIChpICE9PSAwKSB7XHJcbiAgICAgICAgICBjdHgubGluZVRvKHBvaW50c1tpXS54LCBwb2ludHNbaV0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHguY2xvc2VQYXRoKCk7XHJcbiAgICAgIGN0eC5jbGlwKCk7XHJcbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG5cclxuICAgICAgY29uc3QgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjb25zdCBjeCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgYy53aWR0aCA9IHRoaXMuX3RleHR1cmVNYXBTaXplO1xyXG4gICAgICBjLmhlaWdodCA9IHRoaXMuX3RleHR1cmVNYXBTaXplO1xyXG4gICAgICBjeC5zY2FsZSh0aGlzLl90ZXh0dXJlTWFwU2l6ZSAvIChtYXhYIC0gbWluWCksIHRoaXMuX3RleHR1cmVNYXBTaXplIC8gKG1heFkgLSBtaW5ZKSk7XHJcbiAgICAgIGN4LmRyYXdJbWFnZShjYW52YXMsIC1taW5YLCAtbWluWSk7XHJcblxyXG4gICAgICBjb25zdCB1dkNvb3JkaW5hdGVzOiBWZWN0b3IyW10gPSB0aGlzLl9nZW5lcmF0ZVVWQ29vcmRpbmF0ZXMocG9pbnRzLCBtaW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpO1xyXG4gICAgICB0aGlzLl9zZXRVVkNvb3JkaW5hdGVzKG9iamVjdC5nZW9tZXRyeSwgdXZDb29yZGluYXRlcyk7XHJcblxyXG4gICAgICBvYmplY3QubWF0ZXJpYWwubWFwID0gYXdhaXQgVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYy50b0RhdGFVUkwoKSk7XHJcbiAgICAgIG9iamVjdC5tYXRlcmlhbC5jb2xvciA9IHVuZGVmaW5lZDtcclxuICAgICAgb2JqZWN0Lm1hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlU2NlbmVCYWNrZ3JvdW5kKGZpbGU6IEZpbGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0dXJlOiBUZXh0dXJlID0gYXdhaXQgVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoPHN0cmluZz5maWxlUmVhZGVyLnJlc3VsdCk7XHJcbiAgICAgIHRleHR1cmUuZmxpcFkgPSB0cnVlO1xyXG4gICAgICB0ZXh0dXJlLmNvbG9yU3BhY2UgPSBOb0NvbG9yU3BhY2U7XHJcbiAgICAgIHRleHR1cmUubWluRmlsdGVyID0gTGluZWFyRmlsdGVyO1xyXG4gICAgICB0ZXh0dXJlLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHNjZW5lV2lkdGggPSB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIuZG9tRWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgY29uc3Qgc2NlbmVIZWlnaHQgPSB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IGltYWdlQXNwZWN0ID0gdGV4dHVyZS5pbWFnZS53aWR0aCAvIHRleHR1cmUuaW1hZ2UuaGVpZ2h0O1xyXG4gICAgICBjb25zdCBzY2VuZUFzcGVjdCA9IHNjZW5lV2lkdGggLyBzY2VuZUhlaWdodDtcclxuXHJcbiAgICAgIGlmIChpbWFnZUFzcGVjdCA+IHNjZW5lQXNwZWN0KSB7XHJcbiAgICAgICAgLy8gSW1hZ2UgaXMgd2lkZXIgdGhhbiB0aGUgc2NlbmVcclxuICAgICAgICB0ZXh0dXJlLm1hdHJpeC5zZXRVdlRyYW5zZm9ybShcclxuICAgICAgICAgIDAsIDAsIC8vIFRyYW5zbGF0aW9uXHJcbiAgICAgICAgICBzY2VuZUFzcGVjdCAvIGltYWdlQXNwZWN0LCAxLCAvLyBTY2FsZVxyXG4gICAgICAgICAgMCwgKDEgLSBzY2VuZUFzcGVjdCAvIGltYWdlQXNwZWN0KSAvIDIsIC8vIE9mZnNldFxyXG4gICAgICAgICAgMC41IC8vIENlbnRlciBwb2ludFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSW1hZ2UgaXMgdGFsbGVyIHRoYW4gdGhlIHNjZW5lXHJcbiAgICAgICAgdGV4dHVyZS5tYXRyaXguc2V0VXZUcmFuc2Zvcm0oXHJcbiAgICAgICAgICAwLCAwLCAvLyBUcmFuc2xhdGlvblxyXG4gICAgICAgICAgMSwgaW1hZ2VBc3BlY3QgLyBzY2VuZUFzcGVjdCwgLy8gU2NhbGVcclxuICAgICAgICAgIDAsICgxIC0gaW1hZ2VBc3BlY3QgLyBzY2VuZUFzcGVjdCkgLyAyLCAvLyBPZmZzZXRcclxuICAgICAgICAgIDAuNSAvLyBDZW50ZXIgcG9pbnRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUuYmFja2dyb3VuZCA9IHRleHR1cmU7XHJcbiAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZVdpZHRoID0gdGV4dHVyZS5pbWFnZS53aWR0aDtcclxuICAgICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnNjZW5lSGVpZ2h0ID0gdGV4dHVyZS5pbWFnZS5oZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUhlbHBlcnMocG9seWdvbk1lc2g6IE1lc2gsIG1pZGRsZTogVmVjdG9yMyk6IHZvaWQge1xyXG4gICAgY29uc3QgbjEgPSBVdGlscy5HZXRGYWNlTm9ybWFsRnJvbUJ1ZmZlckdlb21ldHJ5KHBvbHlnb25NZXNoLmdlb21ldHJ5LCAwLCAwKTtcclxuICAgIGNvbnN0IGFycm93SGVscGVyMSA9IG5ldyBBcnJvd0hlbHBlcihuMSwgbWlkZGxlLCAxLCAweGZmZmYwMCk7XHJcbiAgICBjb25zdCB2ZXJ0ZXhIZWxwZXIgPSBuZXcgVmVydGV4Tm9ybWFsc0hlbHBlcihwb2x5Z29uTWVzaCwgMiwgMHgwMGZmMDApO1xyXG5cclxuICAgIGNvbnN0IGJmOiBCb3hHZW9tZXRyeSA9IG5ldyBCb3hHZW9tZXRyeSgwLjMsIDAuMywgMC4zKTtcclxuICAgIGNvbnN0IGZ0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbCh7Y29sb3I6ICdibHVlJywgc2lkZTogRG91YmxlU2lkZX0pO1xyXG4gICAgY29uc3QgZjogTWVzaCA9IG5ldyBNZXNoKGJmLCBmdCk7XHJcblxyXG4gICAgZi5wb3NpdGlvbi5jb3B5KG1pZGRsZSk7XHJcbiAgICBmLmxvb2tBdChuZXcgVmVjdG9yMygpLmFkZFZlY3RvcnMobWlkZGxlLCBuMSkpO1xyXG4gICAgZi51cGRhdGVNYXRyaXgoKTtcclxuXHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUuYWRkKGFycm93SGVscGVyMSwgdmVydGV4SGVscGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVBsYWNlbWVudEJveFRlc3QoZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5LCBtaWRkbGU6IFZlY3RvcjMpOiBNZXNoIHtcclxuICAgIGNvbnN0IG4xID0gVXRpbHMuR2V0RmFjZU5vcm1hbEZyb21CdWZmZXJHZW9tZXRyeShnZW9tZXRyeSwgMCwgMCk7XHJcbiAgICBjb25zdCBhZDogQm94R2VvbWV0cnkgPSBuZXcgQm94R2VvbWV0cnkoMC4zLCAwLjMsIDAuMyk7XHJcbiAgICBjb25zdCBhZjogTWVzaFN0YW5kYXJkTWF0ZXJpYWwgPSBuZXcgTWVzaFN0YW5kYXJkTWF0ZXJpYWwoe2NvbG9yOiAnYmx1ZScsIHNpZGU6IERvdWJsZVNpZGV9KTtcclxuICAgIGNvbnN0IGFnOiBNZXNoID0gbmV3IE1lc2goYWQsIGFmKTtcclxuICAgIGFnLnBvc2l0aW9uLmNvcHkobWlkZGxlKTtcclxuICAgIGFnLmxvb2tBdChuZXcgVmVjdG9yMygpLmFkZFZlY3RvcnMobWlkZGxlLCBuMSkpO1xyXG4gICAgdGhpcy5fcGxhY2VtZW50TWF0cml4ID0gYWcubWF0cml4O1xyXG4gICAgYWcudHJhbnNsYXRlWigtMC4xNSk7XHJcbiAgICBhZy50cmFuc2xhdGVYKDAuMTUpO1xyXG4gICAgYWcuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICBhZy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICByZXR1cm4gYWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRVVkNvb3JkaW5hdGVzKGdlb21ldHJ5OiBCdWZmZXJHZW9tZXRyeSwgY29vcmRpbmF0ZXM6IFZlY3RvcjJbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXZBdHRyaWJ1dGU6IEJ1ZmZlckF0dHJpYnV0ZSA9IDxCdWZmZXJBdHRyaWJ1dGU+Z2VvbWV0cnkuZ2V0QXR0cmlidXRlKCd1dicpO1xyXG4gICAgY29vcmRpbmF0ZXMuZm9yRWFjaCgodXZWZWN0b3I6IFZlY3RvcjIsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgdXZBdHRyaWJ1dGUuc2V0WFkoaW5kZXgsIHV2VmVjdG9yLngsIHV2VmVjdG9yLnkpO1xyXG4gICAgfSk7XHJcbiAgICB1dkF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZVVWQ29vcmRpbmF0ZXMocG9pbnRzOiBWZWN0b3IyW10sIG1pblg6IG51bWJlciwgbWluWTogbnVtYmVyLCBtYXhYOiBudW1iZXIsIG1heFkpOiBWZWN0b3IyW10ge1xyXG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBwb2ludHMpIHtcclxuICAgICAgcG9pbnQueCA9IChwb2ludC54IC0gbWluWCkgLyBtYXhYO1xyXG4gICAgICBwb2ludC55ID0gKHBvaW50LnkgLSBtaW5ZKSAvIG1heFk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtYXBGbG9hdCh2OiBudW1iZXIsIG1pbjA6IG51bWJlciwgbWF4MDogbnVtYmVyLCBtaW4xOiBudW1iZXIsIG1heDE6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG1pbjEgKyAodiAtIG1pbjApIC8gKG1heDAgLSBtaW4wKSAqIChtYXgxIC0gbWluMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRm9yTmV3SW1hZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUucmVtb3ZlKHRoaXMuX21lc2hHcm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldENhbWVyYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCA0KTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLnJvdGF0aW9uLnNldCgwLCAwLCAwKTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLmZvdiA9IDQ1O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,50 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Injectable } from '@angular/core';
11
+ import axios from 'axios';
12
+ import * as i0 from "@angular/core";
13
+ export class ThreedInPhotoConnectionService {
14
+ constructor() {
15
+ this.endpointURL = 'https://3d.enbisys.com:28000/room_layout';
16
+ }
17
+ requestSceneParameters(file) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const data = new FormData();
20
+ data.append('file', file);
21
+ return new Promise((resolve, reject) => {
22
+ axios.post(this.endpointURL, data, {
23
+ headers: {
24
+ accept: 'application/json',
25
+ 'Content-Type': 'multipart/form-data',
26
+ }
27
+ }).then(response => {
28
+ if (response.status === 200) {
29
+ resolve(response.data);
30
+ }
31
+ else {
32
+ reject();
33
+ }
34
+ }).catch(e => {
35
+ console.log(e);
36
+ reject();
37
+ });
38
+ });
39
+ });
40
+ }
41
+ }
42
+ ThreedInPhotoConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
43
+ ThreedInPhotoConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, providedIn: 'root' });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root'
48
+ }]
49
+ }], ctorParameters: function () { return []; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWNvbm5lY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvdGhyZWVkLWluLXBob3RvL3NlcnZpY2VzL3RocmVlZC1pbi1waG90by1jb25uZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBSzFCLE1BQU0sT0FBTyw4QkFBOEI7SUFJekM7UUFGTyxnQkFBVyxHQUFXLDBDQUEwQyxDQUFDO0lBRXhELENBQUM7SUFFSixzQkFBc0IsQ0FBQyxJQUFVOztZQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTFCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtnQkFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRTtvQkFDakMsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxrQkFBa0I7d0JBQzFCLGNBQWMsRUFBRSxxQkFBcUI7cUJBQ3RDO2lCQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2pCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7d0JBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLE1BQU0sRUFBRSxDQUFDO3FCQUNWO2dCQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNmLE1BQU0sRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7OzRIQTNCVSw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvQ29ubmVjdGlvblNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgZW5kcG9pbnRVUkw6IHN0cmluZyA9ICdodHRwczovLzNkLmVuYmlzeXMuY29tOjI4MDAwL3Jvb21fbGF5b3V0JztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlcXVlc3RTY2VuZVBhcmFtZXRlcnMoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGF4aW9zLnBvc3QodGhpcy5lbmRwb2ludFVSTCwgZGF0YSwge1xyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,33 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { CustomFloorItem } from '../../core3d/items/custom-floor-item';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./threed-in-photo-view.service";
5
+ import * as i2 from "./threed-in-photo-render.service";
6
+ import * as i3 from "./threed-in-photo-scene.service";
7
+ export class ThreedInPhotoControlService {
8
+ constructor(_cameraService, _renderService, _sceneService) {
9
+ this._cameraService = _cameraService;
10
+ this._renderService = _renderService;
11
+ this._sceneService = _sceneService;
12
+ }
13
+ placeCustomFloorItems(placementMatrix) {
14
+ this._sceneService.scene.children.forEach((child) => {
15
+ if (child instanceof CustomFloorItem) {
16
+ child.position.set(0, 0, 0);
17
+ child.applyMatrix4(placementMatrix);
18
+ child.position.y = -child.position.y;
19
+ // child.translateY((<CustomFloorItem>child).halfSize.y);
20
+ // child.translateY(-Math.abs(child.position.y * 2));
21
+ }
22
+ });
23
+ }
24
+ }
25
+ ThreedInPhotoControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, deps: [{ token: i1.ThreedInPhotoViewService }, { token: i2.ThreedInPhotoRenderService }, { token: i3.ThreedInPhotoSceneService }], target: i0.ɵɵFactoryTarget.Injectable });
26
+ ThreedInPhotoControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, decorators: [{
28
+ type: Injectable,
29
+ args: [{
30
+ providedIn: 'root'
31
+ }]
32
+ }], ctorParameters: function () { return [{ type: i1.ThreedInPhotoViewService }, { type: i2.ThreedInPhotoRenderService }, { type: i3.ThreedInPhotoSceneService }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWNvbnRyb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvdGhyZWVkLWluLXBob3RvL3NlcnZpY2VzL3RocmVlZC1pbi1waG90by1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUt6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3JFLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFDVSxjQUF3QyxFQUN4QyxjQUEwQyxFQUMxQyxhQUF3QztRQUZ4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtJQUM5QyxDQUFDO0lBRUUscUJBQXFCLENBQUMsZUFBd0I7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xELElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDckMseURBQXlEO2dCQUN6RCxxREFBcUQ7YUFDdEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lIQWxCVSwyQkFBMkI7NkhBQTNCLDJCQUEyQixjQUYxQixNQUFNOzRGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdHJpeDR9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvVmlld1NlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXZpZXcuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDdXN0b21GbG9vckl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tZmxvb3ItaXRlbSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvQ29udHJvbFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NhbWVyYVNlcnZpY2U6IFRocmVlZEluUGhvdG9WaWV3U2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlclNlcnZpY2U6IFRocmVlZEluUGhvdG9SZW5kZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIHBsYWNlQ3VzdG9tRmxvb3JJdGVtcyhwbGFjZW1lbnRNYXRyaXg6IE1hdHJpeDQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBDdXN0b21GbG9vckl0ZW0pIHtcclxuICAgICAgICBjaGlsZC5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XHJcbiAgICAgICAgY2hpbGQuYXBwbHlNYXRyaXg0KHBsYWNlbWVudE1hdHJpeCk7XHJcbiAgICAgICAgY2hpbGQucG9zaXRpb24ueSA9IC1jaGlsZC5wb3NpdGlvbi55O1xyXG4gICAgICAgIC8vIGNoaWxkLnRyYW5zbGF0ZVkoKDxDdXN0b21GbG9vckl0ZW0+Y2hpbGQpLmhhbGZTaXplLnkpO1xyXG4gICAgICAgIC8vIGNoaWxkLnRyYW5zbGF0ZVkoLU1hdGguYWJzKGNoaWxkLnBvc2l0aW9uLnkgKiAyKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { UploadImageComponent } from '../components/upload-image/upload-image.component';
3
+ import { ViewControlComponent } from '../components/view-control/view-control.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./threed-in-photo-event.service";
6
+ import * as i2 from "@angular/material/dialog";
7
+ export class ThreedInPhotoEventListenersService {
8
+ constructor(_eventService, _dialog) {
9
+ this._eventService = _eventService;
10
+ this._dialog = _dialog;
11
+ this._subs = [];
12
+ this._subs.push(this._eventService.showUploadImageDialog.subscribe(() => this.openUploadImageDialog()), this._eventService.showViewControlDialog.subscribe(() => this.openViewControlDialog()));
13
+ }
14
+ ngOnDestroy() {
15
+ this._subs.forEach(s => s.unsubscribe());
16
+ }
17
+ openUploadImageDialog() {
18
+ this._dialog.open(UploadImageComponent, {
19
+ width: '400px'
20
+ });
21
+ }
22
+ openViewControlDialog() {
23
+ this._dialog.open(ViewControlComponent, {
24
+ hasBackdrop: false
25
+ });
26
+ }
27
+ }
28
+ ThreedInPhotoEventListenersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, deps: [{ token: i1.ThreedInPhotoEventService }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ ThreedInPhotoEventListenersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, providedIn: 'root' });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, decorators: [{
31
+ type: Injectable,
32
+ args: [{
33
+ providedIn: 'root'
34
+ }]
35
+ }], ctorParameters: function () { return [{ type: i1.ThreedInPhotoEventService }, { type: i2.MatDialog }]; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWV2ZW50LWxpc3RlbmVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy90aHJlZWQtaW4tcGhvdG8vc2VydmljZXMvdGhyZWVkLWluLXBob3RvLWV2ZW50LWxpc3RlbmVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbURBQW1ELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLGtDQUFrQztJQUkzQyxZQUNZLGFBQXdDLEVBQ3hDLE9BQWtCO1FBRGxCLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4QyxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBSnRCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBTS9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNYLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQ3RGLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQ3pGLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNwQyxLQUFLLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0scUJBQXFCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLFdBQVcsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztJQUNQLENBQUM7O2dJQTVCUSxrQ0FBa0M7b0lBQWxDLGtDQUFrQyxjQUYvQixNQUFNOzRGQUVULGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VXBsb2FkSW1hZ2VDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1ZpZXdDb250cm9sQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL3ZpZXctY29udHJvbC92aWV3LWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvRXZlbnRTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhyZWVkSW5QaG90b0V2ZW50TGlzdGVuZXJzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9ldmVudFNlcnZpY2U6IFRocmVlZEluUGhvdG9FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2dcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dVcGxvYWRJbWFnZURpYWxvZy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuVXBsb2FkSW1hZ2VEaWFsb2coKSksXHJcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93Vmlld0NvbnRyb2xEaWFsb2cuc3Vic2NyaWJlKCgpID0+IHRoaXMub3BlblZpZXdDb250cm9sRGlhbG9nKCkpLFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuVXBsb2FkSW1hZ2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oVXBsb2FkSW1hZ2VDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgd2lkdGg6ICc0MDBweCdcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblZpZXdDb250cm9sRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKFZpZXdDb250cm9sQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ThreedInPhotoEventService {
5
+ constructor() {
6
+ this.requestRender = new Subject();
7
+ this.showUploadImageDialog = new Subject();
8
+ this.showViewControlDialog = new Subject();
9
+ }
10
+ }
11
+ ThreedInPhotoEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ ThreedInPhotoEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, decorators: [{
14
+ type: Injectable,
15
+ args: [{
16
+ providedIn: 'root'
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8tZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBSzdCLE1BQU0sT0FBTyx5QkFBeUI7SUFIdEM7UUFLa0Isa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuRCwwQkFBcUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMzRCwwQkFBcUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQUU1RTs7dUhBTlkseUJBQXlCOzJIQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRocmVlZEluUGhvdG9FdmVudFNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFJlbmRlcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dVcGxvYWRJbWFnZURpYWxvZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dWaWV3Q29udHJvbERpYWxvZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ViewMode } from '../../../core/enum/view-mode.enum';
3
+ import { UploadImageComponent } from '../components/upload-image/upload-image.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./threed-in-photo-build.service";
6
+ import * as i2 from "./threed-in-photo-view.service";
7
+ import * as i3 from "./threed-in-photo-connection.service";
8
+ import * as i4 from "./threed-in-photo-scene.service";
9
+ import * as i5 from "./threed-in-photo-render.service";
10
+ import * as i6 from "@angular/material/dialog";
11
+ import * as i7 from "../../core3d/service/scene-event.service";
12
+ import * as i8 from "../../core3d/service/camera.service";
13
+ import * as i9 from "../../../core/service/view-mode.service";
14
+ export class ThreedInPhotoInitializerService {
15
+ constructor(_buildService, _viewService, _connectionService, _sceneService, _renderService, _dialog, _sceneEventService, _cameraService, _viewModeService) {
16
+ this._buildService = _buildService;
17
+ this._viewService = _viewService;
18
+ this._connectionService = _connectionService;
19
+ this._sceneService = _sceneService;
20
+ this._renderService = _renderService;
21
+ this._dialog = _dialog;
22
+ this._sceneEventService = _sceneEventService;
23
+ this._cameraService = _cameraService;
24
+ this._viewModeService = _viewModeService;
25
+ }
26
+ init(connectionEndpointML, camera, scene, renderer) {
27
+ this._connectionService.endpointURL = connectionEndpointML ? connectionEndpointML : this._connectionService.endpointURL;
28
+ this._viewService.camera = camera ? camera : this._viewService.camera;
29
+ this._sceneService.scene = scene ? scene : this._sceneService.scene;
30
+ this._sceneService.renderer = renderer ? renderer : this._renderService.renderer;
31
+ this._cameraService.disableRotate();
32
+ this._cameraService.cameraZoomOut();
33
+ this._cameraService.disableZoom();
34
+ this._cameraService.disablePan();
35
+ this._sceneEventService.rotateNoDrag = false;
36
+ this._viewModeService.viewMode = ViewMode.InPhotoView;
37
+ this._openUploadDialog();
38
+ }
39
+ _openUploadDialog() {
40
+ this._dialog.open(UploadImageComponent, {
41
+ width: '400px'
42
+ });
43
+ }
44
+ }
45
+ ThreedInPhotoInitializerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, deps: [{ token: i1.ThreedInPhotoBuildService }, { token: i2.ThreedInPhotoViewService }, { token: i3.ThreedInPhotoConnectionService }, { token: i4.ThreedInPhotoSceneService }, { token: i5.ThreedInPhotoRenderService }, { token: i6.MatDialog }, { token: i7.SceneEventService }, { token: i8.CameraService }, { token: i9.ViewModeService }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ ThreedInPhotoInitializerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, providedIn: 'root' });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, decorators: [{
48
+ type: Injectable,
49
+ args: [{
50
+ providedIn: 'root'
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i1.ThreedInPhotoBuildService }, { type: i2.ThreedInPhotoViewService }, { type: i3.ThreedInPhotoConnectionService }, { type: i4.ThreedInPhotoSceneService }, { type: i5.ThreedInPhotoRenderService }, { type: i6.MatDialog }, { type: i7.SceneEventService }, { type: i8.CameraService }, { type: i9.ViewModeService }]; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWluaXRpYWxpemVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8taW5pdGlhbGl6ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBV3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtREFBbUQsQ0FBQzs7Ozs7Ozs7Ozs7QUFLdkYsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUNVLGFBQXdDLEVBQ3hDLFlBQXNDLEVBQ3RDLGtCQUFrRCxFQUNsRCxhQUF3QyxFQUN4QyxjQUEwQyxFQUMxQyxPQUFrQixFQUNsQixrQkFBcUMsRUFDckMsY0FBNkIsRUFDN0IsZ0JBQWlDO1FBUmpDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFnQztRQUNsRCxrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO0lBQ3ZDLENBQUM7SUFFRSxJQUFJLENBQ1Qsb0JBQTZCLEVBQzdCLE1BQTBCLEVBQzFCLEtBQWEsRUFDYixRQUF3QjtRQUV4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztRQUN4SCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUVqRixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUV0RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkhBdkNVLCtCQUErQjtpSUFBL0IsK0JBQStCLGNBRjlCLE1BQU07NEZBRVAsK0JBQStCO2tCQUgzQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGVyc3BlY3RpdmVDYW1lcmEsIFNjZW5lLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9CdWlsZFNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWJ1aWxkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9WaWV3U2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tdmlldy5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvQ29ubmVjdGlvblNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1NjZW5lU2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZUV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7Q2FtZXJhU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvY2FtZXJhLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZpZXdNb2RlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ZpZXctbW9kZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL3ZpZXctbW9kZS5lbnVtJztcclxuaW1wb3J0IHtVcGxvYWRJbWFnZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy91cGxvYWQtaW1hZ2UvdXBsb2FkLWltYWdlLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvSW5pdGlhbGl6ZXJTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9idWlsZFNlcnZpY2U6IFRocmVlZEluUGhvdG9CdWlsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92aWV3U2VydmljZTogVGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29ubmVjdGlvblNlcnZpY2U6IFRocmVlZEluUGhvdG9Db25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogVGhyZWVkSW5QaG90b1NjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlclNlcnZpY2U6IFRocmVlZEluUGhvdG9SZW5kZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9zY2VuZUV2ZW50U2VydmljZTogU2NlbmVFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jYW1lcmFTZXJ2aWNlOiBDYW1lcmFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgaW5pdChcclxuICAgIGNvbm5lY3Rpb25FbmRwb2ludE1MPzogc3RyaW5nLFxyXG4gICAgY2FtZXJhPzogUGVyc3BlY3RpdmVDYW1lcmEsXHJcbiAgICBzY2VuZT86IFNjZW5lLFxyXG4gICAgcmVuZGVyZXI/OiBXZWJHTFJlbmRlcmVyXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5lbmRwb2ludFVSTCA9IGNvbm5lY3Rpb25FbmRwb2ludE1MID8gY29ubmVjdGlvbkVuZHBvaW50TUwgOiB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5lbmRwb2ludFVSTDtcclxuICAgIHRoaXMuX3ZpZXdTZXJ2aWNlLmNhbWVyYSA9IGNhbWVyYSA/IGNhbWVyYSA6IHRoaXMuX3ZpZXdTZXJ2aWNlLmNhbWVyYTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZSA9IHNjZW5lID8gc2NlbmUgOiB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmU7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIgPSByZW5kZXJlciA/IHJlbmRlcmVyIDogdGhpcy5fcmVuZGVyU2VydmljZS5yZW5kZXJlcjtcclxuXHJcbiAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmRpc2FibGVSb3RhdGUoKTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhWm9vbU91dCgpO1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5kaXNhYmxlWm9vbSgpO1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5kaXNhYmxlUGFuKCk7XHJcbiAgICB0aGlzLl9zY2VuZUV2ZW50U2VydmljZS5yb3RhdGVOb0RyYWcgPSBmYWxzZTtcclxuICAgIHRoaXMuX3ZpZXdNb2RlU2VydmljZS52aWV3TW9kZSA9IFZpZXdNb2RlLkluUGhvdG9WaWV3O1xyXG5cclxuICAgIHRoaXMuX29wZW5VcGxvYWREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5VcGxvYWREaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihVcGxvYWRJbWFnZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQwMHB4J1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { PCFShadowMap, SRGBColorSpace, WebGLRenderer } from 'three';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./threed-in-photo-scene.service";
5
+ import * as i2 from "./threed-in-photo-view.service";
6
+ export class ThreedInPhotoRenderService {
7
+ constructor(_sceneService, _viewService) {
8
+ this._sceneService = _sceneService;
9
+ this._viewService = _viewService;
10
+ }
11
+ init() {
12
+ this._initiateRenderer();
13
+ this._render();
14
+ }
15
+ resizeRendererToDisplaySize(forceUpdate = false) {
16
+ const canvas = this.renderer.domElement;
17
+ const pixelRatio = window.devicePixelRatio;
18
+ const width = canvas.clientWidth * pixelRatio | 0;
19
+ const height = canvas.clientHeight * pixelRatio | 0;
20
+ const needResize = this.sceneContainer.clientWidth !== width || this.sceneContainer.clientHeight !== height;
21
+ if (needResize || forceUpdate) {
22
+ this.renderer.setSize(width, height, false);
23
+ }
24
+ return needResize;
25
+ }
26
+ _animate() {
27
+ // animations can be defined here
28
+ }
29
+ _render() {
30
+ this.renderer.render(this._sceneService.scene, this._viewService.camera);
31
+ this._animate();
32
+ if (this.resizeRendererToDisplaySize()) {
33
+ this._onUpdateCanvasSize();
34
+ }
35
+ this._frameId = requestAnimationFrame(() => {
36
+ this._render();
37
+ });
38
+ }
39
+ _initiateRenderer() {
40
+ this.renderer = new WebGLRenderer({
41
+ antialias: true
42
+ });
43
+ this.renderer.shadowMap.enabled = true;
44
+ this.renderer.shadowMap.type = PCFShadowMap;
45
+ this.renderer.outputColorSpace = SRGBColorSpace;
46
+ this.sceneContainer.appendChild(this.renderer.domElement);
47
+ }
48
+ _onUpdateCanvasSize() {
49
+ this.renderer.setSize(this.sceneContainer.clientWidth, this.sceneContainer.clientHeight);
50
+ this._viewService.updateProjectionMatrix(this.sceneContainer.clientWidth, this.sceneContainer.clientHeight);
51
+ }
52
+ }
53
+ ThreedInPhotoRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, deps: [{ token: i1.ThreedInPhotoSceneService }, { token: i2.ThreedInPhotoViewService }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ ThreedInPhotoRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, providedIn: 'root' });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, decorators: [{
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: 'root'
59
+ }]
60
+ }], ctorParameters: function () { return [{ type: i1.ThreedInPhotoSceneService }, { type: i2.ThreedInPhotoViewService }]; } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy90aHJlZWQtaW4tcGhvdG8vc2VydmljZXMvdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sT0FBTyxDQUFDOzs7O0FBT2xFLE1BQU0sT0FBTywwQkFBMEI7SUFPckMsWUFDVSxhQUF3QyxFQUN4QyxZQUFzQztRQUR0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQTBCO0lBRWhELENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxjQUF1QixLQUFLO1FBQzdELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUM7UUFDNUcsSUFBSSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sUUFBUTtRQUNkLGlDQUFpQztJQUNuQyxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDaEMsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1FBRWhELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RyxDQUFDOzt3SEE3RFUsMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQQ0ZTaGFkb3dNYXAsIFNSR0JDb2xvclNwYWNlLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1NjZW5lU2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by12aWV3LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHVibGljIHNjZW5lQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgcHJpdmF0ZSBfZnJhbWVJZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogVGhyZWVkSW5QaG90b1NjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ZpZXdTZXJ2aWNlOiBUaHJlZWRJblBob3RvVmlld1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhdGVSZW5kZXJlcigpO1xyXG4gICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzaXplUmVuZGVyZXJUb0Rpc3BsYXlTaXplKGZvcmNlVXBkYXRlOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudDtcclxuICAgIGNvbnN0IHBpeGVsUmF0aW8gPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcclxuICAgIGNvbnN0IHdpZHRoID0gY2FudmFzLmNsaWVudFdpZHRoICogcGl4ZWxSYXRpbyB8IDA7XHJcbiAgICBjb25zdCBoZWlnaHQgPSBjYW52YXMuY2xpZW50SGVpZ2h0ICogcGl4ZWxSYXRpbyB8IDA7XHJcbiAgICBjb25zdCBuZWVkUmVzaXplID0gdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRXaWR0aCAhPT0gd2lkdGggfHwgdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRIZWlnaHQgIT09IGhlaWdodDtcclxuICAgIGlmIChuZWVkUmVzaXplIHx8IGZvcmNlVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmVlZFJlc2l6ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGUoKSB7XHJcbiAgICAvLyBhbmltYXRpb25zIGNhbiBiZSBkZWZpbmVkIGhlcmVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZSwgdGhpcy5fdmlld1NlcnZpY2UuY2FtZXJhKTtcclxuICAgIHRoaXMuX2FuaW1hdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVSZW5kZXJlclRvRGlzcGxheVNpemUoKSkge1xyXG4gICAgICB0aGlzLl9vblVwZGF0ZUNhbnZhc1NpemUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9mcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRpYXRlUmVuZGVyZXIoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFdlYkdMUmVuZGVyZXIoe1xyXG4gICAgICBhbnRpYWxpYXM6IHRydWVcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd01hcC50eXBlID0gUENGU2hhZG93TWFwO1xyXG4gICAgdGhpcy5yZW5kZXJlci5vdXRwdXRDb2xvclNwYWNlID0gU1JHQkNvbG9yU3BhY2U7XHJcblxyXG4gICAgdGhpcy5zY2VuZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25VcGRhdGVDYW52YXNTaXplKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuc2NlbmVDb250YWluZXIuY2xpZW50V2lkdGgsIHRoaXMuc2NlbmVDb250YWluZXIuY2xpZW50SGVpZ2h0KTtcclxuICAgIHRoaXMuX3ZpZXdTZXJ2aWNlLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgodGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRXaWR0aCwgdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19