@colijnit/configurator 260.1.2 → 261.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.
- package/bundles/colijnit-configurator.umd.js +18067 -1889
- package/bundles/colijnit-configurator.umd.js.map +1 -1
- package/colijnit-configurator.d.ts +2 -6
- package/esm2015/colijnit-configurator.js +2 -7
- package/esm2015/lib/builder.js +795 -0
- package/esm2015/lib/components/answer-card/answer-card.component.js +313 -0
- package/esm2015/lib/components/answer-card/answer-card.module.js +50 -0
- package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.component.js +182 -0
- package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.module.js +34 -0
- package/esm2015/lib/components/answers-slideout/answers-slideout.component.js +490 -0
- package/esm2015/lib/components/answers-slideout/answers-slideout.module.js +61 -0
- package/esm2015/lib/components/color-filter/color-filter.component.js +59 -0
- package/esm2015/lib/components/color-filter/color-filter.module.js +26 -0
- package/esm2015/lib/components/configurator/configurator.component.js +133 -0
- package/esm2015/lib/components/configurator/configurator.module.js +42 -0
- package/esm2015/lib/components/configurator-dialog/configurator-camera-settings.component.js +222 -0
- package/esm2015/lib/components/configurator-dialog/configurator-dialog.module.js +48 -0
- package/esm2015/lib/components/configurator-dialog/configurator-error-dialog.component.js +82 -0
- package/esm2015/lib/components/configurator-dialog/configurator-export-dialog.component.js +163 -0
- package/esm2015/lib/components/configurator-loader/configurator-loader.component.js +49 -0
- package/esm2015/lib/components/configurator-loader/configurator-loader.module.js +33 -0
- package/esm2015/lib/components/configurator-scene/configurator-scene.component.js +60 -0
- package/esm2015/lib/components/configurator-scene/configurator-scene.module.js +17 -0
- package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.component.js +46 -0
- package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.module.js +26 -0
- package/esm2015/lib/components/element-buttons/element-buttons.component.js +168 -0
- package/esm2015/lib/components/element-buttons/element-buttons.module.js +30 -0
- package/esm2015/lib/components/element-toolbar/element-toolbar.component.js +186 -0
- package/esm2015/lib/components/element-toolbar/element-toolbar.module.js +34 -0
- package/esm2015/lib/components/image-zoom/image-zoom.component.js +61 -0
- package/esm2015/lib/components/image-zoom/image-zoom.module.js +30 -0
- package/esm2015/lib/components/lite-selector/lite-selector.component.js +206 -0
- package/esm2015/lib/components/lite-selector/lite-selector.module.js +34 -0
- package/esm2015/lib/components/product-configurator/product-configurator.component.js +184 -0
- package/esm2015/lib/components/product-configurator/product-configurator.module.js +72 -0
- package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.component.js +237 -0
- package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.module.js +38 -0
- package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.js +284 -0
- package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.js +42 -0
- package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.js +72 -0
- package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.js +34 -0
- package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.js +82 -0
- package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.js +30 -0
- package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.js +80 -0
- package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.js +34 -0
- package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.js +93 -0
- package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.js +34 -0
- package/esm2015/lib/components/progress-bar/progress-bar.component.js +55 -0
- package/esm2015/lib/components/progress-bar/progress-bar.module.js +29 -0
- package/esm2015/lib/components/scene-options/scene-options.component.js +164 -0
- package/esm2015/lib/components/scene-options/scene-options.module.js +38 -0
- package/esm2015/lib/components/selections-summary/selections-summary.component.js +163 -0
- package/esm2015/lib/components/selections-summary/selections-summary.module.js +45 -0
- package/esm2015/lib/components/selections-summary-line/selections-summary-line.component.js +171 -0
- package/esm2015/lib/components/selections-summary-line/selections-summary-line.module.js +34 -0
- package/esm2015/lib/components/slideout/slideout.component.js +83 -0
- package/esm2015/lib/components/slideout/slideout.module.js +17 -0
- package/esm2015/lib/components/summary-line/summary-line.component.js +273 -0
- package/esm2015/lib/components/summary-line/summary-line.module.js +44 -0
- package/esm2015/lib/components/tag-filter/tag-filter.component.js +39 -0
- package/esm2015/lib/components/tag-filter/tag-filter.module.js +21 -0
- package/esm2015/lib/components/threedselector/threedselector.component.js +155 -0
- package/esm2015/lib/components/threedselector/threedselector.module.js +34 -0
- package/esm2015/lib/core/helper/variation-helper.js +553 -0
- package/esm2015/lib/core/shader/floor-fade.shader.js +33 -0
- package/esm2015/lib/core/textures/depth-data-texture.js +19 -0
- package/esm2015/lib/directives/directives.module.js +26 -0
- package/esm2015/lib/directives/visibility-observer-master.directive.js +53 -0
- package/esm2015/lib/directives/visibility-observer.directive.js +54 -0
- package/esm2015/lib/enum/ar-feature.enum.js +14 -0
- package/esm2015/lib/enum/configuration-key.enum.js +41 -0
- package/esm2015/lib/enum/configuration-template.enum.js +6 -0
- package/esm2015/lib/enum/device-size-type.js +7 -0
- package/esm2015/lib/enum/device-tier.enum.js +7 -0
- package/esm2015/lib/enum/icon.enum.js +113 -0
- package/esm2015/lib/enum/item-type.enum.js +23 -0
- package/esm2015/lib/enum/light.enum.js +9 -0
- package/esm2015/lib/enum/navigator-type.enum.js +6 -0
- package/esm2015/lib/enum/output-encoding.enum.js +9 -0
- package/esm2015/lib/enum/result-type.enum.js +21 -0
- package/esm2015/lib/enum/scene-event.enum.js +12 -0
- package/esm2015/lib/enum/shadow-map-type.enum.js +8 -0
- package/esm2015/lib/enum/texture-type.js +9 -0
- package/esm2015/lib/enum/tone-mapping-local.enum.js +12 -0
- package/esm2015/lib/enum/view-mode.enum.js +7 -0
- package/esm2015/lib/enum/xr-mode.enum.js +6 -0
- package/esm2015/lib/environments/environment.js +8 -0
- package/esm2015/lib/interfaces/aa-options.interface.js +2 -0
- package/esm2015/lib/interfaces/adjustable-element.interface.js +2 -0
- package/esm2015/lib/interfaces/ao-options.interface.js +2 -0
- package/esm2015/lib/interfaces/changes.interface.js +2 -0
- package/esm2015/lib/interfaces/configuration-data.interface.js +2 -0
- package/esm2015/lib/interfaces/light-preset.interface.js +2 -0
- package/esm2015/lib/interfaces/post-processing-setting.interface.js +2 -0
- package/esm2015/lib/interfaces/scene-option-button.interface.js +6 -0
- package/esm2015/lib/interfaces/screen-size-info.js +2 -0
- package/esm2015/lib/interfaces/setting.interface.js +2 -0
- package/esm2015/lib/interfaces/texture.interface.js +2 -0
- package/esm2015/lib/interfaces/vignette-options.interface.js +2 -0
- package/esm2015/lib/model/ar-position-indicator.js +18 -0
- package/esm2015/lib/model/camera-settings.js +14 -0
- package/esm2015/lib/model/configuration-result-object.js +6 -0
- package/esm2015/lib/model/configurator-error-message.js +9 -0
- package/esm2015/lib/model/configurator-settings.js +25 -0
- package/esm2015/lib/model/custom-button.js +16 -0
- package/esm2015/lib/model/factory.js +28 -0
- package/esm2015/lib/model/icon.js +112 -0
- package/esm2015/lib/model/intersected-objects.js +7 -0
- package/esm2015/lib/model/light-preset.js +73 -0
- package/esm2015/lib/model/light-properties.js +45 -0
- package/esm2015/lib/model/material.js +11 -0
- package/esm2015/lib/model/metadata.js +2 -0
- package/esm2015/lib/model/render-parameters.js +16 -0
- package/esm2015/lib/model/setting-options.js +71 -0
- package/esm2015/lib/model/settings.js +16 -0
- package/esm2015/lib/model/shadow-properties.js +10 -0
- package/esm2015/lib/model/skin.js +3 -0
- package/esm2015/lib/model/texture.js +76 -0
- package/esm2015/lib/model/variation-settings.js +54 -0
- package/esm2015/lib/model/variation.js +3 -0
- package/esm2015/lib/model/xr-reticle.js +79 -0
- package/esm2015/lib/modules/render/enum/scene-type.enum.js +6 -0
- package/esm2015/lib/modules/render/model/ar-parameters.js +12 -0
- package/esm2015/lib/modules/render/model/scene-setting.js +6 -0
- package/esm2015/lib/modules/render/model/scene-settings.js +3 -0
- package/esm2015/lib/pipes/append.pipe.js +21 -0
- package/esm2015/lib/pipes/google-translate.pipe.js +21 -0
- package/esm2015/lib/pipes/localize.pipe.js +28 -0
- package/esm2015/lib/pipes/pipes.module.js +41 -0
- package/esm2015/lib/pipes/prepend.pipe.js +21 -0
- package/esm2015/lib/pipes/strip-html.pipe.js +17 -0
- package/esm2015/lib/services/app-event.service.js +36 -0
- package/esm2015/lib/services/app-initializer.service.js +27 -0
- package/esm2015/lib/services/ar.service.js +844 -0
- package/esm2015/lib/services/build-furniture-base.service.js +1181 -0
- package/esm2015/lib/services/build-furniture-without-scene.service.js +86 -0
- package/esm2015/lib/services/build-furniture.service.js +169 -0
- package/esm2015/lib/services/bundle-initialzer.service.js +113 -0
- package/esm2015/lib/services/camera.service.js +123 -0
- package/esm2015/lib/services/configuration.service.js +79 -0
- package/esm2015/lib/services/configurator-connector.service.js +830 -0
- package/esm2015/lib/services/configurator.service.js +285 -0
- package/esm2015/lib/services/configuring.service.js +119 -0
- package/esm2015/lib/services/controls.js +799 -0
- package/esm2015/lib/services/debug.service.js +43 -0
- package/esm2015/lib/services/dictionary.service.js +65 -0
- package/esm2015/lib/services/dynamic-camera.service.js +96 -0
- package/esm2015/lib/services/floor-plane.service.js +252 -0
- package/esm2015/lib/services/font.service.js +27 -0
- package/esm2015/lib/services/google-translate.service.js +79 -0
- package/esm2015/lib/services/icon-cache.service.js +44 -0
- package/esm2015/lib/services/intersection.service.js +47 -0
- package/esm2015/lib/services/item.service.js +75 -0
- package/esm2015/lib/services/json-utils.service.js +48 -0
- package/esm2015/lib/services/light-creation.service.js +35 -0
- package/esm2015/lib/services/light-presets.service.js +157 -0
- package/esm2015/lib/services/lights.service.js +146 -0
- package/esm2015/lib/services/load-furniture-base.service.js +164 -0
- package/esm2015/lib/services/load-furniture-without-scene.service.js +45 -0
- package/esm2015/lib/services/load-furniture.service.js +72 -0
- package/esm2015/lib/services/loader.service.js +32 -0
- package/esm2015/lib/services/locator.service.js +11 -0
- package/esm2015/lib/services/message-board.service.js +50 -0
- package/esm2015/lib/services/post-processing.service.js +378 -0
- package/esm2015/lib/services/product-configurator.service.js +16 -0
- package/esm2015/lib/services/progress.service.js +20 -0
- package/esm2015/lib/services/scene-event.service.js +246 -0
- package/esm2015/lib/services/scene-options.service.js +24 -0
- package/esm2015/lib/services/scene.service.js +313 -0
- package/esm2015/lib/services/screen-size-analysis.service.js +97 -0
- package/esm2015/lib/services/settings.service.js +142 -0
- package/esm2015/lib/services/switch-build-furniture.service.js +37 -0
- package/esm2015/lib/services/switch-load-furniture.service.js +35 -0
- package/esm2015/lib/services/threedselector.service.js +72 -0
- package/esm2015/lib/services/utils.service.js +207 -0
- package/esm2015/lib/services/variation-cache.service.js +143 -0
- package/esm2015/lib/services/variation.service.js +490 -0
- package/esm2015/lib/services/view-mode.service.js +37 -0
- package/esm2015/lib/services/vr.service.js +191 -0
- package/esm2015/lib/services/xr.service.js +294 -0
- package/esm2015/lib/utils/asset.utils.js +120 -0
- package/esm2015/lib/utils/base-utils.js +9 -0
- package/esm2015/lib/utils/color.utils.js +30 -0
- package/esm2015/lib/utils/debug.utils.js +9 -0
- package/esm2015/lib/utils/device.utils.js +25 -0
- package/esm2015/lib/utils/file.utils.js +167 -0
- package/esm2015/lib/utils/image.utils.js +61 -0
- package/esm2015/lib/utils/json-parser.utils.js +180 -0
- package/esm2015/lib/utils/material.utils.js +433 -0
- package/esm2015/lib/utils/object.utils.js +360 -0
- package/esm2015/lib/utils/relative-position.utils.js +75 -0
- package/esm2015/lib/utils/rotation-helper.utils.js +15 -0
- package/esm2015/lib/utils/scene-3d.utils.js +213 -0
- package/esm2015/lib/utils/scene-utils.js +191 -0
- package/esm2015/lib/utils/text-utils.js +68 -0
- package/esm2015/lib/utils/threed.utils.js +281 -0
- package/esm2015/lib/utils/variation-utils.js +459 -0
- package/esm2015/public-api.js +65 -0
- package/fesm2015/colijnit-configurator.js +17538 -1477
- package/fesm2015/colijnit-configurator.js.map +1 -1
- package/{app → lib}/builder.d.ts +9 -1
- package/lib/components/answer-card/answer-card.component.d.ts +58 -0
- package/lib/components/answer-card/answer-card.module.d.ts +11 -0
- package/lib/components/answer-card/style/_layout.scss +88 -0
- package/lib/components/answer-card/style/_material-definition.scss +3 -0
- package/lib/components/answer-card/style/_theme.scss +67 -0
- package/lib/components/answer-card/style/material.scss +2 -0
- package/lib/components/answer-info-dialog/answer-info-dialog.component.d.ts +38 -0
- package/lib/components/answer-info-dialog/answer-info-dialog.module.d.ts +10 -0
- package/lib/components/answer-info-dialog/style/_layout.scss +88 -0
- package/lib/components/answer-info-dialog/style/_material-definition.scss +3 -0
- package/lib/components/answer-info-dialog/style/_theme.scss +44 -0
- package/lib/components/answer-info-dialog/style/material.scss +3 -0
- package/lib/components/answers-slideout/answers-slideout.component.d.ts +86 -0
- package/lib/components/answers-slideout/answers-slideout.module.d.ts +16 -0
- package/lib/components/answers-slideout/style/_layout.scss +198 -0
- package/lib/components/answers-slideout/style/_material-definition.scss +3 -0
- package/lib/components/answers-slideout/style/_theme.scss +54 -0
- package/lib/components/answers-slideout/style/material.scss +3 -0
- package/lib/components/color-filter/color-filter.component.d.ts +20 -0
- package/lib/components/color-filter/color-filter.module.d.ts +8 -0
- package/lib/components/color-filter/style/_layout.scss +41 -0
- package/lib/components/color-filter/style/_material-definition.scss +3 -0
- package/lib/components/color-filter/style/_theme.scss +7 -0
- package/lib/components/color-filter/style/material.scss +3 -0
- package/lib/components/configurator/configurator.component.d.ts +37 -0
- package/lib/components/configurator/configurator.module.d.ts +12 -0
- package/lib/components/configurator/style/_layout.scss +7 -0
- package/lib/components/configurator/style/_material-definition.scss +3 -0
- package/lib/components/configurator/style/_theme.scss +7 -0
- package/lib/components/configurator/style/material.scss +3 -0
- package/lib/components/configurator-dialog/configurator-camera-settings.component.d.ts +30 -0
- package/lib/components/configurator-dialog/configurator-dialog.module.d.ts +13 -0
- package/lib/components/configurator-dialog/configurator-error-dialog.component.d.ts +16 -0
- package/lib/components/configurator-dialog/configurator-export-dialog.component.d.ts +26 -0
- package/lib/components/configurator-dialog/style/_layout.scss +129 -0
- package/lib/components/configurator-dialog/style/_material-definition.scss +4 -0
- package/lib/components/configurator-dialog/style/_theme.scss +89 -0
- package/lib/components/configurator-dialog/style/material.scss +3 -0
- package/lib/components/configurator-loader/configurator-loader.component.d.ts +7 -0
- package/lib/components/configurator-loader/configurator-loader.module.d.ts +9 -0
- package/lib/components/configurator-loader/style/_layout.scss +72 -0
- package/lib/components/configurator-loader/style/_material-definition.scss +5 -0
- package/lib/components/configurator-loader/style/_theme.scss +26 -0
- package/lib/components/configurator-loader/style/material.scss +14 -0
- package/lib/components/configurator-scene/configurator-scene.component.d.ts +24 -0
- package/lib/components/configurator-scene/configurator-scene.module.d.ts +7 -0
- package/lib/components/configurator-scene/style/_layout.scss +22 -0
- package/lib/components/configurator-scene/style/_material-definition.scss +3 -0
- package/lib/components/configurator-scene/style/_theme.scss +7 -0
- package/lib/components/configurator-scene/style/material.scss +3 -0
- package/lib/components/configurator-scene-loader/configurator-scene-loader.component.d.ts +7 -0
- package/lib/components/configurator-scene-loader/configurator-scene-loader.module.d.ts +8 -0
- package/lib/components/configurator-scene-loader/style/_layout.scss +72 -0
- package/lib/components/configurator-scene-loader/style/_material-definition.scss +5 -0
- package/lib/components/configurator-scene-loader/style/_theme.scss +26 -0
- package/lib/components/configurator-scene-loader/style/material.scss +14 -0
- package/lib/components/element-buttons/element-buttons.component.d.ts +32 -0
- package/lib/components/element-buttons/element-buttons.module.d.ts +9 -0
- package/lib/components/element-buttons/style/_layout.scss +52 -0
- package/lib/components/element-buttons/style/_material-definition.scss +3 -0
- package/lib/components/element-buttons/style/_theme.scss +23 -0
- package/lib/components/element-buttons/style/material.scss +3 -0
- package/lib/components/element-toolbar/element-toolbar.component.d.ts +27 -0
- package/lib/components/element-toolbar/element-toolbar.component.scss +59 -0
- package/lib/components/element-toolbar/element-toolbar.module.d.ts +10 -0
- package/lib/components/element-toolbar/style/_layout.scss +107 -0
- package/lib/components/element-toolbar/style/_material-definition.scss +3 -0
- package/lib/components/element-toolbar/style/_theme.scss +47 -0
- package/lib/components/element-toolbar/style/material.scss +3 -0
- package/lib/components/image-zoom/image-zoom.component.d.ts +15 -0
- package/lib/components/image-zoom/image-zoom.module.d.ts +9 -0
- package/lib/components/image-zoom/style/_layout.scss +51 -0
- package/lib/components/image-zoom/style/_material-definition.scss +3 -0
- package/lib/components/image-zoom/style/_theme.scss +17 -0
- package/lib/components/image-zoom/style/material.scss +3 -0
- package/lib/components/lite-selector/lite-selector.component.d.ts +40 -0
- package/lib/components/lite-selector/lite-selector.module.d.ts +10 -0
- package/lib/components/lite-selector/style/_layout.scss +21 -0
- package/lib/components/lite-selector/style/_material-definition.scss +3 -0
- package/lib/components/lite-selector/style/_theme.scss +7 -0
- package/lib/components/lite-selector/style/material.scss +3 -0
- package/lib/components/product-configurator/product-configurator.component.d.ts +50 -0
- package/lib/components/product-configurator/product-configurator.module.d.ts +15 -0
- package/lib/components/product-configurator/style/_layout.scss +46 -0
- package/lib/components/product-configurator/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator/style/_theme.scss +22 -0
- package/lib/components/product-configurator/style/material.scss +3 -0
- package/lib/components/product-configurator-selector/product-configurator-selector.component.d.ts +35 -0
- package/lib/components/product-configurator-selector/product-configurator-selector.module.d.ts +11 -0
- package/lib/components/product-configurator-selector/style/_layout.scss +145 -0
- package/lib/components/product-configurator-selector/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector/style/_theme.scss +57 -0
- package/lib/components/product-configurator-selector/style/material.scss +3 -0
- package/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.d.ts +31 -0
- package/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.d.ts +13 -0
- package/lib/components/product-configurator-selector-option/style/_layout.scss +7 -0
- package/lib/components/product-configurator-selector-option/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector-option/style/_theme.scss +7 -0
- package/lib/components/product-configurator-selector-option/style/material.scss +3 -0
- package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.d.ts +20 -0
- package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.d.ts +10 -0
- package/lib/components/product-configurator-selector-option-button/style/_layout.scss +28 -0
- package/lib/components/product-configurator-selector-option-button/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector-option-button/style/_theme.scss +33 -0
- package/lib/components/product-configurator-selector-option-button/style/material.scss +3 -0
- package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.d.ts +20 -0
- package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.d.ts +10 -0
- package/lib/components/product-configurator-selector-option-checkbox/style/_layout.scss +28 -0
- package/lib/components/product-configurator-selector-option-checkbox/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector-option-checkbox/style/_theme.scss +27 -0
- package/lib/components/product-configurator-selector-option-checkbox/style/material.scss +3 -0
- package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.d.ts +21 -0
- package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.d.ts +10 -0
- package/lib/components/product-configurator-selector-option-dropdown/style/_layout.scss +34 -0
- package/lib/components/product-configurator-selector-option-dropdown/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector-option-dropdown/style/_theme.scss +28 -0
- package/lib/components/product-configurator-selector-option-dropdown/style/material.scss +3 -0
- package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.d.ts +21 -0
- package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.d.ts +10 -0
- package/lib/components/product-configurator-selector-option-tile/style/_layout.scss +58 -0
- package/lib/components/product-configurator-selector-option-tile/style/_material-definition.scss +3 -0
- package/lib/components/product-configurator-selector-option-tile/style/_theme.scss +56 -0
- package/lib/components/product-configurator-selector-option-tile/style/material.scss +3 -0
- package/lib/components/progress-bar/progress-bar.component.d.ts +10 -0
- package/lib/components/progress-bar/progress-bar.component.scss +14 -0
- package/lib/components/progress-bar/progress-bar.module.d.ts +8 -0
- package/lib/components/progress-bar/style/_layout.scss +18 -0
- package/lib/components/progress-bar/style/_material-definition.scss +3 -0
- package/lib/components/progress-bar/style/_theme.scss +10 -0
- package/lib/components/progress-bar/style/material.scss +3 -0
- package/lib/components/scene-options/scene-options.component.d.ts +24 -0
- package/lib/components/scene-options/scene-options.module.d.ts +11 -0
- package/lib/components/scene-options/style/_layout.scss +52 -0
- package/lib/components/scene-options/style/_material-definition.scss +3 -0
- package/lib/components/scene-options/style/_theme.scss +7 -0
- package/lib/components/scene-options/style/material.scss +3 -0
- package/lib/components/selections-summary/selections-summary.component.d.ts +38 -0
- package/lib/components/selections-summary/selections-summary.module.d.ts +12 -0
- package/lib/components/selections-summary/style/_layout.scss +87 -0
- package/lib/components/selections-summary/style/_material-definition.scss +5 -0
- package/lib/components/selections-summary/style/_theme.scss +13 -0
- package/lib/components/selections-summary/style/material.scss +3 -0
- package/lib/components/selections-summary-line/selections-summary-line.component.d.ts +27 -0
- package/lib/components/selections-summary-line/selections-summary-line.module.d.ts +10 -0
- package/lib/components/selections-summary-line/style/_layout.scss +12 -0
- package/lib/components/selections-summary-line/style/_material-definition.scss +4 -0
- package/lib/components/selections-summary-line/style/_theme.scss +12 -0
- package/lib/components/selections-summary-line/style/material.scss +3 -0
- package/lib/components/slideout/slideout.component.d.ts +22 -0
- package/lib/components/slideout/slideout.module.d.ts +7 -0
- package/lib/components/slideout/style/_layout.scss +27 -0
- package/lib/components/slideout/style/_material-definition.scss +3 -0
- package/lib/components/slideout/style/_theme.scss +5 -0
- package/lib/components/slideout/style/material.scss +3 -0
- package/lib/components/summary-line/style/_layout.scss +137 -0
- package/lib/components/summary-line/style/_material-definition.scss +4 -0
- package/lib/components/summary-line/style/_theme.scss +56 -0
- package/lib/components/summary-line/style/material.scss +3 -0
- package/lib/components/summary-line/summary-line.component.d.ts +50 -0
- package/lib/components/summary-line/summary-line.module.d.ts +11 -0
- package/lib/components/tag-filter/style/_layout.scss +14 -0
- package/lib/components/tag-filter/style/_material-definition.scss +3 -0
- package/lib/components/tag-filter/style/_theme.scss +7 -0
- package/lib/components/tag-filter/style/material.scss +3 -0
- package/lib/components/tag-filter/tag-filter.component.d.ts +9 -0
- package/lib/components/tag-filter/tag-filter.module.d.ts +7 -0
- package/lib/components/threedselector/style/_layout.scss +32 -0
- package/lib/components/threedselector/style/_material-definition.scss +3 -0
- package/lib/components/threedselector/style/_theme.scss +7 -0
- package/lib/components/threedselector/style/material.scss +9 -0
- package/lib/components/threedselector/threedselector.component.d.ts +38 -0
- package/lib/components/threedselector/threedselector.module.d.ts +10 -0
- package/{helper → lib/core/helper}/variation-helper.d.ts +2 -2
- package/lib/core/shader/floor-fade.shader.d.ts +5 -0
- package/lib/core/textures/depth-data-texture.d.ts +5 -0
- package/lib/directives/directives.module.d.ts +8 -0
- package/{app → lib}/directives/visibility-observer-master.directive.d.ts +3 -0
- package/{app → lib}/directives/visibility-observer.directive.d.ts +3 -0
- package/lib/enum/ar-feature.enum.d.ts +12 -0
- package/lib/enum/configuration-key.enum.d.ts +39 -0
- package/lib/enum/configuration-template.enum.d.ts +4 -0
- package/lib/enum/device-size-type.d.ts +5 -0
- package/lib/enum/device-tier.enum.d.ts +5 -0
- package/lib/enum/icon.enum.d.ts +111 -0
- package/lib/enum/item-type.enum.d.ts +21 -0
- package/lib/enum/light.enum.d.ts +7 -0
- package/lib/enum/navigator-type.enum.d.ts +4 -0
- package/lib/enum/output-encoding.enum.d.ts +7 -0
- package/lib/enum/result-type.enum.d.ts +19 -0
- package/lib/enum/scene-event.enum.d.ts +10 -0
- package/lib/enum/shadow-map-type.enum.d.ts +6 -0
- package/lib/enum/texture-type.d.ts +7 -0
- package/lib/enum/tone-mapping-local.enum.d.ts +10 -0
- package/lib/enum/view-mode.enum.d.ts +5 -0
- package/lib/enum/xr-mode.enum.d.ts +4 -0
- package/lib/environments/environment.d.ts +4 -0
- package/lib/interfaces/aa-options.interface.d.ts +4 -0
- package/lib/interfaces/adjustable-element.interface.d.ts +5 -0
- package/lib/interfaces/ao-options.interface.d.ts +18 -0
- package/lib/interfaces/changes.interface.d.ts +9 -0
- package/lib/interfaces/configuration-data.interface.d.ts +40 -0
- package/lib/interfaces/light-preset.interface.d.ts +22 -0
- package/lib/interfaces/post-processing-setting.interface.d.ts +11 -0
- package/lib/interfaces/scene-option-button.interface.d.ts +19 -0
- package/lib/interfaces/screen-size-info.d.ts +10 -0
- package/lib/interfaces/setting.interface.d.ts +8 -0
- package/lib/interfaces/texture.interface.d.ts +44 -0
- package/lib/interfaces/vignette-options.interface.d.ts +4 -0
- package/lib/model/ar-position-indicator.d.ts +4 -0
- package/lib/model/camera-settings.d.ts +12 -0
- package/lib/model/configuration-result-object.d.ts +30 -0
- package/lib/model/configurator-error-message.d.ts +8 -0
- package/lib/model/configurator-settings.d.ts +62 -0
- package/lib/model/custom-button.d.ts +10 -0
- package/lib/model/factory.d.ts +5 -0
- package/lib/model/icon.d.ts +4 -0
- package/lib/model/intersected-objects.d.ts +6 -0
- package/lib/model/light-preset.d.ts +33 -0
- package/lib/model/light-properties.d.ts +25 -0
- package/lib/model/material.d.ts +41 -0
- package/lib/model/metadata.d.ts +78 -0
- package/lib/model/render-parameters.d.ts +12 -0
- package/lib/model/setting-options.d.ts +67 -0
- package/lib/model/settings.d.ts +10 -0
- package/lib/model/shadow-properties.d.ts +7 -0
- package/lib/model/skin.d.ts +15 -0
- package/lib/model/texture.d.ts +52 -0
- package/{model → lib/model}/variation-settings.d.ts +9 -8
- package/{model → lib/model}/variation.d.ts +2 -1
- package/lib/model/xr-reticle.d.ts +17 -0
- package/lib/modules/render/enum/scene-type.enum.d.ts +4 -0
- package/lib/modules/render/model/ar-parameters.d.ts +9 -0
- package/lib/modules/render/model/scene-setting.d.ts +13 -0
- package/lib/modules/render/model/scene-settings.d.ts +4 -0
- package/lib/pipes/append.pipe.d.ts +7 -0
- package/lib/pipes/google-translate.pipe.d.ts +11 -0
- package/lib/pipes/localize.pipe.d.ts +10 -0
- package/lib/pipes/pipes.module.d.ts +11 -0
- package/lib/pipes/prepend.pipe.d.ts +7 -0
- package/lib/pipes/strip-html.pipe.d.ts +7 -0
- package/lib/services/app-event.service.d.ts +32 -0
- package/lib/services/app-initializer.service.d.ts +14 -0
- package/lib/services/ar.service.d.ts +120 -0
- package/lib/services/build-furniture-base.service.d.ts +117 -0
- package/lib/services/build-furniture-without-scene.service.d.ts +14 -0
- package/lib/services/build-furniture.service.d.ts +14 -0
- package/lib/services/bundle-initialzer.service.d.ts +45 -0
- package/lib/services/camera.service.d.ts +44 -0
- package/lib/services/configuration.service.d.ts +18 -0
- package/lib/services/configurator-connector.service.d.ts +140 -0
- package/lib/services/configurator.service.d.ts +62 -0
- package/lib/services/configuring.service.d.ts +46 -0
- package/lib/services/controls.d.ts +11 -0
- package/lib/services/debug.service.d.ts +16 -0
- package/lib/services/dictionary.service.d.ts +15 -0
- package/lib/services/dynamic-camera.service.d.ts +21 -0
- package/lib/services/floor-plane.service.d.ts +47 -0
- package/lib/services/font.service.d.ts +10 -0
- package/lib/services/google-translate.service.d.ts +26 -0
- package/lib/services/icon-cache.service.d.ts +21 -0
- package/lib/services/intersection.service.d.ts +11 -0
- package/lib/services/item.service.d.ts +18 -0
- package/lib/services/json-utils.service.d.ts +7 -0
- package/lib/services/light-creation.service.d.ts +9 -0
- package/lib/services/light-presets.service.d.ts +34 -0
- package/lib/services/lights.service.d.ts +34 -0
- package/lib/services/load-furniture-base.service.d.ts +37 -0
- package/lib/services/load-furniture-without-scene.service.d.ts +9 -0
- package/lib/services/load-furniture.service.d.ts +9 -0
- package/lib/services/loader.service.d.ts +11 -0
- package/lib/services/locator.service.d.ts +7 -0
- package/lib/services/message-board.service.d.ts +18 -0
- package/lib/services/post-processing.service.d.ts +74 -0
- package/lib/services/product-configurator.service.d.ts +11 -0
- package/lib/services/progress.service.d.ts +9 -0
- package/lib/services/scene-event.service.d.ts +72 -0
- package/lib/services/scene-options.service.d.ts +11 -0
- package/lib/services/scene.service.d.ts +71 -0
- package/lib/services/screen-size-analysis.service.d.ts +32 -0
- package/lib/services/settings.service.d.ts +24 -0
- package/lib/services/switch-build-furniture.service.d.ts +21 -0
- package/lib/services/switch-load-furniture.service.d.ts +21 -0
- package/lib/services/threedselector.service.d.ts +17 -0
- package/lib/services/utils.service.d.ts +24 -0
- package/lib/services/variation-cache.service.d.ts +23 -0
- package/lib/services/variation.service.d.ts +26 -0
- package/lib/services/view-mode.service.d.ts +17 -0
- package/lib/services/vr.service.d.ts +42 -0
- package/lib/services/xr.service.d.ts +56 -0
- package/lib/style/_mixin.scss +9 -0
- package/lib/style/configurator-globals.scss +21 -0
- package/lib/style/template_variables.scss +37 -0
- package/lib/utils/color.utils.d.ts +8 -0
- package/lib/utils/debug.utils.d.ts +3 -0
- package/lib/utils/device.utils.d.ts +7 -0
- package/{utils → lib/utils}/file.utils.d.ts +3 -0
- package/{utils → lib/utils}/image.utils.d.ts +2 -3
- package/lib/utils/json-parser.utils.d.ts +9 -0
- package/lib/utils/material.utils.d.ts +34 -0
- package/lib/utils/object.utils.d.ts +32 -0
- package/lib/utils/relative-position.utils.d.ts +12 -0
- package/lib/utils/rotation-helper.utils.d.ts +6 -0
- package/lib/utils/scene-3d.utils.d.ts +8 -0
- package/lib/utils/text-utils.d.ts +4 -0
- package/{utils → lib/utils}/threed.utils.d.ts +7 -3
- package/{utils → lib/utils}/variation-utils.d.ts +4 -2
- package/package.json +17 -30
- package/public-api.d.ts +60 -0
- package/README.md +0 -28
- package/app/components/answers/answer/answer.component.d.ts +0 -11
- package/app/components/answers/answers.component.d.ts +0 -8
- package/app/components/answers/answers.module.d.ts +0 -2
- package/app/components/selections/selections.component.d.ts +0 -21
- package/app/components/selections/selections.module.d.ts +0 -2
- package/app/components/shared/loader/loader.component.d.ts +0 -2
- package/app/components/shared/shared.module.d.ts +0 -2
- package/app/services/configurator.service.d.ts +0 -19
- package/app/services/image-cache.service.d.ts +0 -10
- package/app/utils/object.utils.d.ts +0 -7
- package/colijnit-configurator.metadata.json +0 -1
- package/esm2015/app/builder.js +0 -706
- package/esm2015/app/components/answers/answer/answer.component.js +0 -66
- package/esm2015/app/components/answers/answers.component.js +0 -38
- package/esm2015/app/components/answers/answers.module.js +0 -27
- package/esm2015/app/components/selections/selections.component.js +0 -129
- package/esm2015/app/components/selections/selections.module.js +0 -21
- package/esm2015/app/components/shared/loader/loader.component.js +0 -22
- package/esm2015/app/components/shared/shared.module.js +0 -19
- package/esm2015/app/directives/visibility-observer-master.directive.js +0 -50
- package/esm2015/app/directives/visibility-observer.directive.js +0 -55
- package/esm2015/app/services/configurator.service.js +0 -79
- package/esm2015/app/services/image-cache.service.js +0 -63
- package/esm2015/app/utils/object.utils.js +0 -51
- package/esm2015/helper/variation-helper.js +0 -553
- package/esm2015/model/material.js +0 -11
- package/esm2015/model/variation-settings.js +0 -54
- package/esm2015/model/variation.js +0 -3
- package/esm2015/public_api.js +0 -7
- package/esm2015/utils/asset.utils.js +0 -124
- package/esm2015/utils/base-utils.js +0 -9
- package/esm2015/utils/file.utils.js +0 -142
- package/esm2015/utils/image.utils.js +0 -66
- package/esm2015/utils/object.utils.js +0 -49
- package/esm2015/utils/scene-utils.js +0 -187
- package/esm2015/utils/threed.utils.js +0 -226
- package/esm2015/utils/variation-utils.js +0 -388
- package/model/material.d.ts +0 -40
- package/public_api.d.ts +0 -6
- package/utils/object.utils.d.ts +0 -7
- /package/{utils → lib/utils}/asset.utils.d.ts +0 -0
- /package/{utils → lib/utils}/base-utils.d.ts +0 -0
- /package/{utils → lib/utils}/scene-utils.d.ts +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
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
|
|
@@ -0,0 +1,169 @@
|
|
|
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==
|
|
@@ -0,0 +1,113 @@
|
|
|
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=
|
|
@@ -0,0 +1,123 @@
|
|
|
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=
|