@colijnit/configurator 261.1.1 → 261.20.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 (401) hide show
  1. package/{fesm2015/colijnit-configurator.js → fesm2022/colijnit-configurator.mjs} +19087 -18481
  2. package/fesm2022/colijnit-configurator.mjs.map +1 -0
  3. package/index.d.ts +3299 -0
  4. package/lib/components/answer-card/style/_layout.scss +3 -3
  5. package/lib/components/answers-slideout/style/_layout.scss +1 -0
  6. package/lib/style/configurator-globals.scss +1 -21
  7. package/package.json +24 -19
  8. package/bundles/colijnit-configurator.umd.js +0 -20167
  9. package/bundles/colijnit-configurator.umd.js.map +0 -1
  10. package/colijnit-configurator.d.ts +0 -5
  11. package/esm2015/colijnit-configurator.js +0 -5
  12. package/esm2015/lib/builder.js +0 -795
  13. package/esm2015/lib/components/answer-card/answer-card.component.js +0 -313
  14. package/esm2015/lib/components/answer-card/answer-card.module.js +0 -50
  15. package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.component.js +0 -182
  16. package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.module.js +0 -34
  17. package/esm2015/lib/components/answers-slideout/answers-slideout.component.js +0 -490
  18. package/esm2015/lib/components/answers-slideout/answers-slideout.module.js +0 -61
  19. package/esm2015/lib/components/color-filter/color-filter.component.js +0 -59
  20. package/esm2015/lib/components/color-filter/color-filter.module.js +0 -26
  21. package/esm2015/lib/components/configurator/configurator.component.js +0 -133
  22. package/esm2015/lib/components/configurator/configurator.module.js +0 -42
  23. package/esm2015/lib/components/configurator-dialog/configurator-camera-settings.component.js +0 -222
  24. package/esm2015/lib/components/configurator-dialog/configurator-dialog.module.js +0 -48
  25. package/esm2015/lib/components/configurator-dialog/configurator-error-dialog.component.js +0 -82
  26. package/esm2015/lib/components/configurator-dialog/configurator-export-dialog.component.js +0 -163
  27. package/esm2015/lib/components/configurator-loader/configurator-loader.component.js +0 -49
  28. package/esm2015/lib/components/configurator-loader/configurator-loader.module.js +0 -33
  29. package/esm2015/lib/components/configurator-scene/configurator-scene.component.js +0 -60
  30. package/esm2015/lib/components/configurator-scene/configurator-scene.module.js +0 -17
  31. package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.component.js +0 -46
  32. package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.module.js +0 -26
  33. package/esm2015/lib/components/element-buttons/element-buttons.component.js +0 -168
  34. package/esm2015/lib/components/element-buttons/element-buttons.module.js +0 -30
  35. package/esm2015/lib/components/element-toolbar/element-toolbar.component.js +0 -186
  36. package/esm2015/lib/components/element-toolbar/element-toolbar.module.js +0 -34
  37. package/esm2015/lib/components/image-zoom/image-zoom.component.js +0 -61
  38. package/esm2015/lib/components/image-zoom/image-zoom.module.js +0 -30
  39. package/esm2015/lib/components/lite-selector/lite-selector.component.js +0 -206
  40. package/esm2015/lib/components/lite-selector/lite-selector.module.js +0 -34
  41. package/esm2015/lib/components/product-configurator/product-configurator.component.js +0 -184
  42. package/esm2015/lib/components/product-configurator/product-configurator.module.js +0 -72
  43. package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.component.js +0 -237
  44. package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.module.js +0 -38
  45. package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.js +0 -284
  46. package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.js +0 -42
  47. package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.js +0 -72
  48. package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.js +0 -34
  49. package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.js +0 -82
  50. package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.js +0 -30
  51. package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.js +0 -80
  52. package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.js +0 -34
  53. package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.js +0 -93
  54. package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.js +0 -34
  55. package/esm2015/lib/components/progress-bar/progress-bar.component.js +0 -55
  56. package/esm2015/lib/components/progress-bar/progress-bar.module.js +0 -29
  57. package/esm2015/lib/components/scene-options/scene-options.component.js +0 -164
  58. package/esm2015/lib/components/scene-options/scene-options.module.js +0 -38
  59. package/esm2015/lib/components/selections-summary/selections-summary.component.js +0 -163
  60. package/esm2015/lib/components/selections-summary/selections-summary.module.js +0 -45
  61. package/esm2015/lib/components/selections-summary-line/selections-summary-line.component.js +0 -171
  62. package/esm2015/lib/components/selections-summary-line/selections-summary-line.module.js +0 -34
  63. package/esm2015/lib/components/slideout/slideout.component.js +0 -83
  64. package/esm2015/lib/components/slideout/slideout.module.js +0 -17
  65. package/esm2015/lib/components/summary-line/summary-line.component.js +0 -273
  66. package/esm2015/lib/components/summary-line/summary-line.module.js +0 -44
  67. package/esm2015/lib/components/tag-filter/tag-filter.component.js +0 -39
  68. package/esm2015/lib/components/tag-filter/tag-filter.module.js +0 -21
  69. package/esm2015/lib/components/threedselector/threedselector.component.js +0 -155
  70. package/esm2015/lib/components/threedselector/threedselector.module.js +0 -34
  71. package/esm2015/lib/core/helper/variation-helper.js +0 -553
  72. package/esm2015/lib/core/shader/floor-fade.shader.js +0 -33
  73. package/esm2015/lib/core/textures/depth-data-texture.js +0 -19
  74. package/esm2015/lib/directives/directives.module.js +0 -26
  75. package/esm2015/lib/directives/visibility-observer-master.directive.js +0 -53
  76. package/esm2015/lib/directives/visibility-observer.directive.js +0 -54
  77. package/esm2015/lib/enum/ar-feature.enum.js +0 -14
  78. package/esm2015/lib/enum/configuration-key.enum.js +0 -41
  79. package/esm2015/lib/enum/configuration-template.enum.js +0 -6
  80. package/esm2015/lib/enum/device-size-type.js +0 -7
  81. package/esm2015/lib/enum/device-tier.enum.js +0 -7
  82. package/esm2015/lib/enum/icon.enum.js +0 -113
  83. package/esm2015/lib/enum/item-type.enum.js +0 -23
  84. package/esm2015/lib/enum/light.enum.js +0 -9
  85. package/esm2015/lib/enum/navigator-type.enum.js +0 -6
  86. package/esm2015/lib/enum/output-encoding.enum.js +0 -9
  87. package/esm2015/lib/enum/result-type.enum.js +0 -21
  88. package/esm2015/lib/enum/scene-event.enum.js +0 -12
  89. package/esm2015/lib/enum/shadow-map-type.enum.js +0 -8
  90. package/esm2015/lib/enum/texture-type.js +0 -9
  91. package/esm2015/lib/enum/tone-mapping-local.enum.js +0 -12
  92. package/esm2015/lib/enum/view-mode.enum.js +0 -7
  93. package/esm2015/lib/enum/xr-mode.enum.js +0 -6
  94. package/esm2015/lib/environments/environment.js +0 -8
  95. package/esm2015/lib/interfaces/aa-options.interface.js +0 -2
  96. package/esm2015/lib/interfaces/adjustable-element.interface.js +0 -2
  97. package/esm2015/lib/interfaces/ao-options.interface.js +0 -2
  98. package/esm2015/lib/interfaces/changes.interface.js +0 -2
  99. package/esm2015/lib/interfaces/configuration-data.interface.js +0 -2
  100. package/esm2015/lib/interfaces/light-preset.interface.js +0 -2
  101. package/esm2015/lib/interfaces/post-processing-setting.interface.js +0 -2
  102. package/esm2015/lib/interfaces/scene-option-button.interface.js +0 -6
  103. package/esm2015/lib/interfaces/screen-size-info.js +0 -2
  104. package/esm2015/lib/interfaces/setting.interface.js +0 -2
  105. package/esm2015/lib/interfaces/texture.interface.js +0 -2
  106. package/esm2015/lib/interfaces/vignette-options.interface.js +0 -2
  107. package/esm2015/lib/model/ar-position-indicator.js +0 -18
  108. package/esm2015/lib/model/camera-settings.js +0 -14
  109. package/esm2015/lib/model/configuration-result-object.js +0 -6
  110. package/esm2015/lib/model/configurator-error-message.js +0 -9
  111. package/esm2015/lib/model/configurator-settings.js +0 -25
  112. package/esm2015/lib/model/custom-button.js +0 -16
  113. package/esm2015/lib/model/factory.js +0 -28
  114. package/esm2015/lib/model/icon.js +0 -112
  115. package/esm2015/lib/model/intersected-objects.js +0 -7
  116. package/esm2015/lib/model/light-preset.js +0 -73
  117. package/esm2015/lib/model/light-properties.js +0 -45
  118. package/esm2015/lib/model/material.js +0 -11
  119. package/esm2015/lib/model/metadata.js +0 -2
  120. package/esm2015/lib/model/render-parameters.js +0 -16
  121. package/esm2015/lib/model/setting-options.js +0 -71
  122. package/esm2015/lib/model/settings.js +0 -16
  123. package/esm2015/lib/model/shadow-properties.js +0 -10
  124. package/esm2015/lib/model/skin.js +0 -3
  125. package/esm2015/lib/model/texture.js +0 -76
  126. package/esm2015/lib/model/variation-settings.js +0 -54
  127. package/esm2015/lib/model/variation.js +0 -3
  128. package/esm2015/lib/model/xr-reticle.js +0 -79
  129. package/esm2015/lib/modules/render/enum/scene-type.enum.js +0 -6
  130. package/esm2015/lib/modules/render/model/ar-parameters.js +0 -12
  131. package/esm2015/lib/modules/render/model/scene-setting.js +0 -6
  132. package/esm2015/lib/modules/render/model/scene-settings.js +0 -3
  133. package/esm2015/lib/pipes/append.pipe.js +0 -21
  134. package/esm2015/lib/pipes/google-translate.pipe.js +0 -21
  135. package/esm2015/lib/pipes/localize.pipe.js +0 -28
  136. package/esm2015/lib/pipes/pipes.module.js +0 -41
  137. package/esm2015/lib/pipes/prepend.pipe.js +0 -21
  138. package/esm2015/lib/pipes/strip-html.pipe.js +0 -17
  139. package/esm2015/lib/services/app-event.service.js +0 -36
  140. package/esm2015/lib/services/app-initializer.service.js +0 -27
  141. package/esm2015/lib/services/ar.service.js +0 -844
  142. package/esm2015/lib/services/build-furniture-base.service.js +0 -1181
  143. package/esm2015/lib/services/build-furniture-without-scene.service.js +0 -86
  144. package/esm2015/lib/services/build-furniture.service.js +0 -169
  145. package/esm2015/lib/services/bundle-initialzer.service.js +0 -113
  146. package/esm2015/lib/services/camera.service.js +0 -123
  147. package/esm2015/lib/services/configuration.service.js +0 -79
  148. package/esm2015/lib/services/configurator-connector.service.js +0 -830
  149. package/esm2015/lib/services/configurator.service.js +0 -285
  150. package/esm2015/lib/services/configuring.service.js +0 -119
  151. package/esm2015/lib/services/controls.js +0 -799
  152. package/esm2015/lib/services/debug.service.js +0 -43
  153. package/esm2015/lib/services/dictionary.service.js +0 -65
  154. package/esm2015/lib/services/dynamic-camera.service.js +0 -96
  155. package/esm2015/lib/services/floor-plane.service.js +0 -252
  156. package/esm2015/lib/services/font.service.js +0 -27
  157. package/esm2015/lib/services/google-translate.service.js +0 -79
  158. package/esm2015/lib/services/icon-cache.service.js +0 -44
  159. package/esm2015/lib/services/intersection.service.js +0 -47
  160. package/esm2015/lib/services/item.service.js +0 -75
  161. package/esm2015/lib/services/json-utils.service.js +0 -48
  162. package/esm2015/lib/services/light-creation.service.js +0 -35
  163. package/esm2015/lib/services/light-presets.service.js +0 -157
  164. package/esm2015/lib/services/lights.service.js +0 -146
  165. package/esm2015/lib/services/load-furniture-base.service.js +0 -164
  166. package/esm2015/lib/services/load-furniture-without-scene.service.js +0 -45
  167. package/esm2015/lib/services/load-furniture.service.js +0 -72
  168. package/esm2015/lib/services/loader.service.js +0 -32
  169. package/esm2015/lib/services/locator.service.js +0 -11
  170. package/esm2015/lib/services/message-board.service.js +0 -50
  171. package/esm2015/lib/services/post-processing.service.js +0 -378
  172. package/esm2015/lib/services/product-configurator.service.js +0 -16
  173. package/esm2015/lib/services/progress.service.js +0 -20
  174. package/esm2015/lib/services/scene-event.service.js +0 -246
  175. package/esm2015/lib/services/scene-options.service.js +0 -24
  176. package/esm2015/lib/services/scene.service.js +0 -313
  177. package/esm2015/lib/services/screen-size-analysis.service.js +0 -97
  178. package/esm2015/lib/services/settings.service.js +0 -142
  179. package/esm2015/lib/services/switch-build-furniture.service.js +0 -37
  180. package/esm2015/lib/services/switch-load-furniture.service.js +0 -35
  181. package/esm2015/lib/services/threedselector.service.js +0 -72
  182. package/esm2015/lib/services/utils.service.js +0 -207
  183. package/esm2015/lib/services/variation-cache.service.js +0 -143
  184. package/esm2015/lib/services/variation.service.js +0 -490
  185. package/esm2015/lib/services/view-mode.service.js +0 -37
  186. package/esm2015/lib/services/vr.service.js +0 -191
  187. package/esm2015/lib/services/xr.service.js +0 -294
  188. package/esm2015/lib/utils/asset.utils.js +0 -120
  189. package/esm2015/lib/utils/base-utils.js +0 -9
  190. package/esm2015/lib/utils/color.utils.js +0 -30
  191. package/esm2015/lib/utils/debug.utils.js +0 -9
  192. package/esm2015/lib/utils/device.utils.js +0 -25
  193. package/esm2015/lib/utils/file.utils.js +0 -167
  194. package/esm2015/lib/utils/image.utils.js +0 -61
  195. package/esm2015/lib/utils/json-parser.utils.js +0 -180
  196. package/esm2015/lib/utils/material.utils.js +0 -433
  197. package/esm2015/lib/utils/object.utils.js +0 -360
  198. package/esm2015/lib/utils/relative-position.utils.js +0 -75
  199. package/esm2015/lib/utils/rotation-helper.utils.js +0 -15
  200. package/esm2015/lib/utils/scene-3d.utils.js +0 -213
  201. package/esm2015/lib/utils/scene-utils.js +0 -191
  202. package/esm2015/lib/utils/text-utils.js +0 -68
  203. package/esm2015/lib/utils/threed.utils.js +0 -281
  204. package/esm2015/lib/utils/variation-utils.js +0 -459
  205. package/esm2015/public-api.js +0 -65
  206. package/fesm2015/colijnit-configurator.js.map +0 -1
  207. package/lib/builder.d.ts +0 -83
  208. package/lib/components/answer-card/answer-card.component.d.ts +0 -58
  209. package/lib/components/answer-card/answer-card.module.d.ts +0 -11
  210. package/lib/components/answer-info-dialog/answer-info-dialog.component.d.ts +0 -38
  211. package/lib/components/answer-info-dialog/answer-info-dialog.module.d.ts +0 -10
  212. package/lib/components/answers-slideout/answers-slideout.component.d.ts +0 -86
  213. package/lib/components/answers-slideout/answers-slideout.module.d.ts +0 -16
  214. package/lib/components/color-filter/color-filter.component.d.ts +0 -20
  215. package/lib/components/color-filter/color-filter.module.d.ts +0 -8
  216. package/lib/components/configurator/configurator.component.d.ts +0 -37
  217. package/lib/components/configurator/configurator.module.d.ts +0 -12
  218. package/lib/components/configurator-dialog/configurator-camera-settings.component.d.ts +0 -30
  219. package/lib/components/configurator-dialog/configurator-dialog.module.d.ts +0 -13
  220. package/lib/components/configurator-dialog/configurator-error-dialog.component.d.ts +0 -16
  221. package/lib/components/configurator-dialog/configurator-export-dialog.component.d.ts +0 -26
  222. package/lib/components/configurator-loader/configurator-loader.component.d.ts +0 -7
  223. package/lib/components/configurator-loader/configurator-loader.module.d.ts +0 -9
  224. package/lib/components/configurator-scene/configurator-scene.component.d.ts +0 -24
  225. package/lib/components/configurator-scene/configurator-scene.module.d.ts +0 -7
  226. package/lib/components/configurator-scene-loader/configurator-scene-loader.component.d.ts +0 -7
  227. package/lib/components/configurator-scene-loader/configurator-scene-loader.module.d.ts +0 -8
  228. package/lib/components/element-buttons/element-buttons.component.d.ts +0 -32
  229. package/lib/components/element-buttons/element-buttons.module.d.ts +0 -9
  230. package/lib/components/element-toolbar/element-toolbar.component.d.ts +0 -27
  231. package/lib/components/element-toolbar/element-toolbar.module.d.ts +0 -10
  232. package/lib/components/image-zoom/image-zoom.component.d.ts +0 -15
  233. package/lib/components/image-zoom/image-zoom.module.d.ts +0 -9
  234. package/lib/components/lite-selector/lite-selector.component.d.ts +0 -40
  235. package/lib/components/lite-selector/lite-selector.module.d.ts +0 -10
  236. package/lib/components/product-configurator/product-configurator.component.d.ts +0 -50
  237. package/lib/components/product-configurator/product-configurator.module.d.ts +0 -15
  238. package/lib/components/product-configurator-selector/product-configurator-selector.component.d.ts +0 -35
  239. package/lib/components/product-configurator-selector/product-configurator-selector.module.d.ts +0 -11
  240. package/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.d.ts +0 -31
  241. package/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.d.ts +0 -13
  242. package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.d.ts +0 -20
  243. package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.d.ts +0 -10
  244. package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.d.ts +0 -20
  245. package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.d.ts +0 -10
  246. package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.d.ts +0 -21
  247. package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.d.ts +0 -10
  248. package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.d.ts +0 -21
  249. package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.d.ts +0 -10
  250. package/lib/components/progress-bar/progress-bar.component.d.ts +0 -10
  251. package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
  252. package/lib/components/scene-options/scene-options.component.d.ts +0 -24
  253. package/lib/components/scene-options/scene-options.module.d.ts +0 -11
  254. package/lib/components/selections-summary/selections-summary.component.d.ts +0 -38
  255. package/lib/components/selections-summary/selections-summary.module.d.ts +0 -12
  256. package/lib/components/selections-summary-line/selections-summary-line.component.d.ts +0 -27
  257. package/lib/components/selections-summary-line/selections-summary-line.module.d.ts +0 -10
  258. package/lib/components/slideout/slideout.component.d.ts +0 -22
  259. package/lib/components/slideout/slideout.module.d.ts +0 -7
  260. package/lib/components/summary-line/summary-line.component.d.ts +0 -50
  261. package/lib/components/summary-line/summary-line.module.d.ts +0 -11
  262. package/lib/components/tag-filter/tag-filter.component.d.ts +0 -9
  263. package/lib/components/tag-filter/tag-filter.module.d.ts +0 -7
  264. package/lib/components/threedselector/threedselector.component.d.ts +0 -38
  265. package/lib/components/threedselector/threedselector.module.d.ts +0 -10
  266. package/lib/core/helper/variation-helper.d.ts +0 -25
  267. package/lib/core/shader/floor-fade.shader.d.ts +0 -5
  268. package/lib/core/textures/depth-data-texture.d.ts +0 -5
  269. package/lib/directives/directives.module.d.ts +0 -8
  270. package/lib/directives/visibility-observer-master.directive.d.ts +0 -12
  271. package/lib/directives/visibility-observer.directive.d.ts +0 -16
  272. package/lib/enum/ar-feature.enum.d.ts +0 -12
  273. package/lib/enum/configuration-key.enum.d.ts +0 -39
  274. package/lib/enum/configuration-template.enum.d.ts +0 -4
  275. package/lib/enum/device-size-type.d.ts +0 -5
  276. package/lib/enum/device-tier.enum.d.ts +0 -5
  277. package/lib/enum/icon.enum.d.ts +0 -111
  278. package/lib/enum/item-type.enum.d.ts +0 -21
  279. package/lib/enum/light.enum.d.ts +0 -7
  280. package/lib/enum/navigator-type.enum.d.ts +0 -4
  281. package/lib/enum/output-encoding.enum.d.ts +0 -7
  282. package/lib/enum/result-type.enum.d.ts +0 -19
  283. package/lib/enum/scene-event.enum.d.ts +0 -10
  284. package/lib/enum/shadow-map-type.enum.d.ts +0 -6
  285. package/lib/enum/texture-type.d.ts +0 -7
  286. package/lib/enum/tone-mapping-local.enum.d.ts +0 -10
  287. package/lib/enum/view-mode.enum.d.ts +0 -5
  288. package/lib/enum/xr-mode.enum.d.ts +0 -4
  289. package/lib/environments/environment.d.ts +0 -4
  290. package/lib/interfaces/aa-options.interface.d.ts +0 -4
  291. package/lib/interfaces/adjustable-element.interface.d.ts +0 -5
  292. package/lib/interfaces/ao-options.interface.d.ts +0 -18
  293. package/lib/interfaces/changes.interface.d.ts +0 -9
  294. package/lib/interfaces/configuration-data.interface.d.ts +0 -40
  295. package/lib/interfaces/light-preset.interface.d.ts +0 -22
  296. package/lib/interfaces/post-processing-setting.interface.d.ts +0 -11
  297. package/lib/interfaces/scene-option-button.interface.d.ts +0 -19
  298. package/lib/interfaces/screen-size-info.d.ts +0 -10
  299. package/lib/interfaces/setting.interface.d.ts +0 -8
  300. package/lib/interfaces/texture.interface.d.ts +0 -44
  301. package/lib/interfaces/vignette-options.interface.d.ts +0 -4
  302. package/lib/model/ar-position-indicator.d.ts +0 -4
  303. package/lib/model/camera-settings.d.ts +0 -12
  304. package/lib/model/configuration-result-object.d.ts +0 -30
  305. package/lib/model/configurator-error-message.d.ts +0 -8
  306. package/lib/model/configurator-settings.d.ts +0 -62
  307. package/lib/model/custom-button.d.ts +0 -10
  308. package/lib/model/factory.d.ts +0 -5
  309. package/lib/model/icon.d.ts +0 -4
  310. package/lib/model/intersected-objects.d.ts +0 -6
  311. package/lib/model/light-preset.d.ts +0 -33
  312. package/lib/model/light-properties.d.ts +0 -25
  313. package/lib/model/material.d.ts +0 -41
  314. package/lib/model/metadata.d.ts +0 -78
  315. package/lib/model/render-parameters.d.ts +0 -12
  316. package/lib/model/setting-options.d.ts +0 -67
  317. package/lib/model/settings.d.ts +0 -10
  318. package/lib/model/shadow-properties.d.ts +0 -7
  319. package/lib/model/skin.d.ts +0 -15
  320. package/lib/model/texture.d.ts +0 -52
  321. package/lib/model/variation-settings.d.ts +0 -55
  322. package/lib/model/variation.d.ts +0 -11
  323. package/lib/model/xr-reticle.d.ts +0 -17
  324. package/lib/modules/render/enum/scene-type.enum.d.ts +0 -4
  325. package/lib/modules/render/model/ar-parameters.d.ts +0 -9
  326. package/lib/modules/render/model/scene-setting.d.ts +0 -13
  327. package/lib/modules/render/model/scene-settings.d.ts +0 -4
  328. package/lib/pipes/append.pipe.d.ts +0 -7
  329. package/lib/pipes/google-translate.pipe.d.ts +0 -11
  330. package/lib/pipes/localize.pipe.d.ts +0 -10
  331. package/lib/pipes/pipes.module.d.ts +0 -11
  332. package/lib/pipes/prepend.pipe.d.ts +0 -7
  333. package/lib/pipes/strip-html.pipe.d.ts +0 -7
  334. package/lib/services/app-event.service.d.ts +0 -32
  335. package/lib/services/app-initializer.service.d.ts +0 -14
  336. package/lib/services/ar.service.d.ts +0 -120
  337. package/lib/services/build-furniture-base.service.d.ts +0 -117
  338. package/lib/services/build-furniture-without-scene.service.d.ts +0 -14
  339. package/lib/services/build-furniture.service.d.ts +0 -14
  340. package/lib/services/bundle-initialzer.service.d.ts +0 -45
  341. package/lib/services/camera.service.d.ts +0 -44
  342. package/lib/services/configuration.service.d.ts +0 -18
  343. package/lib/services/configurator-connector.service.d.ts +0 -140
  344. package/lib/services/configurator.service.d.ts +0 -62
  345. package/lib/services/configuring.service.d.ts +0 -46
  346. package/lib/services/controls.d.ts +0 -11
  347. package/lib/services/debug.service.d.ts +0 -16
  348. package/lib/services/dictionary.service.d.ts +0 -15
  349. package/lib/services/dynamic-camera.service.d.ts +0 -21
  350. package/lib/services/floor-plane.service.d.ts +0 -47
  351. package/lib/services/font.service.d.ts +0 -10
  352. package/lib/services/google-translate.service.d.ts +0 -26
  353. package/lib/services/icon-cache.service.d.ts +0 -21
  354. package/lib/services/intersection.service.d.ts +0 -11
  355. package/lib/services/item.service.d.ts +0 -18
  356. package/lib/services/json-utils.service.d.ts +0 -7
  357. package/lib/services/light-creation.service.d.ts +0 -9
  358. package/lib/services/light-presets.service.d.ts +0 -34
  359. package/lib/services/lights.service.d.ts +0 -34
  360. package/lib/services/load-furniture-base.service.d.ts +0 -37
  361. package/lib/services/load-furniture-without-scene.service.d.ts +0 -9
  362. package/lib/services/load-furniture.service.d.ts +0 -9
  363. package/lib/services/loader.service.d.ts +0 -11
  364. package/lib/services/locator.service.d.ts +0 -7
  365. package/lib/services/message-board.service.d.ts +0 -18
  366. package/lib/services/post-processing.service.d.ts +0 -74
  367. package/lib/services/product-configurator.service.d.ts +0 -11
  368. package/lib/services/progress.service.d.ts +0 -9
  369. package/lib/services/scene-event.service.d.ts +0 -72
  370. package/lib/services/scene-options.service.d.ts +0 -11
  371. package/lib/services/scene.service.d.ts +0 -71
  372. package/lib/services/screen-size-analysis.service.d.ts +0 -32
  373. package/lib/services/settings.service.d.ts +0 -24
  374. package/lib/services/switch-build-furniture.service.d.ts +0 -21
  375. package/lib/services/switch-load-furniture.service.d.ts +0 -21
  376. package/lib/services/threedselector.service.d.ts +0 -17
  377. package/lib/services/utils.service.d.ts +0 -24
  378. package/lib/services/variation-cache.service.d.ts +0 -23
  379. package/lib/services/variation.service.d.ts +0 -26
  380. package/lib/services/view-mode.service.d.ts +0 -17
  381. package/lib/services/vr.service.d.ts +0 -42
  382. package/lib/services/xr.service.d.ts +0 -56
  383. package/lib/utils/asset.utils.d.ts +0 -19
  384. package/lib/utils/base-utils.d.ts +0 -4
  385. package/lib/utils/color.utils.d.ts +0 -8
  386. package/lib/utils/debug.utils.d.ts +0 -3
  387. package/lib/utils/device.utils.d.ts +0 -7
  388. package/lib/utils/file.utils.d.ts +0 -30
  389. package/lib/utils/image.utils.d.ts +0 -9
  390. package/lib/utils/json-parser.utils.d.ts +0 -9
  391. package/lib/utils/material.utils.d.ts +0 -34
  392. package/lib/utils/object.utils.d.ts +0 -32
  393. package/lib/utils/relative-position.utils.d.ts +0 -12
  394. package/lib/utils/rotation-helper.utils.d.ts +0 -6
  395. package/lib/utils/scene-3d.utils.d.ts +0 -8
  396. package/lib/utils/scene-utils.d.ts +0 -7
  397. package/lib/utils/text-utils.d.ts +0 -4
  398. package/lib/utils/threed.utils.d.ts +0 -20
  399. package/lib/utils/variation-utils.d.ts +0 -18
  400. package/public-api.d.ts +0 -60
  401. /package/lib/style/{template_variables.scss → _variables.scss} +0 -0
@@ -1,86 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { BuildFurnitureBaseService } from './build-furniture-base.service';
4
- import { ResultType } from '../enum/result-type.enum';
5
- import { isNill } from '@colijnit/configuratorapi/build/utils/function/is-nill.function';
6
- import { ConfigurationResultObject } from '../model/configuration-result-object';
7
- import * as i0 from "@angular/core";
8
- export class BuildFurnitureWithoutSceneService extends BuildFurnitureBaseService {
9
- build(result) {
10
- return __awaiter(this, void 0, void 0, function* () {
11
- result.object = this.currentCustomFloorGroup;
12
- this.emptyAnswerSelected();
13
- this.emptySelectionsSelected();
14
- if (result.resultType === ResultType.NoSelections) {
15
- result.resultType = ResultType.ConfigurationFixed;
16
- }
17
- else if (result.resultType !== ResultType.Obsolete && result.resultType !== ResultType.ConfigurationFixed) { // don't override these
18
- result.resultType = ResultType.Loaded;
19
- }
20
- result.selections = this.cloneSelections();
21
- result.decos = Array.from(this.configuratorConnectorService.decoNodes);
22
- this.appEventService.buildFinished.next(result);
23
- return result;
24
- });
25
- }
26
- startToBuild(result, shouldCopyInstance = false, looseOriginalConfiguration = true, standAlone = false, firstBuild = false, fromPreset = false, loadFromProject = false) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- if (isNill(result)) {
29
- result = new ConfigurationResultObject();
30
- }
31
- result = yield this.prepareInstanceForBuild(shouldCopyInstance, loadFromProject, looseOriginalConfiguration, result);
32
- yield this.configuratorConnectorService.getQuestionAndAnswersAsync(); // see if there is user input needed
33
- if (this.configuratorConnectorService.activeAnswers.length === 0) {
34
- yield this.prepareSelectionsAndDecos(result)
35
- .catch((e) => Promise.reject(e));
36
- return this.build(result);
37
- }
38
- else {
39
- if (firstBuild) {
40
- yield this.prepareSelectionsAndDecos(result)
41
- .catch((e) => Promise.reject(e));
42
- if (this.configuratorConnectorService.selections.length < 1) {
43
- result.resultType = ResultType.NeedsUserInput;
44
- }
45
- else if (this.configuratorConnectorService.selections.length < 2) {
46
- result.resultType = ResultType.BuildFromScratch;
47
- }
48
- else if (this.configuratorConnectorService.selections.length > 1) {
49
- result.resultType = ResultType.NeedsUserInput;
50
- }
51
- return result;
52
- }
53
- }
54
- });
55
- }
56
- startToBuildFromConfigurator(data) {
57
- return this.startToBuild(data);
58
- }
59
- prepareSelectionsAndDecos(result) {
60
- return __awaiter(this, void 0, void 0, function* () {
61
- this.reset();
62
- yield this.getSelectionsAndDecos();
63
- return yield this.handlePrepareSelectionsDecos(result);
64
- });
65
- }
66
- createSimple3DModel(result, standAlone) {
67
- this.configuratorConnectorService.emptySelections();
68
- this.appEventService.buildFinished.next(result);
69
- return result;
70
- }
71
- createNonConfigurableFloor(result) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- // TODO Right now we do not need this, but we might need to render floors so we just prepared it like this.
74
- return new ConfigurationResultObject();
75
- });
76
- }
77
- }
78
- BuildFurnitureWithoutSceneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureWithoutSceneService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
79
- BuildFurnitureWithoutSceneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureWithoutSceneService, providedIn: 'root' });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureWithoutSceneService, decorators: [{
81
- type: Injectable,
82
- args: [{
83
- providedIn: 'root'
84
- }]
85
- }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZnVybml0dXJlLXdpdGhvdXQtc2NlbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL2J1aWxkLWZ1cm5pdHVyZS13aXRob3V0LXNjZW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUN2RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFLL0UsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLHlCQUF5QjtJQUVqRSxLQUFLLENBQUMsTUFBaUM7O1lBQ2xELE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1lBQzdDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsWUFBWSxFQUFFO2dCQUNqRCxNQUFNLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNuRDtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLHVCQUF1QjtnQkFDcEksTUFBTSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2FBQ3ZDO1lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMs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RztZQUMzRyxPQUFPLElBQUkseUJBQXlCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0tBQUE7OytIQTdFVSxpQ0FBaUM7bUlBQWpDLGlDQUFpQyxjQUZoQyxNQUFNOzRGQUVQLGlDQUFpQztrQkFIN0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QnVpbGRGdXJuaXR1cmVCYXNlU2VydmljZX0gZnJvbSAnLi9idWlsZC1mdXJuaXR1cmUtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZXN1bHRUeXBlfSBmcm9tICcuLi9lbnVtL3Jlc3VsdC10eXBlLmVudW0nO1xyXG5pbXBvcnQge2lzTmlsbH0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0fSBmcm9tICcuLi9tb2RlbC9jb25maWd1cmF0aW9uLXJlc3VsdC1vYmplY3QnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnVpbGRGdXJuaXR1cmVXaXRob3V0U2NlbmVTZXJ2aWNlIGV4dGVuZHMgQnVpbGRGdXJuaXR1cmVCYXNlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBhc3luYyBidWlsZChyZXN1bHQ6IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QpOiBQcm9taXNlPENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3Q+IHtcclxuICAgIHJlc3VsdC5vYmplY3QgPSB0aGlzLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwO1xyXG4gICAgdGhpcy5lbXB0eUFuc3dlclNlbGVjdGVkKCk7XHJcbiAgICB0aGlzLmVtcHR5U2VsZWN0aW9uc1NlbGVjdGVkKCk7XHJcbiAgICBpZiAocmVzdWx0LnJlc3VsdFR5cGUgPT09IFJlc3VsdFR5cGUuTm9TZWxlY3Rpb25zKSB7XHJcbiAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gUmVzdWx0VHlwZS5Db25maWd1cmF0aW9uRml4ZWQ7XHJcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5yZXN1bHRUeXBlICE9PSBSZXN1bHRUeXBlLk9ic29sZXRlICYmIHJlc3VsdC5yZXN1bHRUeXBlICE9PSBSZXN1bHRUeXBlLkNvbmZpZ3VyYXRpb25GaXhlZCkgeyAvLyBkb24ndCBvdmVycmlkZSB0aGVzZVxyXG4gICAgICByZXN1bHQucmVzdWx0VHlwZSA9IFJlc3VsdFR5cGUuTG9hZGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3VsdC5zZWxlY3Rpb25zID0gdGhpcy5jbG9uZVNlbGVjdGlvbnMoKTtcclxuICAgIHJlc3VsdC5kZWNvcyA9IEFycmF5LmZyb20odGhpcy5jb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlLmRlY29Ob2Rlcyk7XHJcblxyXG4gICAgdGhpcy5hcHBFdmVudFNlcnZpY2UuYnVpbGRGaW5pc2hlZC5uZXh0KHJlc3VsdCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHN0YXJ0VG9CdWlsZChcclxuICAgIHJlc3VsdD86IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QsXHJcbiAgICBzaG91bGRDb3B5SW5zdGFuY2U6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGxvb3NlT3JpZ2luYWxDb25maWd1cmF0aW9uOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHN0YW5kQWxvbmU6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGZpcnN0QnVpbGQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGZyb21QcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGxvYWRGcm9tUHJvamVjdDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogUHJvbWlzZTxDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0PiB7XHJcbiAgICBpZiAoaXNOaWxsKHJlc3VsdCkpIHtcclxuICAgICAgcmVzdWx0ID0gbmV3IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnByZXBhcmVJbnN0YW5jZUZvckJ1aWxkKHNob3VsZENvcHlJbnN0YW5jZSwgbG9hZEZyb21Qcm9qZWN0LCBsb29zZU9yaWdpbmFsQ29uZmlndXJhdGlvbiwgcmVzdWx0KTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRvckNvbm5lY3RvclNlcnZpY2UuZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzQXN5bmMoKTsgLy8gc2VlIGlmIHRoZXJlIGlzIHVzZXIgaW5wdXQgbmVlZGVkXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlLmFjdGl2ZUFuc3dlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZVNlbGVjdGlvbnNBbmREZWNvcyhyZXN1bHQpXHJcbiAgICAgICAgLmNhdGNoKChlKSA9PiBQcm9taXNlLnJlamVjdChlKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkKHJlc3VsdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZmlyc3RCdWlsZCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZVNlbGVjdGlvbnNBbmREZWNvcyhyZXN1bHQpXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IFByb21pc2UucmVqZWN0KGUpKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlLnNlbGVjdGlvbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlLk5lZWRzVXNlcklucHV0O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlLnNlbGVjdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlLkJ1aWxkRnJvbVNjcmF0Y2g7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRvckNvbm5lY3RvclNlcnZpY2Uuc2VsZWN0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICByZXN1bHQucmVzdWx0VHlwZSA9IFJlc3VsdFR5cGUuTmVlZHNVc2VySW5wdXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc3RhcnRUb0J1aWxkRnJvbUNvbmZpZ3VyYXRvcihkYXRhOiBDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0KTogUHJvbWlzZTxDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFydFRvQnVpbGQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcHJlcGFyZVNlbGVjdGlvbnNBbmREZWNvcyhcclxuICAgIHJlc3VsdDogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdFxyXG4gICk6IFByb21pc2U8Q29uZmlndXJhdGlvblJlc3VsdE9iamVjdD4ge1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZWxlY3Rpb25zQW5kRGVjb3MoKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVByZXBhcmVTZWxlY3Rpb25zRGVjb3MocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVTaW1wbGUzRE1vZGVsKHJlc3VsdDogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCwgc3RhbmRBbG9uZT86IGJvb2xlYW4pOiBDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0IHtcclxuICAgIHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5lbXB0eVNlbGVjdGlvbnMoKTtcclxuICAgIHRoaXMuYXBwRXZlbnRTZXJ2aWNlLmJ1aWxkRmluaXNoZWQubmV4dChyZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVOb25Db25maWd1cmFibGVGbG9vcihyZXN1bHQ6IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QpOiBQcm9taXNlPENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3Q+IHtcclxuICAgIC8vIFRPRE8gUmlnaHQgbm93IHdlIGRvIG5vdCBuZWVkIHRoaXMsIGJ1dCB3ZSBtaWdodCBuZWVkIHRvIHJlbmRlciBmbG9vcnMgc28gd2UganVzdCBwcmVwYXJlZCBpdCBsaWtlIHRoaXMuXHJcbiAgICByZXR1cm4gbmV3IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,169 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { Vector3 } from 'three';
4
- import { NodeType } from '@colijnit/configuratorapi/build/enum/node-type.enum';
5
- import { BuildFurnitureBaseService } from './build-furniture-base.service';
6
- import { isNill } from '@colijnit/configuratorapi/build/utils/function/is-nill.function';
7
- import { ConfiguratorErrorMessage } from '../model/configurator-error-message';
8
- import { ResultType } from '../enum/result-type.enum';
9
- import { ConfigurationResultObject } from '../model/configuration-result-object';
10
- import { DebugUtils } from '../utils/debug.utils';
11
- import { Scene3DUtil } from '../utils/scene-3d.utils';
12
- import * as i0 from "@angular/core";
13
- export class BuildFurnitureService extends BuildFurnitureBaseService {
14
- build(result) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- if (!this.full3DObjectToUse) { // there's no 3d model so get out
17
- return result;
18
- }
19
- // new build, clear errors
20
- result.errorMessages = [];
21
- const adjustables = this.getAdjustables();
22
- if (adjustables && adjustables.length === 0 && this.selections && this.selections.length > 0) { // check if article has a gameObject
23
- if (this.selections[0].nodeType === NodeType.Article && this.selections[0].gameObject) {
24
- adjustables.push(this.selections[0]);
25
- }
26
- }
27
- const item = this.createConfigurableItem(result.articleName);
28
- if (adjustables && adjustables.length > 0) {
29
- let connected = false;
30
- for (let i = 0, len = adjustables.length; i < len; i++) {
31
- const adjustable = this.createAdjustable(item, adjustables[i]);
32
- if (adjustable) {
33
- for (let ii = this.placedAdjustables.length - 1; ii >= 0; ii--) {
34
- if (this.isMoveableObject(adjustable)) { // vrije verplaatsing mogelijk, connecten aan opgeslagen connector
35
- const selection = adjustable.userData.selection;
36
- this.addElementOnConnector(item, adjustable, selection.decoConnection ? selection.decoConnection : this.activeConnector, this.baseElementNodeId);
37
- adjustable.visible = true;
38
- connected = true;
39
- break;
40
- }
41
- else {
42
- if (Scene3DUtil.TrySelectorConnection(this.scene, item, this.placedAdjustables[ii], adjustable, i === 1)) {
43
- adjustable.visible = true;
44
- connected = true;
45
- break;
46
- }
47
- }
48
- connected = false;
49
- }
50
- }
51
- if (!connected && this.placedAdjustables.length > 1) {
52
- DebugUtils.log(`No connection found for: ${adjustable ? adjustable.name : adjustables[i].decoNode.gameObjectName}`);
53
- result.errorMessages.push(new ConfiguratorErrorMessage(`No connection found for: ${adjustable ? adjustable.name : adjustables[i].decoNode.gameObjectName}`));
54
- }
55
- }
56
- this.placeAddables(item);
57
- Scene3DUtil.updatePivot(item);
58
- yield this.loadVariations(item, result.instanceId);
59
- yield this.updateBuildObject(item, result);
60
- this.currentCustomFloorGroup = result.object;
61
- this.arPlacementUpdate.next(true);
62
- // this.handleIntegration(result.instanceId, this.currentCustomFloorGroup);
63
- this.emptyAnswerSelected();
64
- this.emptySelectionsSelected();
65
- if (this.currentCustomFloorGroup.children.length === 0) {
66
- result.resultType = ResultType.GameobjectNameMismatchInSource;
67
- return Promise.reject(result);
68
- }
69
- }
70
- else {
71
- result.errorMessages.push(new ConfiguratorErrorMessage('NO_ADJUSTABLES', 'NO_ADJUSTABLES_INFO'));
72
- result.resultType = ResultType.NoAdjustables;
73
- return Promise.reject(result);
74
- }
75
- if (result.resultType === ResultType.NoSelections) {
76
- result.resultType = ResultType.ConfigurationFixed;
77
- }
78
- else if (result.resultType !== ResultType.Obsolete && result.resultType !== ResultType.ConfigurationFixed) { // don't override these
79
- result.resultType = ResultType.Loaded;
80
- }
81
- this.appEventService.buildFinished.next(result);
82
- return result;
83
- });
84
- }
85
- createNonConfigurableFloor(result) {
86
- return __awaiter(this, void 0, void 0, function* () {
87
- const assetUrl = result.assetUrl;
88
- const floorMaterial = yield this.variationService.loadVariationByAssetUrl(assetUrl);
89
- result.material = floorMaterial;
90
- this.appEventService.buildFinished.next(result);
91
- return result;
92
- });
93
- }
94
- startToBuild(result, shouldCopyInstance = false, looseOriginalConfiguration = true, standAlone = false, firstBuild = false, fromPreset = false, loadFromProject = false) {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- if (isNill(result)) {
97
- result = new ConfigurationResultObject();
98
- }
99
- result = yield this.prepareInstanceForBuild(shouldCopyInstance, loadFromProject, looseOriginalConfiguration, result);
100
- this.startPosition = new Vector3();
101
- if (loadFromProject) {
102
- this.reset();
103
- this.configuratorConnectorService.setSelections(result.selections);
104
- this.configuratorConnectorService.setDecoNodes(Array.from(result.decos.values()));
105
- this.preloadMaterials(result.schema);
106
- this.prepareTheSelections(result.instanceId);
107
- return this.build(result);
108
- }
109
- else {
110
- yield this.configuratorConnectorService.getQuestionAndAnswersAsync(); // see if there is user input needed
111
- if (this.configuratorConnectorService.activeAnswers.length === 0) {
112
- yield this.prepareSelectionsAndDecos(result)
113
- .catch((e) => Promise.reject(e));
114
- return this.build(result);
115
- }
116
- else {
117
- if (firstBuild) {
118
- yield this.prepareSelectionsAndDecos(result).catch((e) => Promise.reject(e));
119
- if (this.configuratorConnectorService.selections.length < 1) {
120
- result.resultType = ResultType.NeedsUserInput;
121
- }
122
- else if (this.configuratorConnectorService.selections.length < 2) {
123
- result.resultType = ResultType.BuildFromScratch;
124
- }
125
- else if (this.configuratorConnectorService.selections.length > 1) {
126
- result.resultType = ResultType.NeedsUserInput;
127
- }
128
- this.appEventService.buildFinished.next(result);
129
- return result;
130
- }
131
- }
132
- }
133
- });
134
- }
135
- createSimple3DModel(result) {
136
- if (!this.full3DObjectToUse) { // there's no 3d model so get out
137
- return result;
138
- }
139
- this.configuratorConnectorService.emptySelections();
140
- this.full3DObjectToUse.children.forEach(c => c.visible = true);
141
- result.object = this.full3DObjectToUse;
142
- Scene3DUtil.updatePivot(result.object);
143
- if (result.default180) {
144
- result.object.rotation.set(this.defaultRotation.x, this.defaultRotation.y, this.defaultRotation.z);
145
- }
146
- this.appEventService.buildFinished.next(result);
147
- return result;
148
- }
149
- startToBuildFromConfigurator(data) {
150
- return this.startToBuild(data);
151
- }
152
- prepareSelectionsAndDecos(result) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- this.reset();
155
- yield this.getSelectionsAndDecos();
156
- this.preloadMaterials(result.schema);
157
- return yield this.handlePrepareSelectionsDecos(result);
158
- });
159
- }
160
- }
161
- BuildFurnitureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
162
- BuildFurnitureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureService, providedIn: 'root' });
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BuildFurnitureService, decorators: [{
164
- type: Injectable,
165
- args: [{
166
- providedIn: 'root'
167
- }]
168
- }] });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZnVybml0dXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25maWd1cmF0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9idWlsZC1mdXJuaXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQXFCLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDN0UsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUtwRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEseUJBQXlCO0lBRXJELEtBQUssQ0FBQyxNQUFpQzs7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLGlDQUFpQztnQkFDOUQsT0FBTyxNQUFNLENBQUM7YUFDZjtZQUVELDBCQUEwQjtZQUMxQixNQUFNLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUUxQixNQUFNLFdBQVcsR0FBZ0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElB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QUNoQixDQUFDO0lBRU0sNEJBQTRCLENBQUMsSUFBK0I7UUFDakUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFWSx5QkFBeUIsQ0FDcEMsTUFBaUM7O1lBRWpDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxPQUFPLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELENBQUM7S0FBQTs7bUhBOUtVLHFCQUFxQjt1SEFBckIscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRlcmlhbCwgT2JqZWN0M0QsIFZlY3RvcjN9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9lbnVtL25vZGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtCdWlsZEZ1cm5pdHVyZUJhc2VTZXJ2aWNlfSBmcm9tICcuL2J1aWxkLWZ1cm5pdHVyZS1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQge2lzTmlsbH0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC91dGlscy9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uJztcclxuaW1wb3J0IHtDb25maWd1cmF0b3JFcnJvck1lc3NhZ2V9IGZyb20gJy4uL21vZGVsL2NvbmZpZ3VyYXRvci1lcnJvci1tZXNzYWdlJztcclxuaW1wb3J0IHtSZXN1bHRUeXBlfSBmcm9tICcuLi9lbnVtL3Jlc3VsdC10eXBlLmVudW0nO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3R9IGZyb20gJy4uL21vZGVsL2NvbmZpZ3VyYXRpb24tcmVzdWx0LW9iamVjdCc7XHJcbmltcG9ydCB7RGVidWdVdGlsc30gZnJvbSAnLi4vdXRpbHMvZGVidWcudXRpbHMnO1xyXG5pbXBvcnQge1NjZW5lM0RVdGlsfSBmcm9tICcuLi91dGlscy9zY2VuZS0zZC51dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWlsZEZ1cm5pdHVyZVNlcnZpY2UgZXh0ZW5kcyBCdWlsZEZ1cm5pdHVyZUJhc2VTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIGFzeW5jIGJ1aWxkKHJlc3VsdDogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCk6IFByb21pc2U8Q29uZmlndXJhdGlvblJlc3VsdE9iamVjdD4ge1xyXG4gICAgaWYgKCF0aGlzLmZ1bGwzRE9iamVjdFRvVXNlKSB7IC8vIHRoZXJlJ3Mgbm8gM2QgbW9kZWwgc28gZ2V0IG91dFxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5ldyBidWlsZCwgY2xlYXIgZXJyb3JzXHJcbiAgICByZXN1bHQuZXJyb3JNZXNzYWdlcyA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGFkanVzdGFibGVzOiBTZWxlY3Rpb25bXSA9IHRoaXMuZ2V0QWRqdXN0YWJsZXMoKTtcclxuICAgIGlmIChhZGp1c3RhYmxlcyAmJiBhZGp1c3RhYmxlcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3Rpb25zICYmIHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggPiAwKSB7IC8vIGNoZWNrIGlmIGFydGljbGUgaGFzIGEgZ2FtZU9iamVjdFxyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25zWzBdLm5vZGVUeXBlID09PSBOb2RlVHlwZS5BcnRpY2xlICYmIHRoaXMuc2VsZWN0aW9uc1swXS5nYW1lT2JqZWN0KSB7XHJcbiAgICAgICAgYWRqdXN0YWJsZXMucHVzaCh0aGlzLnNlbGVjdGlvbnNbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbTogT2JqZWN0M0QgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYWJsZUl0ZW0ocmVzdWx0LmFydGljbGVOYW1lKTtcclxuXHJcbiAgICBpZiAoYWRqdXN0YWJsZXMgJiYgYWRqdXN0YWJsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY29ubmVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gYWRqdXN0YWJsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBjb25zdCBhZGp1c3RhYmxlOiBPYmplY3QzRCA9IHRoaXMuY3JlYXRlQWRqdXN0YWJsZShpdGVtLCBhZGp1c3RhYmxlc1tpXSk7XHJcbiAgICAgICAgaWYgKGFkanVzdGFibGUpIHtcclxuICAgICAgICAgIGZvciAobGV0IGlpID0gdGhpcy5wbGFjZWRBZGp1c3RhYmxlcy5sZW5ndGggLSAxOyBpaSA+PSAwOyBpaS0tKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTW92ZWFibGVPYmplY3QoYWRqdXN0YWJsZSkpIHsgLy8gdnJpamUgdmVycGxhYXRzaW5nIG1vZ2VsaWprLCBjb25uZWN0ZW4gYWFuIG9wZ2VzbGFnZW4gY29ubmVjdG9yXHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBTZWxlY3Rpb24gPSBhZGp1c3RhYmxlLnVzZXJEYXRhLnNlbGVjdGlvbjtcclxuICAgICAgICAgICAgICB0aGlzLmFkZEVsZW1lbnRPbkNvbm5lY3RvcihcclxuICAgICAgICAgICAgICAgIGl0ZW0sXHJcbiAgICAgICAgICAgICAgICBhZGp1c3RhYmxlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmRlY29Db25uZWN0aW9uID8gc2VsZWN0aW9uLmRlY29Db25uZWN0aW9uIDogdGhpcy5hY3RpdmVDb25uZWN0b3IsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VFbGVtZW50Tm9kZUlkXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBhZGp1c3RhYmxlLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGNvbm5lY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKFNjZW5lM0RVdGlsLlRyeVNlbGVjdG9yQ29ubmVjdGlvbihcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NlbmUsXHJcbiAgICAgICAgICAgICAgICBpdGVtLCB0aGlzLnBsYWNlZEFkanVzdGFibGVzW2lpXSwgYWRqdXN0YWJsZSwgaSA9PT0gMSkpIHtcclxuICAgICAgICAgICAgICAgIGFkanVzdGFibGUudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25uZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFjb25uZWN0ZWQgJiYgdGhpcy5wbGFjZWRBZGp1c3RhYmxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBEZWJ1Z1V0aWxzLmxvZyhgTm8gY29ubmVjdGlvbiBmb3VuZCBmb3I6ICR7YWRqdXN0YWJsZSA/IGFkanVzdGFibGUubmFtZSA6IGFkanVzdGFibGVzW2ldLmRlY29Ob2RlLmdhbWVPYmplY3ROYW1lfWApO1xyXG4gICAgICAgICAgcmVzdWx0LmVycm9yTWVzc2FnZXMucHVzaChcclxuICAgICAgICAgICAgbmV3IENvbmZpZ3VyYXRvckVycm9yTWVzc2FnZShgTm8gY29ubmVjdGlvbiBmb3VuZCBmb3I6ICR7YWRqdXN0YWJsZSA/IGFkanVzdGFibGUubmFtZSA6IGFkanVzdGFibGVzW2ldLmRlY29Ob2RlLmdhbWVPYmplY3ROYW1lfWApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBsYWNlQWRkYWJsZXMoaXRlbSk7XHJcblxyXG4gICAgICBTY2VuZTNEVXRpbC51cGRhdGVQaXZvdChpdGVtKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMubG9hZFZhcmlhdGlvbnMoaXRlbSwgcmVzdWx0Lmluc3RhbmNlSWQpO1xyXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUJ1aWxkT2JqZWN0KGl0ZW0sIHJlc3VsdCk7XHJcblxyXG4gICAgICB0aGlzLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwID0gcmVzdWx0Lm9iamVjdDtcclxuXHJcbiAgICAgIHRoaXMuYXJQbGFjZW1lbnRVcGRhdGUubmV4dCh0cnVlKTtcclxuICAgICAgLy8gdGhpcy5oYW5kbGVJbnRlZ3JhdGlvbihyZXN1bHQuaW5zdGFuY2VJZCwgdGhpcy5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cCk7XHJcbiAgICAgIHRoaXMuZW1wdHlBbnN3ZXJTZWxlY3RlZCgpO1xyXG4gICAgICB0aGlzLmVtcHR5U2VsZWN0aW9uc1NlbGVjdGVkKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXN1bHQucmVzdWx0VHlwZSA9IFJlc3VsdFR5cGUuR2FtZW9iamVjdE5hbWVNaXNtYXRjaEluU291cmNlO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHQuZXJyb3JNZXNzYWdlcy5wdXNoKG5ldyBDb25maWd1cmF0b3JFcnJvck1lc3NhZ2UoJ05PX0FESlVTVEFCTEVTJywgJ05PX0FESlVTVEFCTEVTX0lORk8nKSk7XHJcbiAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gUmVzdWx0VHlwZS5Ob0FkanVzdGFibGVzO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmIChyZXN1bHQucmVzdWx0VHlwZSA9PT0gUmVzdWx0VHlwZS5Ob1NlbGVjdGlvbnMpIHtcclxuICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlLkNvbmZpZ3VyYXRpb25GaXhlZDtcclxuICAgIH0gZWxzZSBpZiAocmVzdWx0LnJlc3VsdFR5cGUgIT09IFJlc3VsdFR5cGUuT2Jzb2xldGUgJiYgcmVzdWx0LnJlc3VsdFR5cGUgIT09IFJlc3VsdFR5cGUuQ29uZmlndXJhdGlvbkZpeGVkKSB7IC8vIGRvbid0IG92ZXJyaWRlIHRoZXNlXHJcbiAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gUmVzdWx0VHlwZS5Mb2FkZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBFdmVudFNlcnZpY2UuYnVpbGRGaW5pc2hlZC5uZXh0KHJlc3VsdCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNyZWF0ZU5vbkNvbmZpZ3VyYWJsZUZsb29yKHJlc3VsdDogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCk6IFByb21pc2U8Q29uZmlndXJhdGlvblJlc3VsdE9iamVjdD4ge1xyXG4gICAgY29uc3QgYXNzZXRVcmw6IHN0cmluZyA9IHJlc3VsdC5hc3NldFVybDtcclxuICAgIGNvbnN0IGZsb29yTWF0ZXJpYWw6IE1hdGVyaWFsID0gYXdhaXQgdGhpcy52YXJpYXRpb25TZXJ2aWNlLmxvYWRWYXJpYXRpb25CeUFzc2V0VXJsKGFzc2V0VXJsKTtcclxuICAgIHJlc3VsdC5tYXRlcmlhbCA9IGZsb29yTWF0ZXJpYWw7XHJcbiAgICB0aGlzLmFwcEV2ZW50U2VydmljZS5idWlsZEZpbmlzaGVkLm5leHQocmVzdWx0KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc3RhcnRUb0J1aWxkKFxyXG4gICAgcmVzdWx0PzogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCxcclxuICAgIHNob3VsZENvcHlJbnN0YW5jZTogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbG9vc2VPcmlnaW5hbENvbmZpZ3VyYXRpb246IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgc3RhbmRBbG9uZTogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgZmlyc3RCdWlsZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgZnJvbVByZXNldDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbG9hZEZyb21Qcm9qZWN0OiBib29sZWFuID0gZmFsc2VcclxuICApOiBQcm9taXNlPENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3Q+IHtcclxuXHJcbiAgICBpZiAoaXNOaWxsKHJlc3VsdCkpIHtcclxuICAgICAgcmVzdWx0ID0gbmV3IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnByZXBhcmVJbnN0YW5jZUZvckJ1aWxkKHNob3VsZENvcHlJbnN0YW5jZSwgbG9hZEZyb21Qcm9qZWN0LCBsb29zZU9yaWdpbmFsQ29uZmlndXJhdGlvbiwgcmVzdWx0KTtcclxuXHJcbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xyXG5cclxuICAgIGlmIChsb2FkRnJvbVByb2plY3QpIHtcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRvckNvbm5lY3RvclNlcnZpY2Uuc2V0U2VsZWN0aW9ucyhyZXN1bHQuc2VsZWN0aW9ucyk7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5zZXREZWNvTm9kZXMoQXJyYXkuZnJvbShyZXN1bHQuZGVjb3MudmFsdWVzKCkpKTtcclxuICAgICAgdGhpcy5wcmVsb2FkTWF0ZXJpYWxzKHJlc3VsdC5zY2hlbWEpO1xyXG4gICAgICB0aGlzLnByZXBhcmVUaGVTZWxlY3Rpb25zKHJlc3VsdC5pbnN0YW5jZUlkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGQocmVzdWx0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5nZXRRdWVzdGlvbkFuZEFuc3dlcnNBc3luYygpOyAvLyBzZWUgaWYgdGhlcmUgaXMgdXNlciBpbnB1dCBuZWVkZWRcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5hY3RpdmVBbnN3ZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZVNlbGVjdGlvbnNBbmREZWNvcyhyZXN1bHQpXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IFByb21pc2UucmVqZWN0KGUpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZChyZXN1bHQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChmaXJzdEJ1aWxkKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVTZWxlY3Rpb25zQW5kRGVjb3MocmVzdWx0KS5jYXRjaCgoZSkgPT4gUHJvbWlzZS5yZWplY3QoZSkpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5zZWxlY3Rpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlLk5lZWRzVXNlcklucHV0O1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRvckNvbm5lY3RvclNlcnZpY2Uuc2VsZWN0aW9ucy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gUmVzdWx0VHlwZS5CdWlsZEZyb21TY3JhdGNoO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRvckNvbm5lY3RvclNlcnZpY2Uuc2VsZWN0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gUmVzdWx0VHlwZS5OZWVkc1VzZXJJbnB1dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYXBwRXZlbnRTZXJ2aWNlLmJ1aWxkRmluaXNoZWQubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVTaW1wbGUzRE1vZGVsKHJlc3VsdDogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCk6IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3Qge1xyXG5cclxuICAgIGlmICghdGhpcy5mdWxsM0RPYmplY3RUb1VzZSkgeyAvLyB0aGVyZSdzIG5vIDNkIG1vZGVsIHNvIGdldCBvdXRcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHRoaXMuY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZS5lbXB0eVNlbGVjdGlvbnMoKTtcclxuICAgIHRoaXMuZnVsbDNET2JqZWN0VG9Vc2UuY2hpbGRyZW4uZm9yRWFjaChjID0+IGMudmlzaWJsZSA9IHRydWUpO1xyXG4gICAgcmVzdWx0Lm9iamVjdCA9IHRoaXMuZnVsbDNET2JqZWN0VG9Vc2U7XHJcblxyXG4gICAgU2NlbmUzRFV0aWwudXBkYXRlUGl2b3QocmVzdWx0Lm9iamVjdCk7XHJcblxyXG4gICAgaWYgKHJlc3VsdC5kZWZhdWx0MTgwKSB7XHJcbiAgICAgIHJlc3VsdC5vYmplY3Qucm90YXRpb24uc2V0KHRoaXMuZGVmYXVsdFJvdGF0aW9uLngsIHRoaXMuZGVmYXVsdFJvdGF0aW9uLnksIHRoaXMuZGVmYXVsdFJvdGF0aW9uLnopO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBFdmVudFNlcnZpY2UuYnVpbGRGaW5pc2hlZC5uZXh0KHJlc3VsdCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0VG9CdWlsZEZyb21Db25maWd1cmF0b3IoZGF0YTogQ29uZmlndXJhdGlvblJlc3VsdE9iamVjdCk6IFByb21pc2U8Q29uZmlndXJhdGlvblJlc3VsdE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhcnRUb0J1aWxkKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHByZXBhcmVTZWxlY3Rpb25zQW5kRGVjb3MoXHJcbiAgICByZXN1bHQ6IENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3RcclxuICApOiBQcm9taXNlPENvbmZpZ3VyYXRpb25SZXN1bHRPYmplY3Q+IHtcclxuICAgIHRoaXMucmVzZXQoKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0U2VsZWN0aW9uc0FuZERlY29zKCk7XHJcbiAgICB0aGlzLnByZWxvYWRNYXRlcmlhbHMocmVzdWx0LnNjaGVtYSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQcmVwYXJlU2VsZWN0aW9uc0RlY29zKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,113 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Texture } from '../model/texture';
3
- import { LightPreset } from '../model/light-preset';
4
- import { BehaviorSubject } from 'rxjs';
5
- import { Injectable } from '@angular/core';
6
- import { MaterialUtils } from '../utils/material.utils';
7
- import { DebugUtils } from '../utils/debug.utils';
8
- import { Setting } from '../model/settings';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./json-utils.service";
11
- import * as i2 from "./settings.service";
12
- import * as i3 from "./configurator-connector.service";
13
- import * as i4 from "./app-initializer.service";
14
- import * as i5 from "./configuration.service";
15
- import * as i6 from "./scene.service";
16
- import * as i7 from "./scene-options.service";
17
- export class BundleInitializerService {
18
- constructor(_jsonUtilsService, _settingsService, _ioneControllerService, _appInitializerService, _configurationService, _sceneService, _sceneOptionsService) {
19
- this._jsonUtilsService = _jsonUtilsService;
20
- this._settingsService = _settingsService;
21
- this._ioneControllerService = _ioneControllerService;
22
- this._appInitializerService = _appInitializerService;
23
- this._configurationService = _configurationService;
24
- this._sceneService = _sceneService;
25
- this._sceneOptionsService = _sceneOptionsService;
26
- this.settings = [];
27
- this.floorTexturesLoaded = new BehaviorSubject(undefined);
28
- this.lightPresetsLoaded = new BehaviorSubject(undefined);
29
- this.settingsLoaded = new BehaviorSubject(undefined);
30
- this.allLoaded = new BehaviorSubject(undefined);
31
- this._connectionSet = false;
32
- this._subs = [];
33
- this._jsonFile = 'index.json';
34
- this._lightPresetsJsonFile = 'light-presets.json';
35
- this._appInitializerService.appInitialized.subscribe((loaded) => __awaiter(this, void 0, void 0, function* () {
36
- if (loaded && !this._connectionSet) {
37
- this._assetPath = this._settingsService.settings.assetPath;
38
- if (this._settingsService.settings.assetIndex) {
39
- this._jsonFile = this._settingsService.settings.assetIndex;
40
- }
41
- if (this._settingsService.settings.lightPresetsIndex) {
42
- this._lightPresetsJsonFile = this._settingsService.settings.lightPresetsIndex;
43
- }
44
- MaterialUtils.SetAssetPath(this._assetPath);
45
- yield this._initialize();
46
- this._connectionSet = true;
47
- this.allLoaded.next(true);
48
- }
49
- }));
50
- }
51
- ngOnDestroy() {
52
- this.floorTextures = [];
53
- this.lightPresets = [];
54
- this._subs.forEach(s => s.unsubscribe());
55
- }
56
- getFloorTextures() {
57
- return this.floorTextures ? this.floorTextures.filter(f => f.show && f.useStandalone) : [];
58
- }
59
- getFloorTexture() {
60
- return this.floorTextures ? this.floorTextures.find(f => f.show && f.useStandalone && f.defaultStandalone) : undefined;
61
- }
62
- getLightPreset() {
63
- return this.lightPresets ? this.lightPresets.filter(l => l.default && l.standalone) : [];
64
- }
65
- _initialize() {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- try {
68
- const indexFile = yield this._jsonUtilsService.readJsonFile(this._assetPath + 'assets/' + this._jsonFile, false);
69
- const lightPresets = yield this._jsonUtilsService.readJsonFile(this._assetPath + 'assets/' + this._lightPresetsJsonFile, false);
70
- if (indexFile.hasOwnProperty('floors')) {
71
- this.floorTextures = indexFile['floors'].map((floorTextureDef) => this._createTexture(floorTextureDef));
72
- this.floorTexturesLoaded.next(this.floorTextures);
73
- }
74
- else {
75
- DebugUtils.log('No floor textures available');
76
- }
77
- if (lightPresets.hasOwnProperty('lightpresets')) {
78
- this.lightPresets = lightPresets['lightpresets'].map((lightPresetDef) => this._createLightPreset(lightPresetDef));
79
- this.lightPresetsLoaded.next(this.lightPresets);
80
- }
81
- else {
82
- this.lightPresetsLoaded.next([]);
83
- }
84
- if (lightPresets.hasOwnProperty('settings')) {
85
- this.settings = lightPresets['settings'].map((settingsDef) => this._createSettings(settingsDef));
86
- this.settingsLoaded.next(this.settings);
87
- }
88
- else {
89
- this.settingsLoaded.next(undefined);
90
- }
91
- }
92
- catch (e) {
93
- console.error(e);
94
- }
95
- });
96
- }
97
- _createTexture(texture) {
98
- return Texture.CreateModelFromInterface(texture);
99
- }
100
- _createLightPreset(lightPreset) {
101
- return LightPreset.CreateModelFromInterface(lightPreset);
102
- }
103
- _createSettings(setting) {
104
- return Setting.CreateModelFromInterface(setting);
105
- }
106
- }
107
- BundleInitializerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BundleInitializerService, deps: [{ token: i1.JsonUtilsService }, { token: i2.SettingsService }, { token: i3.ConfiguratorConnectorService }, { token: i4.AppInitializerService }, { token: i5.ConfigurationService }, { token: i6.SceneService }, { token: i7.SceneOptionsService }], target: i0.ɵɵFactoryTarget.Injectable });
108
- BundleInitializerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BundleInitializerService, providedIn: 'root' });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BundleInitializerService, decorators: [{
110
- type: Injectable,
111
- args: [{ providedIn: 'root' }]
112
- }], ctorParameters: function () { return [{ type: i1.JsonUtilsService }, { type: i2.SettingsService }, { type: i3.ConfiguratorConnectorService }, { type: i4.AppInitializerService }, { type: i5.ConfigurationService }, { type: i6.SceneService }, { type: i7.SceneOptionsService }]; } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWluaXRpYWx6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL2J1bmRsZS1pbml0aWFsemVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUtuRCxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQU10RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7QUFLMUMsTUFBTSxPQUFPLHdCQUF3QjtJQWlCbkMsWUFDVSxpQkFBbUMsRUFDbkMsZ0JBQWlDLEVBQ2pDLHNCQUFvRCxFQUNwRCxzQkFBNkMsRUFDN0MscUJBQTJDLEVBQzNDLGFBQTJCLEVBQzNCLG9CQUF5QztRQU56QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUE4QjtRQUNwRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQXBCNUMsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUV6Qix3QkFBbUIsR0FBK0IsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFD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V0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDbkgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN6QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDckM7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDO0tBQUE7SUFFTyxjQUFjLENBQUMsT0FBeUI7UUFDOUMsT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQWlDO1FBQzFELE9BQU8sV0FBVyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxlQUFlLENBQUMsT0FBeUI7UUFDL0MsT0FBTyxPQUFPLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7c0hBckdVLHdCQUF3QjswSEFBeEIsd0JBQXdCLGNBRlosTUFBTTs0RkFFbEIsd0JBQXdCO2tCQUZwQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGV4dHVyZX0gZnJvbSAnLi4vbW9kZWwvdGV4dHVyZSc7XHJcbmltcG9ydCB7TGlnaHRQcmVzZXR9IGZyb20gJy4uL21vZGVsL2xpZ2h0LXByZXNldCc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0pzb25VdGlsc1NlcnZpY2V9IGZyb20gJy4vanNvbi11dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4vc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi9jb25maWd1cmF0b3ItY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRlcmlhbFV0aWxzfSBmcm9tICcuLi91dGlscy9tYXRlcmlhbC51dGlscyc7XHJcbmltcG9ydCB7VGV4dHVyZUludGVyZmFjZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy90ZXh0dXJlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7TGlnaHRQcmVzZXRJbnRlcmZhY2V9IGZyb20gJy4uL2ludGVyZmFjZXMvbGlnaHQtcHJlc2V0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7U2NlbmVTZXJ2aWNlfSBmcm9tICcuL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lT3B0aW9uc1NlcnZpY2V9IGZyb20gJy4vc2NlbmUtb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcHBJbml0aWFsaXplclNlcnZpY2V9IGZyb20gJy4vYXBwLWluaXRpYWxpemVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RlYnVnVXRpbHN9IGZyb20gJy4uL3V0aWxzL2RlYnVnLnV0aWxzJztcclxuaW1wb3J0IHtTZXR0aW5nfSBmcm9tICcuLi9tb2RlbC9zZXR0aW5ncyc7XHJcbmltcG9ydCB7U2V0dGluZ0ludGVyZmFjZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXR0aW5nLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCdW5kbGVJbml0aWFsaXplclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgZmxvb3JUZXh0dXJlczogVGV4dHVyZVtdO1xyXG4gIHB1YmxpYyBsaWdodFByZXNldHM6IExpZ2h0UHJlc2V0W107XHJcbiAgcHVibGljIHNldHRpbmdzOiBTZXR0aW5nW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGZsb29yVGV4dHVyZXNMb2FkZWQ6IEJlaGF2aW9yU3ViamVjdDxUZXh0dXJlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0dXJlW10+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIGxpZ2h0UHJlc2V0c0xvYWRlZDogQmVoYXZpb3JTdWJqZWN0PExpZ2h0UHJlc2V0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMaWdodFByZXNldFtdPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyBzZXR0aW5nc0xvYWRlZDogQmVoYXZpb3JTdWJqZWN0PFNldHRpbmdbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNldHRpbmdbXT4odW5kZWZpbmVkKTtcclxuICBwdWJsaWMgYWxsTG9hZGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByaXZhdGUgX2Fzc2V0UGF0aDogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2Nvbm5lY3Rpb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgX2pzb25GaWxlOiBzdHJpbmcgPSAnaW5kZXguanNvbic7XHJcbiAgcHJpdmF0ZSBfbGlnaHRQcmVzZXRzSnNvbkZpbGU6IHN0cmluZyA9ICdsaWdodC1wcmVzZXRzLmpzb24nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2pzb25VdGlsc1NlcnZpY2U6IEpzb25VdGlsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2lvbmVDb250cm9sbGVyU2VydmljZTogQ29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcEluaXRpYWxpemVyU2VydmljZTogQXBwSW5pdGlhbGl6ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZU9wdGlvbnNTZXJ2aWNlOiBTY2VuZU9wdGlvbnNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9hcHBJbml0aWFsaXplclNlcnZpY2UuYXBwSW5pdGlhbGl6ZWQuc3Vic2NyaWJlKGFzeW5jIChsb2FkZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGxvYWRlZCAmJiAhdGhpcy5fY29ubmVjdGlvblNldCkge1xyXG4gICAgICAgIHRoaXMuX2Fzc2V0UGF0aCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5hc3NldFBhdGg7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5hc3NldEluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLl9qc29uRmlsZSA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5hc3NldEluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLmxpZ2h0UHJlc2V0c0luZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLl9saWdodFByZXNldHNKc29uRmlsZSA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5saWdodFByZXNldHNJbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgTWF0ZXJpYWxVdGlscy5TZXRBc3NldFBhdGgodGhpcy5fYXNzZXRQYXRoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLl9pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvblNldCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbGxMb2FkZWQubmV4dCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxvb3JUZXh0dXJlcyA9IFtdO1xyXG4gICAgdGhpcy5saWdodFByZXNldHMgPSBbXTtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Rmxvb3JUZXh0dXJlcygpOiBUZXh0dXJlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmxvb3JUZXh0dXJlcyA/IHRoaXMuZmxvb3JUZXh0dXJlcy5maWx0ZXIoZiA9PiBmLnNob3cgJiYgZi51c2VTdGFuZGFsb25lKSA6IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZsb29yVGV4dHVyZSgpOiBUZXh0dXJlIHtcclxuICAgIHJldHVybiB0aGlzLmZsb29yVGV4dHVyZXMgPyB0aGlzLmZsb29yVGV4dHVyZXMuZmluZChmID0+IGYuc2hvdyAmJiBmLnVzZVN0YW5kYWxvbmUgJiYgZi5kZWZhdWx0U3RhbmRhbG9uZSkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlnaHRQcmVzZXQoKTogTGlnaHRQcmVzZXRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5saWdodFByZXNldHMgPyB0aGlzLmxpZ2h0UHJlc2V0cy5maWx0ZXIobCA9PiBsLmRlZmF1bHQgJiYgbC5zdGFuZGFsb25lKSA6IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGluZGV4RmlsZTogYW55ID0gYXdhaXQgdGhpcy5fanNvblV0aWxzU2VydmljZS5yZWFkSnNvbkZpbGUodGhpcy5fYXNzZXRQYXRoICsgJ2Fzc2V0cy8nICsgdGhpcy5fanNvbkZpbGUsIGZhbHNlKTtcclxuICAgICAgY29uc3QgbGlnaHRQcmVzZXRzOiBhbnkgPSBhd2FpdCB0aGlzLl9qc29uVXRpbHNTZXJ2aWNlLnJlYWRKc29uRmlsZSh0aGlzLl9hc3NldFBhdGggKyAnYXNzZXRzLycgKyB0aGlzLl9saWdodFByZXNldHNKc29uRmlsZSwgZmFsc2UpO1xyXG5cclxuICAgICAgaWYgKGluZGV4RmlsZS5oYXNPd25Qcm9wZXJ0eSgnZmxvb3JzJykpIHtcclxuICAgICAgICB0aGlzLmZsb29yVGV4dHVyZXMgPSBpbmRleEZpbGVbJ2Zsb29ycyddLm1hcCgoZmxvb3JUZXh0dXJlRGVmOiBUZXh0dXJlSW50ZXJmYWNlKSA9PiB0aGlzLl9jcmVhdGVUZXh0dXJlKGZsb29yVGV4dHVyZURlZikpO1xyXG4gICAgICAgIHRoaXMuZmxvb3JUZXh0dXJlc0xvYWRlZC5uZXh0KHRoaXMuZmxvb3JUZXh0dXJlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgRGVidWdVdGlscy5sb2coJ05vIGZsb29yIHRleHR1cmVzIGF2YWlsYWJsZScpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobGlnaHRQcmVzZXRzLmhhc093blByb3BlcnR5KCdsaWdodHByZXNldHMnKSkge1xyXG4gICAgICAgIHRoaXMubGlnaHRQcmVzZXRzID0gbGlnaHRQcmVzZXRzWydsaWdodHByZXNldHMnXS5tYXAoKGxpZ2h0UHJlc2V0RGVmOiBMaWdodFByZXNldEludGVyZmFjZSkgPT4gdGhpcy5fY3JlYXRlTGlnaHRQcmVzZXQobGlnaHRQcmVzZXREZWYpKTtcclxuICAgICAgICB0aGlzLmxpZ2h0UHJlc2V0c0xvYWRlZC5uZXh0KHRoaXMubGlnaHRQcmVzZXRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxpZ2h0UHJlc2V0c0xvYWRlZC5uZXh0KFtdKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGxpZ2h0UHJlc2V0cy5oYXNPd25Qcm9wZXJ0eSgnc2V0dGluZ3MnKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBsaWdodFByZXNldHNbJ3NldHRpbmdzJ10ubWFwKChzZXR0aW5nc0RlZjogU2V0dGluZ0ludGVyZmFjZSkgPT4gdGhpcy5fY3JlYXRlU2V0dGluZ3Moc2V0dGluZ3NEZWYpKTtcclxuICAgICAgICB0aGlzLnNldHRpbmdzTG9hZGVkLm5leHQodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0xvYWRlZC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVRleHR1cmUodGV4dHVyZTogVGV4dHVyZUludGVyZmFjZSk6IFRleHR1cmUge1xyXG4gICAgcmV0dXJuIFRleHR1cmUuQ3JlYXRlTW9kZWxGcm9tSW50ZXJmYWNlKHRleHR1cmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlTGlnaHRQcmVzZXQobGlnaHRQcmVzZXQ6IExpZ2h0UHJlc2V0SW50ZXJmYWNlKTogTGlnaHRQcmVzZXQge1xyXG4gICAgcmV0dXJuIExpZ2h0UHJlc2V0LkNyZWF0ZU1vZGVsRnJvbUludGVyZmFjZShsaWdodFByZXNldCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVTZXR0aW5ncyhzZXR0aW5nOiBTZXR0aW5nSW50ZXJmYWNlKTogU2V0dGluZyB7XHJcbiAgICByZXR1cm4gU2V0dGluZy5DcmVhdGVNb2RlbEZyb21JbnRlcmZhY2Uoc2V0dGluZyk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,123 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { Box3, PerspectiveCamera, Vector3 } from 'three';
4
- import { Subject } from 'rxjs';
5
- import { Controls } from './controls';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./settings.service";
8
- const DEFAULT_CAMERA_ASPECT_RATIO = 1;
9
- const DEFAULT_CAMERA_FOV = 45;
10
- const DEFAULT_CAMERA_FOCUS = 10;
11
- export class CameraService {
12
- constructor(_settingsService) {
13
- this._settingsService = _settingsService;
14
- this.panSpeed = 30;
15
- this.rotateBy = Math.PI / 32;
16
- this.moveBy = 25;
17
- this.cameraDefaultHeight = 1.7;
18
- this.targetDefaultOffset = 1;
19
- this.exploreDistanceFromCorner = 0.8;
20
- this.cameraMovementChanged = new Subject();
21
- this._cameraLocked = false;
22
- this._realAspectRatio = DEFAULT_CAMERA_ASPECT_RATIO;
23
- this._aspectRatio = window.innerWidth / window.innerHeight;
24
- this._subs = [];
25
- }
26
- get cameraLocked() {
27
- return this._cameraLocked;
28
- }
29
- set realAspectRatio(value) {
30
- this._realAspectRatio = value;
31
- }
32
- ngOnDestroy() {
33
- this._subs.forEach(s => s.unsubscribe());
34
- this.controls.removeEventListener('change', () => this._controlsUpdate());
35
- this.controls.removeEventListener('contextmenu');
36
- this.controls.removeEventListener('mousedown');
37
- this.controls.removeEventListener('wheel');
38
- this.controls.removeEventListener('touchstart');
39
- this.controls.removeEventListener('touchend');
40
- this.controls.removeEventListener('touchmove');
41
- window.removeEventListener('deviceorientation', this.controls.onDeviceMove(), false);
42
- window.removeEventListener('keydown', this.controls.onKeyDown(), false);
43
- this._element = undefined;
44
- }
45
- init(element) {
46
- this._element = element;
47
- this.camera = new PerspectiveCamera(45, 1, 0.01, 100);
48
- this.camera.position.set(0, 3, 1.5);
49
- this.camera.aspect = window.innerWidth / window.innerHeight;
50
- this.camera.updateProjectionMatrix();
51
- this.controls = new Controls(this.camera, this._element);
52
- this.controls.addEventListener('change', () => this._controlsUpdate());
53
- this.controls.update();
54
- }
55
- cameraZoomIn() {
56
- this.controls.dollyIn(1.1);
57
- this.controls.update();
58
- }
59
- cameraZoomOut() {
60
- this.controls.dollyOut(1.1);
61
- this.controls.update();
62
- }
63
- lockCamera() {
64
- this._cameraLocked = true;
65
- }
66
- unlockCamera() {
67
- this._cameraLocked = false;
68
- }
69
- disableRotate() {
70
- this.controls.noRotate = true;
71
- }
72
- disableRotateHorizontal() {
73
- this.controls.noRotateHorizontal = true;
74
- }
75
- disablePan() {
76
- this.controls.noPan = true;
77
- }
78
- disableZoom() {
79
- this.controls.noZoom = true;
80
- }
81
- moveCameraToFitObject(object, offset) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- if (!object) {
84
- return;
85
- }
86
- offset = offset || 1.15;
87
- // get bounding box of object - this will be used to setup controls and camera
88
- const boundingBox = new Box3();
89
- boundingBox.setFromObject(object);
90
- const center = new Vector3();
91
- boundingBox.getCenter(center);
92
- const size = new Vector3();
93
- boundingBox.getSize(size);
94
- // get the max side of the bounding box (fits to width OR height as needed )
95
- const maxDim = Math.max(size.x, size.y, size.z);
96
- const fov = this.camera.fov * (Math.PI / 180);
97
- // let cameraZ = Math.abs(maxDim / 4 * Math.tan(fov * 200));
98
- let cameraZ = Math.abs((maxDim / 2) / Math.tan(fov / 2));
99
- cameraZ *= offset; // zoom out a little so that objects don't fill the screen
100
- const newPosition = new Vector3(0, size.y * 1.25, cameraZ);
101
- if (this._settingsService.settings.options.useAnimations) {
102
- const tween = yield this.controls.animateCameraMovement(newPosition, center, 2000);
103
- }
104
- else {
105
- yield this.controls.fixedCameraMovement(newPosition, center);
106
- }
107
- });
108
- }
109
- _getCameraOffset(target, distance) {
110
- const targetDistance = distance * 1.5;
111
- return target.clone().add(new Vector3(0, targetDistance, targetDistance));
112
- }
113
- _controlsUpdate() {
114
- this.cameraMovementChanged.next();
115
- }
116
- }
117
- CameraService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CameraService, deps: [{ token: i1.SettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
118
- CameraService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CameraService, providedIn: 'root' });
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CameraService, decorators: [{
120
- type: Injectable,
121
- args: [{ providedIn: 'root' }]
122
- }], ctorParameters: function () { return [{ type: i1.SettingsService }]; } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25maWd1cmF0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9jYW1lcmEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsSUFBSSxFQUFtQixpQkFBaUIsRUFBdUIsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzdGLE9BQU8sRUFBQyxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFLM0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQzs7O0FBSXBDLE1BQU0sMkJBQTJCLEdBQVcsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sa0JBQWtCLEdBQVcsRUFBRSxDQUFDO0FBQ3RDLE1BQU0sb0JBQW9CLEdBQVcsRUFBRSxDQUFDO0FBSXhDLE1BQU0sT0FBTyxhQUFhO0lBK0J4QixZQUNVLGdCQUFpQztRQUFqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBOUIzQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLHdCQUFtQixHQUFXLEdBQUcsQ0FBQztRQUNsQyx3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMsOEJBQXlCLEdBQVcsR0FBRyxDQUFDO1FBSWpELDBCQUFxQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXBELGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBSy9CLHFCQUFnQixHQUFXLDJCQUEyQixDQUFDO1FBQ3ZELGlCQUFZLEdBQVcsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRTlELFVBQUssR0FBbUIsRUFBRSxDQUFDO0lBY25DLENBQUM7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Q0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLDBEQUEwRDtZQUU3RSxNQUFNLFdBQVcsR0FBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3BGO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDO0tBQUE7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsUUFBZ0I7UUFDeEQsTUFBTSxjQUFjLEdBQVcsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUM5QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQ3ZCLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7MkdBeElVLGFBQWE7K0dBQWIsYUFBYSxjQUZELE1BQU07NEZBRWxCLGFBQWE7a0JBRnpCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0JveDMsIEV1bGVyLCBPYmplY3QzRCwgUGVyc3BlY3RpdmVDYW1lcmEsIFF1YXRlcm5pb24sIFZlY3RvcjIsIFZlY3RvcjN9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBUV0VFTiBmcm9tICdAdHdlZW5qcy90d2Vlbi5qcyc7XHJcbmltcG9ydCB7IFZpZXdNb2RlIH0gZnJvbSAnLi4vZW51bS92aWV3LW1vZGUuZW51bSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdG9yU2V0dGluZ3N9IGZyb20gJy4uL21vZGVsL2NvbmZpZ3VyYXRvci1zZXR0aW5ncyc7XHJcbmltcG9ydCB7U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuL3NldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbnRyb2xzfSBmcm9tICcuL2NvbnRyb2xzJztcclxuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xyXG5cclxuXHJcbmNvbnN0IERFRkFVTFRfQ0FNRVJBX0FTUEVDVF9SQVRJTzogbnVtYmVyID0gMTtcclxuY29uc3QgREVGQVVMVF9DQU1FUkFfRk9WOiBudW1iZXIgPSA0NTtcclxuY29uc3QgREVGQVVMVF9DQU1FUkFfRk9DVVM6IG51bWJlciA9IDEwO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcblxyXG5leHBvcnQgY2xhc3MgQ2FtZXJhU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBwYW5TcGVlZDogbnVtYmVyID0gMzA7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJvdGF0ZUJ5OiBudW1iZXIgPSBNYXRoLlBJIC8gMzI7XHJcbiAgcHVibGljIHJlYWRvbmx5IG1vdmVCeTogbnVtYmVyID0gMjU7XHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbWVyYURlZmF1bHRIZWlnaHQ6IG51bWJlciA9IDEuNztcclxuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0RGVmYXVsdE9mZnNldDogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgcmVhZG9ubHkgZXhwbG9yZURpc3RhbmNlRnJvbUNvcm5lcjogbnVtYmVyID0gMC44O1xyXG5cclxuICBwdWJsaWMgY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwdWJsaWMgY29udHJvbHM6IGFueTtcclxuICBwdWJsaWMgY2FtZXJhTW92ZW1lbnRDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBfY2FtZXJhTG9ja2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBfdmlld1NpemU6IFZlY3RvcjM7XHJcbiAgcHJpdmF0ZSBfdmlld0NlbnRlcjogVmVjdG9yMztcclxuICBwcml2YXRlIF9leHBsb3JlVGFyZ2V0RGlzdGFuY2U6IG51bWJlcjtcclxuICBwcml2YXRlIF9yZWFsQXNwZWN0UmF0aW86IG51bWJlciA9IERFRkFVTFRfQ0FNRVJBX0FTUEVDVF9SQVRJTztcclxuICBwcml2YXRlIF9hc3BlY3RSYXRpbzogbnVtYmVyID0gd2luZG93LmlubmVyV2lkdGggLyB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgcHJpdmF0ZSBfdmlld01vZGU6IFZpZXdNb2RlO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGdldCBjYW1lcmFMb2NrZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FtZXJhTG9ja2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0IHJlYWxBc3BlY3RSYXRpbyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yZWFsQXNwZWN0UmF0aW8gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2VcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHRoaXMuX2NvbnRyb2xzVXBkYXRlKCkpO1xyXG4gICAgdGhpcy5jb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScpO1xyXG4gICAgdGhpcy5jb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nKTtcclxuICAgIHRoaXMuY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnKTtcclxuICAgIHRoaXMuY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcpO1xyXG4gICAgdGhpcy5jb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcpO1xyXG4gICAgdGhpcy5jb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnKTtcclxuXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGV2aWNlb3JpZW50YXRpb24nLCB0aGlzLmNvbnRyb2xzLm9uRGV2aWNlTW92ZSgpLCBmYWxzZSk7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuY29udHJvbHMub25LZXlEb3duKCksIGZhbHNlKTtcclxuICAgIHRoaXMuX2VsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgICB0aGlzLmNhbWVyYSA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSg0NSwgMSwgMC4wMSwgMTAwKTtcclxuICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAzLCAxLjUpO1xyXG4gICAgdGhpcy5jYW1lcmEuYXNwZWN0ID0gd2luZG93LmlubmVyV2lkdGggLyB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gbmV3IENvbnRyb2xzKHRoaXMuY2FtZXJhLCB0aGlzLl9lbGVtZW50KTtcclxuICAgIHRoaXMuY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5fY29udHJvbHNVcGRhdGUoKSk7XHJcbiAgICB0aGlzLmNvbnRyb2xzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbWVyYVpvb21JbigpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbHMuZG9sbHlJbigxLjEpO1xyXG4gICAgdGhpcy5jb250cm9scy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW1lcmFab29tT3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9scy5kb2xseU91dCgxLjEpO1xyXG4gICAgdGhpcy5jb250cm9scy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrQ2FtZXJhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2FtZXJhTG9ja2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1bmxvY2tDYW1lcmEoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jYW1lcmFMb2NrZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNhYmxlUm90YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9scy5ub1JvdGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGlzYWJsZVJvdGF0ZUhvcml6b250YWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xzLm5vUm90YXRlSG9yaXpvbnRhbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGRpc2FibGVQYW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xzLm5vUGFuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNhYmxlWm9vbSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbHMubm9ab29tID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBtb3ZlQ2FtZXJhVG9GaXRPYmplY3Qob2JqZWN0OiBhbnksIG9mZnNldD86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCFvYmplY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDEuMTU7XHJcblxyXG4gICAgLy8gZ2V0IGJvdW5kaW5nIGJveCBvZiBvYmplY3QgLSB0aGlzIHdpbGwgYmUgdXNlZCB0byBzZXR1cCBjb250cm9scyBhbmQgY2FtZXJhXHJcbiAgICBjb25zdCBib3VuZGluZ0JveDogQm94MyA9IG5ldyBCb3gzKCk7XHJcbiAgICBib3VuZGluZ0JveC5zZXRGcm9tT2JqZWN0KG9iamVjdCk7XHJcbiAgICBjb25zdCBjZW50ZXI6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xyXG4gICAgYm91bmRpbmdCb3guZ2V0Q2VudGVyKGNlbnRlcik7XHJcbiAgICBjb25zdCBzaXplOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcclxuICAgIGJvdW5kaW5nQm94LmdldFNpemUoc2l6ZSk7XHJcblxyXG4gICAgLy8gZ2V0IHRoZSBtYXggc2lkZSBvZiB0aGUgYm91bmRpbmcgYm94IChmaXRzIHRvIHdpZHRoIE9SIGhlaWdodCBhcyBuZWVkZWQgKVxyXG4gICAgY29uc3QgbWF4RGltOiBudW1iZXIgPSBNYXRoLm1heChzaXplLngsIHNpemUueSwgc2l6ZS56KTtcclxuXHJcbiAgICBjb25zdCBmb3Y6IG51bWJlciA9IHRoaXMuY2FtZXJhLmZvdiAqIChNYXRoLlBJIC8gMTgwKTtcclxuICAgIC8vIGxldCBjYW1lcmFaID0gTWF0aC5hYnMobWF4RGltIC8gNCAqIE1hdGgudGFuKGZvdiAqIDIwMCkpO1xyXG4gICAgbGV0IGNhbWVyYVo6IG51bWJlciA9IE1hdGguYWJzKChtYXhEaW0gLyAyKSAvIE1hdGgudGFuKGZvdiAvIDIpKTtcclxuICAgIGNhbWVyYVogKj0gb2Zmc2V0OyAvLyB6b29tIG91dCBhIGxpdHRsZSBzbyB0aGF0IG9iamVjdHMgZG9uJ3QgZmlsbCB0aGUgc2NyZWVuXHJcblxyXG4gICAgY29uc3QgbmV3UG9zaXRpb246IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygwLCBzaXplLnkgKiAxLjI1LCBjYW1lcmFaKTtcclxuICAgIGlmICh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy51c2VBbmltYXRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHR3ZWVuID0gYXdhaXQgdGhpcy5jb250cm9scy5hbmltYXRlQ2FtZXJhTW92ZW1lbnQobmV3UG9zaXRpb24sIGNlbnRlciwgMjAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLmNvbnRyb2xzLmZpeGVkQ2FtZXJhTW92ZW1lbnQobmV3UG9zaXRpb24sIGNlbnRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDYW1lcmFPZmZzZXQodGFyZ2V0OiBWZWN0b3IzLCBkaXN0YW5jZTogbnVtYmVyKTogVmVjdG9yMyB7XHJcbiAgICBjb25zdCB0YXJnZXREaXN0YW5jZTogbnVtYmVyID0gZGlzdGFuY2UgKiAxLjU7XHJcbiAgICByZXR1cm4gdGFyZ2V0LmNsb25lKCkuYWRkKFxyXG4gICAgICBuZXcgVmVjdG9yMygwLCB0YXJnZXREaXN0YW5jZSwgdGFyZ2V0RGlzdGFuY2UpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2xzVXBkYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW1lcmFNb3ZlbWVudENoYW5nZWQubmV4dCgpO1xyXG4gIH1cclxufVxyXG4iXX0=