@colijnit/configurator 261.1.1 → 261.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{fesm2015/colijnit-configurator.js → fesm2022/colijnit-configurator.mjs} +19087 -18481
- package/fesm2022/colijnit-configurator.mjs.map +1 -0
- package/index.d.ts +3299 -0
- package/lib/components/answer-card/style/_layout.scss +3 -3
- package/lib/components/answers-slideout/style/_layout.scss +1 -0
- package/lib/style/configurator-globals.scss +1 -21
- package/package.json +24 -19
- package/bundles/colijnit-configurator.umd.js +0 -20167
- package/bundles/colijnit-configurator.umd.js.map +0 -1
- package/colijnit-configurator.d.ts +0 -5
- package/esm2015/colijnit-configurator.js +0 -5
- package/esm2015/lib/builder.js +0 -795
- package/esm2015/lib/components/answer-card/answer-card.component.js +0 -313
- package/esm2015/lib/components/answer-card/answer-card.module.js +0 -50
- package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.component.js +0 -182
- package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.module.js +0 -34
- package/esm2015/lib/components/answers-slideout/answers-slideout.component.js +0 -490
- package/esm2015/lib/components/answers-slideout/answers-slideout.module.js +0 -61
- package/esm2015/lib/components/color-filter/color-filter.component.js +0 -59
- package/esm2015/lib/components/color-filter/color-filter.module.js +0 -26
- package/esm2015/lib/components/configurator/configurator.component.js +0 -133
- package/esm2015/lib/components/configurator/configurator.module.js +0 -42
- package/esm2015/lib/components/configurator-dialog/configurator-camera-settings.component.js +0 -222
- package/esm2015/lib/components/configurator-dialog/configurator-dialog.module.js +0 -48
- package/esm2015/lib/components/configurator-dialog/configurator-error-dialog.component.js +0 -82
- package/esm2015/lib/components/configurator-dialog/configurator-export-dialog.component.js +0 -163
- package/esm2015/lib/components/configurator-loader/configurator-loader.component.js +0 -49
- package/esm2015/lib/components/configurator-loader/configurator-loader.module.js +0 -33
- package/esm2015/lib/components/configurator-scene/configurator-scene.component.js +0 -60
- package/esm2015/lib/components/configurator-scene/configurator-scene.module.js +0 -17
- package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.component.js +0 -46
- package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.module.js +0 -26
- package/esm2015/lib/components/element-buttons/element-buttons.component.js +0 -168
- package/esm2015/lib/components/element-buttons/element-buttons.module.js +0 -30
- package/esm2015/lib/components/element-toolbar/element-toolbar.component.js +0 -186
- package/esm2015/lib/components/element-toolbar/element-toolbar.module.js +0 -34
- package/esm2015/lib/components/image-zoom/image-zoom.component.js +0 -61
- package/esm2015/lib/components/image-zoom/image-zoom.module.js +0 -30
- package/esm2015/lib/components/lite-selector/lite-selector.component.js +0 -206
- package/esm2015/lib/components/lite-selector/lite-selector.module.js +0 -34
- package/esm2015/lib/components/product-configurator/product-configurator.component.js +0 -184
- package/esm2015/lib/components/product-configurator/product-configurator.module.js +0 -72
- package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.component.js +0 -237
- package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.module.js +0 -38
- package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.js +0 -284
- package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.js +0 -42
- package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.js +0 -72
- package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.js +0 -34
- package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.js +0 -82
- package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.js +0 -30
- package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.js +0 -80
- package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.js +0 -34
- package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.js +0 -93
- package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.js +0 -34
- package/esm2015/lib/components/progress-bar/progress-bar.component.js +0 -55
- package/esm2015/lib/components/progress-bar/progress-bar.module.js +0 -29
- package/esm2015/lib/components/scene-options/scene-options.component.js +0 -164
- package/esm2015/lib/components/scene-options/scene-options.module.js +0 -38
- package/esm2015/lib/components/selections-summary/selections-summary.component.js +0 -163
- package/esm2015/lib/components/selections-summary/selections-summary.module.js +0 -45
- package/esm2015/lib/components/selections-summary-line/selections-summary-line.component.js +0 -171
- package/esm2015/lib/components/selections-summary-line/selections-summary-line.module.js +0 -34
- package/esm2015/lib/components/slideout/slideout.component.js +0 -83
- package/esm2015/lib/components/slideout/slideout.module.js +0 -17
- package/esm2015/lib/components/summary-line/summary-line.component.js +0 -273
- package/esm2015/lib/components/summary-line/summary-line.module.js +0 -44
- package/esm2015/lib/components/tag-filter/tag-filter.component.js +0 -39
- package/esm2015/lib/components/tag-filter/tag-filter.module.js +0 -21
- package/esm2015/lib/components/threedselector/threedselector.component.js +0 -155
- package/esm2015/lib/components/threedselector/threedselector.module.js +0 -34
- package/esm2015/lib/core/helper/variation-helper.js +0 -553
- package/esm2015/lib/core/shader/floor-fade.shader.js +0 -33
- package/esm2015/lib/core/textures/depth-data-texture.js +0 -19
- package/esm2015/lib/directives/directives.module.js +0 -26
- package/esm2015/lib/directives/visibility-observer-master.directive.js +0 -53
- package/esm2015/lib/directives/visibility-observer.directive.js +0 -54
- package/esm2015/lib/enum/ar-feature.enum.js +0 -14
- package/esm2015/lib/enum/configuration-key.enum.js +0 -41
- package/esm2015/lib/enum/configuration-template.enum.js +0 -6
- package/esm2015/lib/enum/device-size-type.js +0 -7
- package/esm2015/lib/enum/device-tier.enum.js +0 -7
- package/esm2015/lib/enum/icon.enum.js +0 -113
- package/esm2015/lib/enum/item-type.enum.js +0 -23
- package/esm2015/lib/enum/light.enum.js +0 -9
- package/esm2015/lib/enum/navigator-type.enum.js +0 -6
- package/esm2015/lib/enum/output-encoding.enum.js +0 -9
- package/esm2015/lib/enum/result-type.enum.js +0 -21
- package/esm2015/lib/enum/scene-event.enum.js +0 -12
- package/esm2015/lib/enum/shadow-map-type.enum.js +0 -8
- package/esm2015/lib/enum/texture-type.js +0 -9
- package/esm2015/lib/enum/tone-mapping-local.enum.js +0 -12
- package/esm2015/lib/enum/view-mode.enum.js +0 -7
- package/esm2015/lib/enum/xr-mode.enum.js +0 -6
- package/esm2015/lib/environments/environment.js +0 -8
- package/esm2015/lib/interfaces/aa-options.interface.js +0 -2
- package/esm2015/lib/interfaces/adjustable-element.interface.js +0 -2
- package/esm2015/lib/interfaces/ao-options.interface.js +0 -2
- package/esm2015/lib/interfaces/changes.interface.js +0 -2
- package/esm2015/lib/interfaces/configuration-data.interface.js +0 -2
- package/esm2015/lib/interfaces/light-preset.interface.js +0 -2
- package/esm2015/lib/interfaces/post-processing-setting.interface.js +0 -2
- package/esm2015/lib/interfaces/scene-option-button.interface.js +0 -6
- package/esm2015/lib/interfaces/screen-size-info.js +0 -2
- package/esm2015/lib/interfaces/setting.interface.js +0 -2
- package/esm2015/lib/interfaces/texture.interface.js +0 -2
- package/esm2015/lib/interfaces/vignette-options.interface.js +0 -2
- package/esm2015/lib/model/ar-position-indicator.js +0 -18
- package/esm2015/lib/model/camera-settings.js +0 -14
- package/esm2015/lib/model/configuration-result-object.js +0 -6
- package/esm2015/lib/model/configurator-error-message.js +0 -9
- package/esm2015/lib/model/configurator-settings.js +0 -25
- package/esm2015/lib/model/custom-button.js +0 -16
- package/esm2015/lib/model/factory.js +0 -28
- package/esm2015/lib/model/icon.js +0 -112
- package/esm2015/lib/model/intersected-objects.js +0 -7
- package/esm2015/lib/model/light-preset.js +0 -73
- package/esm2015/lib/model/light-properties.js +0 -45
- package/esm2015/lib/model/material.js +0 -11
- package/esm2015/lib/model/metadata.js +0 -2
- package/esm2015/lib/model/render-parameters.js +0 -16
- package/esm2015/lib/model/setting-options.js +0 -71
- package/esm2015/lib/model/settings.js +0 -16
- package/esm2015/lib/model/shadow-properties.js +0 -10
- package/esm2015/lib/model/skin.js +0 -3
- package/esm2015/lib/model/texture.js +0 -76
- package/esm2015/lib/model/variation-settings.js +0 -54
- package/esm2015/lib/model/variation.js +0 -3
- package/esm2015/lib/model/xr-reticle.js +0 -79
- package/esm2015/lib/modules/render/enum/scene-type.enum.js +0 -6
- package/esm2015/lib/modules/render/model/ar-parameters.js +0 -12
- package/esm2015/lib/modules/render/model/scene-setting.js +0 -6
- package/esm2015/lib/modules/render/model/scene-settings.js +0 -3
- package/esm2015/lib/pipes/append.pipe.js +0 -21
- package/esm2015/lib/pipes/google-translate.pipe.js +0 -21
- package/esm2015/lib/pipes/localize.pipe.js +0 -28
- package/esm2015/lib/pipes/pipes.module.js +0 -41
- package/esm2015/lib/pipes/prepend.pipe.js +0 -21
- package/esm2015/lib/pipes/strip-html.pipe.js +0 -17
- package/esm2015/lib/services/app-event.service.js +0 -36
- package/esm2015/lib/services/app-initializer.service.js +0 -27
- package/esm2015/lib/services/ar.service.js +0 -844
- package/esm2015/lib/services/build-furniture-base.service.js +0 -1181
- package/esm2015/lib/services/build-furniture-without-scene.service.js +0 -86
- package/esm2015/lib/services/build-furniture.service.js +0 -169
- package/esm2015/lib/services/bundle-initialzer.service.js +0 -113
- package/esm2015/lib/services/camera.service.js +0 -123
- package/esm2015/lib/services/configuration.service.js +0 -79
- package/esm2015/lib/services/configurator-connector.service.js +0 -830
- package/esm2015/lib/services/configurator.service.js +0 -285
- package/esm2015/lib/services/configuring.service.js +0 -119
- package/esm2015/lib/services/controls.js +0 -799
- package/esm2015/lib/services/debug.service.js +0 -43
- package/esm2015/lib/services/dictionary.service.js +0 -65
- package/esm2015/lib/services/dynamic-camera.service.js +0 -96
- package/esm2015/lib/services/floor-plane.service.js +0 -252
- package/esm2015/lib/services/font.service.js +0 -27
- package/esm2015/lib/services/google-translate.service.js +0 -79
- package/esm2015/lib/services/icon-cache.service.js +0 -44
- package/esm2015/lib/services/intersection.service.js +0 -47
- package/esm2015/lib/services/item.service.js +0 -75
- package/esm2015/lib/services/json-utils.service.js +0 -48
- package/esm2015/lib/services/light-creation.service.js +0 -35
- package/esm2015/lib/services/light-presets.service.js +0 -157
- package/esm2015/lib/services/lights.service.js +0 -146
- package/esm2015/lib/services/load-furniture-base.service.js +0 -164
- package/esm2015/lib/services/load-furniture-without-scene.service.js +0 -45
- package/esm2015/lib/services/load-furniture.service.js +0 -72
- package/esm2015/lib/services/loader.service.js +0 -32
- package/esm2015/lib/services/locator.service.js +0 -11
- package/esm2015/lib/services/message-board.service.js +0 -50
- package/esm2015/lib/services/post-processing.service.js +0 -378
- package/esm2015/lib/services/product-configurator.service.js +0 -16
- package/esm2015/lib/services/progress.service.js +0 -20
- package/esm2015/lib/services/scene-event.service.js +0 -246
- package/esm2015/lib/services/scene-options.service.js +0 -24
- package/esm2015/lib/services/scene.service.js +0 -313
- package/esm2015/lib/services/screen-size-analysis.service.js +0 -97
- package/esm2015/lib/services/settings.service.js +0 -142
- package/esm2015/lib/services/switch-build-furniture.service.js +0 -37
- package/esm2015/lib/services/switch-load-furniture.service.js +0 -35
- package/esm2015/lib/services/threedselector.service.js +0 -72
- package/esm2015/lib/services/utils.service.js +0 -207
- package/esm2015/lib/services/variation-cache.service.js +0 -143
- package/esm2015/lib/services/variation.service.js +0 -490
- package/esm2015/lib/services/view-mode.service.js +0 -37
- package/esm2015/lib/services/vr.service.js +0 -191
- package/esm2015/lib/services/xr.service.js +0 -294
- package/esm2015/lib/utils/asset.utils.js +0 -120
- package/esm2015/lib/utils/base-utils.js +0 -9
- package/esm2015/lib/utils/color.utils.js +0 -30
- package/esm2015/lib/utils/debug.utils.js +0 -9
- package/esm2015/lib/utils/device.utils.js +0 -25
- package/esm2015/lib/utils/file.utils.js +0 -167
- package/esm2015/lib/utils/image.utils.js +0 -61
- package/esm2015/lib/utils/json-parser.utils.js +0 -180
- package/esm2015/lib/utils/material.utils.js +0 -433
- package/esm2015/lib/utils/object.utils.js +0 -360
- package/esm2015/lib/utils/relative-position.utils.js +0 -75
- package/esm2015/lib/utils/rotation-helper.utils.js +0 -15
- package/esm2015/lib/utils/scene-3d.utils.js +0 -213
- package/esm2015/lib/utils/scene-utils.js +0 -191
- package/esm2015/lib/utils/text-utils.js +0 -68
- package/esm2015/lib/utils/threed.utils.js +0 -281
- package/esm2015/lib/utils/variation-utils.js +0 -459
- package/esm2015/public-api.js +0 -65
- package/fesm2015/colijnit-configurator.js.map +0 -1
- package/lib/builder.d.ts +0 -83
- package/lib/components/answer-card/answer-card.component.d.ts +0 -58
- package/lib/components/answer-card/answer-card.module.d.ts +0 -11
- package/lib/components/answer-info-dialog/answer-info-dialog.component.d.ts +0 -38
- package/lib/components/answer-info-dialog/answer-info-dialog.module.d.ts +0 -10
- package/lib/components/answers-slideout/answers-slideout.component.d.ts +0 -86
- package/lib/components/answers-slideout/answers-slideout.module.d.ts +0 -16
- package/lib/components/color-filter/color-filter.component.d.ts +0 -20
- package/lib/components/color-filter/color-filter.module.d.ts +0 -8
- package/lib/components/configurator/configurator.component.d.ts +0 -37
- package/lib/components/configurator/configurator.module.d.ts +0 -12
- package/lib/components/configurator-dialog/configurator-camera-settings.component.d.ts +0 -30
- package/lib/components/configurator-dialog/configurator-dialog.module.d.ts +0 -13
- package/lib/components/configurator-dialog/configurator-error-dialog.component.d.ts +0 -16
- package/lib/components/configurator-dialog/configurator-export-dialog.component.d.ts +0 -26
- package/lib/components/configurator-loader/configurator-loader.component.d.ts +0 -7
- package/lib/components/configurator-loader/configurator-loader.module.d.ts +0 -9
- package/lib/components/configurator-scene/configurator-scene.component.d.ts +0 -24
- package/lib/components/configurator-scene/configurator-scene.module.d.ts +0 -7
- package/lib/components/configurator-scene-loader/configurator-scene-loader.component.d.ts +0 -7
- package/lib/components/configurator-scene-loader/configurator-scene-loader.module.d.ts +0 -8
- package/lib/components/element-buttons/element-buttons.component.d.ts +0 -32
- package/lib/components/element-buttons/element-buttons.module.d.ts +0 -9
- package/lib/components/element-toolbar/element-toolbar.component.d.ts +0 -27
- package/lib/components/element-toolbar/element-toolbar.module.d.ts +0 -10
- package/lib/components/image-zoom/image-zoom.component.d.ts +0 -15
- package/lib/components/image-zoom/image-zoom.module.d.ts +0 -9
- package/lib/components/lite-selector/lite-selector.component.d.ts +0 -40
- package/lib/components/lite-selector/lite-selector.module.d.ts +0 -10
- package/lib/components/product-configurator/product-configurator.component.d.ts +0 -50
- package/lib/components/product-configurator/product-configurator.module.d.ts +0 -15
- package/lib/components/product-configurator-selector/product-configurator-selector.component.d.ts +0 -35
- package/lib/components/product-configurator-selector/product-configurator-selector.module.d.ts +0 -11
- package/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.d.ts +0 -31
- package/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.d.ts +0 -13
- package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.d.ts +0 -20
- package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.d.ts +0 -10
- package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.d.ts +0 -20
- package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.d.ts +0 -10
- package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.d.ts +0 -21
- package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.d.ts +0 -10
- package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.d.ts +0 -21
- package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.d.ts +0 -10
- package/lib/components/progress-bar/progress-bar.component.d.ts +0 -10
- package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
- package/lib/components/scene-options/scene-options.component.d.ts +0 -24
- package/lib/components/scene-options/scene-options.module.d.ts +0 -11
- package/lib/components/selections-summary/selections-summary.component.d.ts +0 -38
- package/lib/components/selections-summary/selections-summary.module.d.ts +0 -12
- package/lib/components/selections-summary-line/selections-summary-line.component.d.ts +0 -27
- package/lib/components/selections-summary-line/selections-summary-line.module.d.ts +0 -10
- package/lib/components/slideout/slideout.component.d.ts +0 -22
- package/lib/components/slideout/slideout.module.d.ts +0 -7
- package/lib/components/summary-line/summary-line.component.d.ts +0 -50
- package/lib/components/summary-line/summary-line.module.d.ts +0 -11
- package/lib/components/tag-filter/tag-filter.component.d.ts +0 -9
- package/lib/components/tag-filter/tag-filter.module.d.ts +0 -7
- package/lib/components/threedselector/threedselector.component.d.ts +0 -38
- package/lib/components/threedselector/threedselector.module.d.ts +0 -10
- package/lib/core/helper/variation-helper.d.ts +0 -25
- package/lib/core/shader/floor-fade.shader.d.ts +0 -5
- package/lib/core/textures/depth-data-texture.d.ts +0 -5
- package/lib/directives/directives.module.d.ts +0 -8
- package/lib/directives/visibility-observer-master.directive.d.ts +0 -12
- package/lib/directives/visibility-observer.directive.d.ts +0 -16
- package/lib/enum/ar-feature.enum.d.ts +0 -12
- package/lib/enum/configuration-key.enum.d.ts +0 -39
- package/lib/enum/configuration-template.enum.d.ts +0 -4
- package/lib/enum/device-size-type.d.ts +0 -5
- package/lib/enum/device-tier.enum.d.ts +0 -5
- package/lib/enum/icon.enum.d.ts +0 -111
- package/lib/enum/item-type.enum.d.ts +0 -21
- package/lib/enum/light.enum.d.ts +0 -7
- package/lib/enum/navigator-type.enum.d.ts +0 -4
- package/lib/enum/output-encoding.enum.d.ts +0 -7
- package/lib/enum/result-type.enum.d.ts +0 -19
- package/lib/enum/scene-event.enum.d.ts +0 -10
- package/lib/enum/shadow-map-type.enum.d.ts +0 -6
- package/lib/enum/texture-type.d.ts +0 -7
- package/lib/enum/tone-mapping-local.enum.d.ts +0 -10
- package/lib/enum/view-mode.enum.d.ts +0 -5
- package/lib/enum/xr-mode.enum.d.ts +0 -4
- package/lib/environments/environment.d.ts +0 -4
- package/lib/interfaces/aa-options.interface.d.ts +0 -4
- package/lib/interfaces/adjustable-element.interface.d.ts +0 -5
- package/lib/interfaces/ao-options.interface.d.ts +0 -18
- package/lib/interfaces/changes.interface.d.ts +0 -9
- package/lib/interfaces/configuration-data.interface.d.ts +0 -40
- package/lib/interfaces/light-preset.interface.d.ts +0 -22
- package/lib/interfaces/post-processing-setting.interface.d.ts +0 -11
- package/lib/interfaces/scene-option-button.interface.d.ts +0 -19
- package/lib/interfaces/screen-size-info.d.ts +0 -10
- package/lib/interfaces/setting.interface.d.ts +0 -8
- package/lib/interfaces/texture.interface.d.ts +0 -44
- package/lib/interfaces/vignette-options.interface.d.ts +0 -4
- package/lib/model/ar-position-indicator.d.ts +0 -4
- package/lib/model/camera-settings.d.ts +0 -12
- package/lib/model/configuration-result-object.d.ts +0 -30
- package/lib/model/configurator-error-message.d.ts +0 -8
- package/lib/model/configurator-settings.d.ts +0 -62
- package/lib/model/custom-button.d.ts +0 -10
- package/lib/model/factory.d.ts +0 -5
- package/lib/model/icon.d.ts +0 -4
- package/lib/model/intersected-objects.d.ts +0 -6
- package/lib/model/light-preset.d.ts +0 -33
- package/lib/model/light-properties.d.ts +0 -25
- package/lib/model/material.d.ts +0 -41
- package/lib/model/metadata.d.ts +0 -78
- package/lib/model/render-parameters.d.ts +0 -12
- package/lib/model/setting-options.d.ts +0 -67
- package/lib/model/settings.d.ts +0 -10
- package/lib/model/shadow-properties.d.ts +0 -7
- package/lib/model/skin.d.ts +0 -15
- package/lib/model/texture.d.ts +0 -52
- package/lib/model/variation-settings.d.ts +0 -55
- package/lib/model/variation.d.ts +0 -11
- package/lib/model/xr-reticle.d.ts +0 -17
- package/lib/modules/render/enum/scene-type.enum.d.ts +0 -4
- package/lib/modules/render/model/ar-parameters.d.ts +0 -9
- package/lib/modules/render/model/scene-setting.d.ts +0 -13
- package/lib/modules/render/model/scene-settings.d.ts +0 -4
- package/lib/pipes/append.pipe.d.ts +0 -7
- package/lib/pipes/google-translate.pipe.d.ts +0 -11
- package/lib/pipes/localize.pipe.d.ts +0 -10
- package/lib/pipes/pipes.module.d.ts +0 -11
- package/lib/pipes/prepend.pipe.d.ts +0 -7
- package/lib/pipes/strip-html.pipe.d.ts +0 -7
- package/lib/services/app-event.service.d.ts +0 -32
- package/lib/services/app-initializer.service.d.ts +0 -14
- package/lib/services/ar.service.d.ts +0 -120
- package/lib/services/build-furniture-base.service.d.ts +0 -117
- package/lib/services/build-furniture-without-scene.service.d.ts +0 -14
- package/lib/services/build-furniture.service.d.ts +0 -14
- package/lib/services/bundle-initialzer.service.d.ts +0 -45
- package/lib/services/camera.service.d.ts +0 -44
- package/lib/services/configuration.service.d.ts +0 -18
- package/lib/services/configurator-connector.service.d.ts +0 -140
- package/lib/services/configurator.service.d.ts +0 -62
- package/lib/services/configuring.service.d.ts +0 -46
- package/lib/services/controls.d.ts +0 -11
- package/lib/services/debug.service.d.ts +0 -16
- package/lib/services/dictionary.service.d.ts +0 -15
- package/lib/services/dynamic-camera.service.d.ts +0 -21
- package/lib/services/floor-plane.service.d.ts +0 -47
- package/lib/services/font.service.d.ts +0 -10
- package/lib/services/google-translate.service.d.ts +0 -26
- package/lib/services/icon-cache.service.d.ts +0 -21
- package/lib/services/intersection.service.d.ts +0 -11
- package/lib/services/item.service.d.ts +0 -18
- package/lib/services/json-utils.service.d.ts +0 -7
- package/lib/services/light-creation.service.d.ts +0 -9
- package/lib/services/light-presets.service.d.ts +0 -34
- package/lib/services/lights.service.d.ts +0 -34
- package/lib/services/load-furniture-base.service.d.ts +0 -37
- package/lib/services/load-furniture-without-scene.service.d.ts +0 -9
- package/lib/services/load-furniture.service.d.ts +0 -9
- package/lib/services/loader.service.d.ts +0 -11
- package/lib/services/locator.service.d.ts +0 -7
- package/lib/services/message-board.service.d.ts +0 -18
- package/lib/services/post-processing.service.d.ts +0 -74
- package/lib/services/product-configurator.service.d.ts +0 -11
- package/lib/services/progress.service.d.ts +0 -9
- package/lib/services/scene-event.service.d.ts +0 -72
- package/lib/services/scene-options.service.d.ts +0 -11
- package/lib/services/scene.service.d.ts +0 -71
- package/lib/services/screen-size-analysis.service.d.ts +0 -32
- package/lib/services/settings.service.d.ts +0 -24
- package/lib/services/switch-build-furniture.service.d.ts +0 -21
- package/lib/services/switch-load-furniture.service.d.ts +0 -21
- package/lib/services/threedselector.service.d.ts +0 -17
- package/lib/services/utils.service.d.ts +0 -24
- package/lib/services/variation-cache.service.d.ts +0 -23
- package/lib/services/variation.service.d.ts +0 -26
- package/lib/services/view-mode.service.d.ts +0 -17
- package/lib/services/vr.service.d.ts +0 -42
- package/lib/services/xr.service.d.ts +0 -56
- package/lib/utils/asset.utils.d.ts +0 -19
- package/lib/utils/base-utils.d.ts +0 -4
- package/lib/utils/color.utils.d.ts +0 -8
- package/lib/utils/debug.utils.d.ts +0 -3
- package/lib/utils/device.utils.d.ts +0 -7
- package/lib/utils/file.utils.d.ts +0 -30
- package/lib/utils/image.utils.d.ts +0 -9
- package/lib/utils/json-parser.utils.d.ts +0 -9
- package/lib/utils/material.utils.d.ts +0 -34
- package/lib/utils/object.utils.d.ts +0 -32
- package/lib/utils/relative-position.utils.d.ts +0 -12
- package/lib/utils/rotation-helper.utils.d.ts +0 -6
- package/lib/utils/scene-3d.utils.d.ts +0 -8
- package/lib/utils/scene-utils.d.ts +0 -7
- package/lib/utils/text-utils.d.ts +0 -4
- package/lib/utils/threed.utils.d.ts +0 -20
- package/lib/utils/variation-utils.d.ts +0 -18
- package/public-api.d.ts +0 -60
- /package/lib/style/{template_variables.scss → _variables.scss} +0 -0
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { Color, Vector2 } from 'three';
|
|
4
|
-
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
|
|
5
|
-
import GUI from 'three/examples/jsm/libs/lil-gui.module.min';
|
|
6
|
-
import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass';
|
|
7
|
-
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
|
|
8
|
-
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
|
|
9
|
-
import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass';
|
|
10
|
-
import { VignetteShader } from 'three/examples/jsm/shaders/VignetteShader';
|
|
11
|
-
import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass';
|
|
12
|
-
import { ConfigurationKey } from '../enum/configuration-key.enum';
|
|
13
|
-
import { DeviceUtils } from '../utils/device.utils';
|
|
14
|
-
import { N8AOPass } from 'n8ao';
|
|
15
|
-
import { SSAARenderPass } from 'three/examples/jsm/postprocessing/SSAARenderPass';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "./configuration.service";
|
|
18
|
-
import * as i2 from "./settings.service";
|
|
19
|
-
import * as i3 from "./app-event.service";
|
|
20
|
-
import * as i4 from "./screen-size-analysis.service";
|
|
21
|
-
export class PostProcessingService {
|
|
22
|
-
constructor(_configurationService, _settingsService, _appEventService, _screenSizeAnalysis) {
|
|
23
|
-
this._configurationService = _configurationService;
|
|
24
|
-
this._settingsService = _settingsService;
|
|
25
|
-
this._appEventService = _appEventService;
|
|
26
|
-
this._screenSizeAnalysis = _screenSizeAnalysis;
|
|
27
|
-
this._vignetteOffset = 1;
|
|
28
|
-
this._vignetteDarkness = 1.5;
|
|
29
|
-
this._outlinePassAsError = false;
|
|
30
|
-
this._hideOutlineTimeout = 10000;
|
|
31
|
-
this._standalone = false;
|
|
32
|
-
this._cameraMoved = false;
|
|
33
|
-
this._subs = [];
|
|
34
|
-
this._aoDefaultOptions = {
|
|
35
|
-
aoSamples: 32.0,
|
|
36
|
-
denoiseSamples: 8.0,
|
|
37
|
-
denoiseRadius: 24.0,
|
|
38
|
-
aoRadius: 5.0,
|
|
39
|
-
distanceFalloff: 1.0,
|
|
40
|
-
screenSpaceRadius: false,
|
|
41
|
-
halfRes: false,
|
|
42
|
-
depthAwareUpsampling: true,
|
|
43
|
-
transparencyAware: true,
|
|
44
|
-
intensity: 3.0,
|
|
45
|
-
renderMode: 'Combined',
|
|
46
|
-
color: '000000',
|
|
47
|
-
colorMultiply: true,
|
|
48
|
-
stencil: true,
|
|
49
|
-
accumulate: false,
|
|
50
|
-
gammaCorrection: false
|
|
51
|
-
};
|
|
52
|
-
this._aoOptions = this._aoDefaultOptions;
|
|
53
|
-
this._aaDefaultOptions = {
|
|
54
|
-
sampleLevel: 4,
|
|
55
|
-
unbiased: false
|
|
56
|
-
};
|
|
57
|
-
this._aaOptions = this._aaDefaultOptions;
|
|
58
|
-
this._vignetteDefaultOptions = {
|
|
59
|
-
vignetteOffset: 1,
|
|
60
|
-
vignetteDarkness: 1.5
|
|
61
|
-
};
|
|
62
|
-
this._vignetteOptions = this._vignetteDefaultOptions;
|
|
63
|
-
this._subs.push(this._configurationService.onChange.subscribe((changed) => {
|
|
64
|
-
if (ConfigurationKey.ShowPostProcessingSettings in changed) {
|
|
65
|
-
this._showHideGui(changed[ConfigurationKey.ShowPostProcessingSettings]);
|
|
66
|
-
}
|
|
67
|
-
}), this._settingsService.lightSettingsLoaded.subscribe((settings) => {
|
|
68
|
-
if (settings && settings.length > 0) {
|
|
69
|
-
const navigatorType = this._screenSizeAnalysis.navigatorType();
|
|
70
|
-
let setting = settings.find((preset) => preset.navigatorType === navigatorType && preset.default && preset.standalone === this._standalone);
|
|
71
|
-
if (!setting) {
|
|
72
|
-
setting = settings.find((preset) => preset.default);
|
|
73
|
-
}
|
|
74
|
-
if (!setting) {
|
|
75
|
-
setting = settings[0];
|
|
76
|
-
}
|
|
77
|
-
if (setting) {
|
|
78
|
-
this._loadSetting(setting);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}), this._appEventService.showOutline.subscribe((object) => this._showOutline(object)), this._appEventService.showErrorOutline.subscribe((object) => this._showErrorOutline(object)), this._appEventService.hideOutline.subscribe(() => this._hideOutline()));
|
|
82
|
-
}
|
|
83
|
-
ngOnDestroy() {
|
|
84
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
85
|
-
}
|
|
86
|
-
init(renderer, scene, camera, width, height, standalone) {
|
|
87
|
-
this._standalone = standalone;
|
|
88
|
-
this._renderer = renderer;
|
|
89
|
-
this._scene = scene;
|
|
90
|
-
this._camera = camera;
|
|
91
|
-
this._width = width;
|
|
92
|
-
this._height = height;
|
|
93
|
-
this._postProcessingGui = new GUI();
|
|
94
|
-
this._postProcessingGui.hide();
|
|
95
|
-
this._initComposer();
|
|
96
|
-
this._createGui();
|
|
97
|
-
this._createGuiTaaPass();
|
|
98
|
-
}
|
|
99
|
-
setSize(width, height, force = false) {
|
|
100
|
-
if (this._width === width && this._height === height && !force) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this._width = width;
|
|
104
|
-
this._height = height;
|
|
105
|
-
if (this._composer) {
|
|
106
|
-
this._composer.setSize(width, height);
|
|
107
|
-
}
|
|
108
|
-
const pr = this._renderer.getPixelRatio();
|
|
109
|
-
if (this._n8aoPass) {
|
|
110
|
-
this._n8aoPass.setSize(this._width * pr, this._height * pr);
|
|
111
|
-
}
|
|
112
|
-
if (this._smaaPass) {
|
|
113
|
-
this._smaaPass.setSize(this._width * pr, this._height * pr);
|
|
114
|
-
}
|
|
115
|
-
if (this._ssaaPass) {
|
|
116
|
-
this._ssaaPass.setSize(this._width * pr, this._height * pr);
|
|
117
|
-
}
|
|
118
|
-
if (this._outlinePass) {
|
|
119
|
-
this._outlinePass.setSize(this._width * pr, this._height * pr);
|
|
120
|
-
}
|
|
121
|
-
this._updateAASize();
|
|
122
|
-
}
|
|
123
|
-
render() {
|
|
124
|
-
if (this._composer) {
|
|
125
|
-
this._composer.render();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
cameraMovementChanged() {
|
|
129
|
-
}
|
|
130
|
-
showGui() {
|
|
131
|
-
if (this._postProcessingGui) {
|
|
132
|
-
this._postProcessingGui.show(true);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
hideGui() {
|
|
136
|
-
if (this._postProcessingGui) {
|
|
137
|
-
this._postProcessingGui.hide();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
forceRenderCanvas() {
|
|
141
|
-
this.render();
|
|
142
|
-
}
|
|
143
|
-
_loadSetting(setting) {
|
|
144
|
-
if (setting && setting.postProcessing) {
|
|
145
|
-
this.aoEnabled = setting.postProcessing.aoEnabled;
|
|
146
|
-
this.aaEnabled = setting.postProcessing.aaEnabled;
|
|
147
|
-
this.vignetteEnabled = setting.postProcessing.vignetteEnabled;
|
|
148
|
-
if (setting.postProcessing.aoOptions) {
|
|
149
|
-
this._aoOptions = Object.assign(Object.assign({}, this._aoDefaultOptions), setting.postProcessing.aoOptions);
|
|
150
|
-
}
|
|
151
|
-
if (setting.postProcessing.aaOptions) {
|
|
152
|
-
this._aaOptions = Object.assign(Object.assign({}, this._aaDefaultOptions), setting.postProcessing.aaOptions);
|
|
153
|
-
}
|
|
154
|
-
if (setting.postProcessing.vignetteOptions) {
|
|
155
|
-
this._vignetteOptions = Object.assign(Object.assign({}, this._vignetteDefaultOptions), setting.postProcessing.vignetteOptions);
|
|
156
|
-
}
|
|
157
|
-
this._initComposer();
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
_showErrorOutline(item) {
|
|
161
|
-
if (!this._outlinePassAsError) {
|
|
162
|
-
this._setErrorGlowSettings();
|
|
163
|
-
this._outlinePassAsError = true;
|
|
164
|
-
}
|
|
165
|
-
this._outlinePass.selectedObjects = [item];
|
|
166
|
-
}
|
|
167
|
-
_showOutline(item) {
|
|
168
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
-
clearTimeout(this._hideOutlineTimer);
|
|
170
|
-
if (this._outlinePassAsError) {
|
|
171
|
-
this._setSelectionGlowSettings();
|
|
172
|
-
this._outlinePassAsError = false;
|
|
173
|
-
}
|
|
174
|
-
this._outlinePass.selectedObjects = [item];
|
|
175
|
-
// await this._animatedOutlineStrength(0, 300);
|
|
176
|
-
// remove after x amount of ms
|
|
177
|
-
this._hideOutlineTimer = setTimeout(() => {
|
|
178
|
-
this._hideOutline();
|
|
179
|
-
}, this._hideOutlineTimeout);
|
|
180
|
-
this.render();
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
_hideOutline() {
|
|
184
|
-
if (this._outlinePass.selectedObjects.length > 0) {
|
|
185
|
-
// await this._animatedOutlineStrength(300, 0);
|
|
186
|
-
this._outlinePass.selectedObjects = [];
|
|
187
|
-
this.render();
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
_updateAASize() {
|
|
191
|
-
const fxaaUniform = this._fxaaPass && this._fxaaPass.material && this._fxaaPass.material.uniforms && this._fxaaPass.material.uniforms.resolution ? this._fxaaPass.material.uniforms.resolution.value : null;
|
|
192
|
-
const pr = this._renderer.getPixelRatio();
|
|
193
|
-
if (fxaaUniform) {
|
|
194
|
-
fxaaUniform.set(1 / Math.max(1, this._width * pr), 1 / Math.max(1, this._height * pr));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
_initComposer() {
|
|
198
|
-
if (!this._renderer || !this._scene || !this._camera) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
this._cleanUp();
|
|
202
|
-
const deviceTier = DeviceUtils.GetDeviceTier();
|
|
203
|
-
this._composer = new EffectComposer(this._renderer);
|
|
204
|
-
this._renderPass = new RenderPass(this._scene, this._camera);
|
|
205
|
-
this._composer.addPass(this._renderPass);
|
|
206
|
-
if (this._aoEnabled) {
|
|
207
|
-
this._n8aoPass = new N8AOPass(this._scene, this._camera, this._width, this._height);
|
|
208
|
-
this._applyAoProps();
|
|
209
|
-
this._composer.addPass(this._n8aoPass);
|
|
210
|
-
if (this.aaEnabled) {
|
|
211
|
-
this._smaaPass = new SMAAPass();
|
|
212
|
-
this._composer.addPass(this._smaaPass);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
if (this.aaEnabled) {
|
|
217
|
-
this._ssaaPass = new SSAARenderPass(this._scene, this._camera);
|
|
218
|
-
this._ssaaPass.sampleLevel = this._aaOptions.sampleLevel;
|
|
219
|
-
this._ssaaPass.unbiased = this._aaOptions.unbiased;
|
|
220
|
-
this._composer.addPass(this._ssaaPass);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
this._outlinePass = new OutlinePass(new Vector2(this._width, this._height), this._scene, this._camera);
|
|
224
|
-
this._setSelectionGlowSettings();
|
|
225
|
-
this._composer.addPass(this._outlinePass);
|
|
226
|
-
if (this.vignetteEnabled) {
|
|
227
|
-
this._vignettePass = new ShaderPass(VignetteShader);
|
|
228
|
-
this._vignettePass.uniforms.offset.value = this._vignetteOptions.vignetteOffset;
|
|
229
|
-
this._vignettePass.uniforms.darkness.value = this._vignetteOptions.vignetteDarkness;
|
|
230
|
-
this._composer.addPass(this._vignettePass);
|
|
231
|
-
}
|
|
232
|
-
this._outputPass = new OutputPass();
|
|
233
|
-
this._composer.addPass(this._outputPass);
|
|
234
|
-
this.setSize(this._width, this._height, true);
|
|
235
|
-
this.render();
|
|
236
|
-
}
|
|
237
|
-
_cleanUp() {
|
|
238
|
-
if (this._composer) {
|
|
239
|
-
this._composer.dispose();
|
|
240
|
-
}
|
|
241
|
-
if (this._renderPass) {
|
|
242
|
-
this._renderPass.dispose();
|
|
243
|
-
}
|
|
244
|
-
if (this._n8aoPass) {
|
|
245
|
-
this._n8aoPass.dispose();
|
|
246
|
-
}
|
|
247
|
-
if (this._fxaaPass) {
|
|
248
|
-
this._fxaaPass.dispose();
|
|
249
|
-
}
|
|
250
|
-
if (this._smaaPass) {
|
|
251
|
-
this._smaaPass.dispose();
|
|
252
|
-
}
|
|
253
|
-
if (this._ssaaPass) {
|
|
254
|
-
this._ssaaPass.dispose();
|
|
255
|
-
}
|
|
256
|
-
if (this._vignettePass) {
|
|
257
|
-
this._vignettePass.dispose();
|
|
258
|
-
}
|
|
259
|
-
if (this._outlinePass) {
|
|
260
|
-
this._outlinePass.dispose();
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
_applyAoProps() {
|
|
264
|
-
this._n8aoPass.configuration.aoRadius = this._aoOptions.aoRadius;
|
|
265
|
-
this._n8aoPass.configuration.distanceFalloff = this._aoOptions.distanceFalloff;
|
|
266
|
-
this._n8aoPass.configuration.transparencyAware = this._aoOptions.transparencyAware;
|
|
267
|
-
this._n8aoPass.configuration.intensity = this._aoOptions.intensity;
|
|
268
|
-
this._n8aoPass.configuration.aoSamples = this._aoOptions.aoSamples;
|
|
269
|
-
this._n8aoPass.configuration.denoiseRadius = this._aoOptions.denoiseRadius;
|
|
270
|
-
this._n8aoPass.configuration.denoiseSamples = this._aoOptions.denoiseSamples;
|
|
271
|
-
this._n8aoPass.configuration.stencil = this._aoOptions.stencil;
|
|
272
|
-
this._n8aoPass.configuration.renderMode = ['Combined', 'AO', 'No AO', 'Split', 'Split AO'].indexOf(this._aoOptions.renderMode);
|
|
273
|
-
this._n8aoPass.configuration.color = new Color(`#${this._aoOptions.color}`);
|
|
274
|
-
this._n8aoPass.configuration.screenSpaceRadius = this._aoOptions.screenSpaceRadius;
|
|
275
|
-
this._n8aoPass.configuration.halfRes = this._aoOptions.halfRes;
|
|
276
|
-
this._n8aoPass.configuration.depthAwareUpsampling = this._aoOptions.depthAwareUpsampling;
|
|
277
|
-
this._n8aoPass.configuration.colorMultiply = this._aoOptions.colorMultiply;
|
|
278
|
-
this._n8aoPass.configuration.accumulate = this._aoOptions.accumulate;
|
|
279
|
-
this._n8aoPass.configuration.gammaCorrection = this._aoOptions.gammaCorrection;
|
|
280
|
-
this.render();
|
|
281
|
-
}
|
|
282
|
-
_createGuiTaaPass() {
|
|
283
|
-
const param = { TAAEnabled: '1', TAASampleLevel: 0 };
|
|
284
|
-
this._postProcessingGui.add(param, 'TAAEnabled', {
|
|
285
|
-
'Disabled': '0',
|
|
286
|
-
'Enabled': '1'
|
|
287
|
-
}).onFinishChange(() => {
|
|
288
|
-
if (this._taaRenderPass) {
|
|
289
|
-
this._taaRenderPass.enabled = (param.TAAEnabled === '1');
|
|
290
|
-
}
|
|
291
|
-
this.render();
|
|
292
|
-
});
|
|
293
|
-
this._postProcessingGui.add(param, 'TAASampleLevel', {
|
|
294
|
-
'Level 0: 1 Sample': 0,
|
|
295
|
-
'Level 1: 2 Samples': 1,
|
|
296
|
-
'Level 2: 4 Samples': 2,
|
|
297
|
-
'Level 3: 8 Samples': 3,
|
|
298
|
-
'Level 4: 16 Samples': 4,
|
|
299
|
-
'Level 5: 32 Samples': 5
|
|
300
|
-
}).onFinishChange(() => {
|
|
301
|
-
if (this._taaRenderPass) {
|
|
302
|
-
this._taaRenderPass.sampleLevel = param.TAASampleLevel;
|
|
303
|
-
}
|
|
304
|
-
this.render();
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
_showHideGui(show) {
|
|
308
|
-
show ? this.showGui() : this.hideGui();
|
|
309
|
-
}
|
|
310
|
-
_createGui() {
|
|
311
|
-
this._postProcessingGui.add(this._aoOptions, 'aoSamples', 1.0, 64.0, 1.0).onChange(() => this._applyAoProps());
|
|
312
|
-
this._postProcessingGui.add(this._aoOptions, 'denoiseSamples', 1.0, 64.0, 1.0).onChange(() => this._applyAoProps());
|
|
313
|
-
this._postProcessingGui.add(this._aoOptions, 'denoiseRadius', 0.0, 24.0, 0.01).onChange(() => this._applyAoProps());
|
|
314
|
-
const aor = this._postProcessingGui.add(this._aoOptions, 'aoRadius', 1.0, 10.0, 0.01).onChange(() => this._applyAoProps());
|
|
315
|
-
const df = this._postProcessingGui.add(this._aoOptions, 'distanceFalloff', 0.0, 10.0, 0.01).onChange(() => this._applyAoProps());
|
|
316
|
-
this._postProcessingGui.add(this._aoOptions, 'screenSpaceRadius').onChange((value) => {
|
|
317
|
-
if (value) {
|
|
318
|
-
this._aoOptions.aoRadius = 48.0;
|
|
319
|
-
this._aoOptions.distanceFalloff = 0.2;
|
|
320
|
-
aor._min = 0;
|
|
321
|
-
aor._max = 64;
|
|
322
|
-
df._min = 0;
|
|
323
|
-
df._max = 1;
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
this._aoOptions.aoRadius = 5.0;
|
|
327
|
-
this._aoOptions.distanceFalloff = 1.0;
|
|
328
|
-
aor._min = 1;
|
|
329
|
-
aor._max = 10;
|
|
330
|
-
df._min = 0;
|
|
331
|
-
df._max = 10;
|
|
332
|
-
}
|
|
333
|
-
aor.updateDisplay();
|
|
334
|
-
df.updateDisplay();
|
|
335
|
-
this._applyAoProps();
|
|
336
|
-
});
|
|
337
|
-
const blendShaderParams = {
|
|
338
|
-
mixRatio: 0.5
|
|
339
|
-
};
|
|
340
|
-
this._postProcessingGui.add(this._aoOptions, 'halfRes').onChange(() => this._applyAoProps());
|
|
341
|
-
this._postProcessingGui.add(this._aoOptions, 'transparencyAware').onChange(() => this._applyAoProps());
|
|
342
|
-
this._postProcessingGui.add(this._aoOptions, 'depthAwareUpsampling').onChange(() => this._applyAoProps());
|
|
343
|
-
this._postProcessingGui.add(this._aoOptions, 'stencil').onChange(() => this._applyAoProps());
|
|
344
|
-
this._postProcessingGui.add(this._aoOptions, 'intensity', 0.0, 10.0, 0.01).onChange(() => this._applyAoProps());
|
|
345
|
-
this._postProcessingGui.addColor(this._aoOptions, 'color').onChange(() => this._applyAoProps());
|
|
346
|
-
this._postProcessingGui.add(this._aoOptions, 'colorMultiply').onChange(() => this._applyAoProps());
|
|
347
|
-
this._postProcessingGui.add(this._aoOptions, 'accumulate').onChange(() => this._applyAoProps());
|
|
348
|
-
this._postProcessingGui.add(this._aoOptions, 'gammaCorrection').onChange(() => this._applyAoProps());
|
|
349
|
-
this._postProcessingGui.add(this._aoOptions, 'renderMode', ['Combined', 'AO', 'No AO', 'Split', 'Split AO']).onChange(() => this._applyAoProps());
|
|
350
|
-
this._postProcessingGui.add(blendShaderParams, 'mixRatio', 0.0, 10.0, 0.01).onChange(() => {
|
|
351
|
-
this._blendShader.uniforms.mixRatio.value = blendShaderParams.mixRatio;
|
|
352
|
-
this.render();
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
_setErrorGlowSettings() {
|
|
356
|
-
this._outlinePass.visibleEdgeColor.set('#e60002');
|
|
357
|
-
this._outlinePass.hiddenEdgeColor.set('#e60002');
|
|
358
|
-
this._outlinePass.edgeStrength = 4;
|
|
359
|
-
this._outlinePass.edgeGlow = 1;
|
|
360
|
-
this._outlinePass.edgeThickness = 1;
|
|
361
|
-
this._outlinePass.pulsePeriod = 1.5;
|
|
362
|
-
}
|
|
363
|
-
_setSelectionGlowSettings() {
|
|
364
|
-
this._outlinePass.visibleEdgeColor.set('#ffffff');
|
|
365
|
-
this._outlinePass.hiddenEdgeColor.set('#ffffff');
|
|
366
|
-
this._outlinePass.edgeStrength = 2;
|
|
367
|
-
this._outlinePass.edgeGlow = 0.5;
|
|
368
|
-
this._outlinePass.edgeThickness = 1.5;
|
|
369
|
-
this._outlinePass.pulsePeriod = 0;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
PostProcessingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, deps: [{ token: i1.ConfigurationService }, { token: i2.SettingsService }, { token: i3.AppEventService }, { token: i4.ScreenSizeAnalysisService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
373
|
-
PostProcessingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, providedIn: 'root' });
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, decorators: [{
|
|
375
|
-
type: Injectable,
|
|
376
|
-
args: [{ providedIn: 'root' }]
|
|
377
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.SettingsService }, { type: i3.AppEventService }, { type: i4.ScreenSizeAnalysisService }]; } });
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1wcm9jZXNzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25maWd1cmF0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9wb3N0LXByb2Nlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsS0FBSyxFQUFzQyxPQUFPLEVBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNoRixPQUFPLEdBQUcsTUFBTSw0Q0FBNEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUtwRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0RBQWtELENBQUM7Ozs7OztBQVNoRixNQUFNLE9BQU8scUJBQXFCO0lBcUVoQyxZQUNVLHFCQUEyQyxFQUMzQyxnQkFBaUMsRUFDakMsZ0JBQWlDLEVBQ2pDLG1CQUE4QztRQUg5QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNC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QWEsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3RDLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDOzttSEEvWlUscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FEVCxNQUFNOzRGQUNsQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbG9yLCBPYmplY3QzRCwgUGVyc3BlY3RpdmVDYW1lcmEsIFNjZW5lLCBWZWN0b3IyLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7RWZmZWN0Q29tcG9zZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9FZmZlY3RDb21wb3Nlcic7XHJcbmltcG9ydCBHVUkgZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xpYnMvbGlsLWd1aS5tb2R1bGUubWluJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1RBQVJlbmRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9UQUFSZW5kZXJQYXNzJztcclxuaW1wb3J0IHtPdXRwdXRQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvT3V0cHV0UGFzcyc7XHJcbmltcG9ydCB7UmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1JlbmRlclBhc3MnO1xyXG5pbXBvcnQge0ZYQUFTaGFkZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9zaGFkZXJzL0ZYQUFTaGFkZXInO1xyXG5pbXBvcnQge1NoYWRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9TaGFkZXJQYXNzJztcclxuaW1wb3J0IHtPdXRsaW5lUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL091dGxpbmVQYXNzJztcclxuaW1wb3J0IHtWaWduZXR0ZVNoYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3NoYWRlcnMvVmlnbmV0dGVTaGFkZXInO1xyXG5pbXBvcnQge1NNQUFQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvU01BQVBhc3MnO1xyXG5pbXBvcnQge1NldHRpbmdzU2VydmljZX0gZnJvbSAnLi9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcHBFdmVudFNlcnZpY2V9IGZyb20gJy4vYXBwLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25EYXRhfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZ3VyYXRpb24tZGF0YS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbktleX0gZnJvbSAnLi4vZW51bS9jb25maWd1cmF0aW9uLWtleS5lbnVtJztcclxuaW1wb3J0IHtEZXZpY2VUaWVyfSBmcm9tICcuLi9lbnVtL2RldmljZS10aWVyLmVudW0nO1xyXG5pbXBvcnQge0RldmljZVV0aWxzfSBmcm9tICcuLi91dGlscy9kZXZpY2UudXRpbHMnO1xyXG5pbXBvcnQge044QU9QYXNzfSBmcm9tICduOGFvJztcclxuaW1wb3J0IHtTU0FBUmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1NTQUFSZW5kZXJQYXNzJztcclxuaW1wb3J0IHtBb09wdGlvbnN9IGZyb20gJy4uL2ludGVyZmFjZXMvYW8tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FhT3B0aW9uc30gZnJvbSAnLi4vaW50ZXJmYWNlcy9hYS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7VmlnbmV0dGVPcHRpb25zfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZ25ldHRlLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTZXR0aW5nfSBmcm9tICcuLi9tb2RlbC9zZXR0aW5ncyc7XHJcbmltcG9ydCB7TmF2aWdhdG9yVHlwZX0gZnJvbSAnLi4vZW51bS9uYXZpZ2F0b3ItdHlwZS5lbnVtJztcclxuaW1wb3J0IHtTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlfSBmcm9tICcuL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBQb3N0UHJvY2Vzc2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2FvRW5hYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hYUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfdmlnbmV0dGVFbmFibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlT2Zmc2V0OiBudW1iZXIgPSAxO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlRGFya25lc3M6IG51bWJlciA9IDEuNTtcclxuXHJcbiAgcHJpdmF0ZSBfY29tcG9zZXI6IEVmZmVjdENvbXBvc2VyO1xyXG4gIHByaXZhdGUgX244YW9QYXNzOiBOOEFPUGFzcztcclxuICBwcml2YXRlIF9yZW5kZXJQYXNzOiBSZW5kZXJQYXNzO1xyXG4gIHByaXZhdGUgX291dHB1dFBhc3M6IE91dHB1dFBhc3M7XHJcbiAgcHJpdmF0ZSBfZnhhYVBhc3M6IFNoYWRlclBhc3M7XHJcbiAgcHJpdmF0ZSBfc21hYVBhc3M6IFNNQUFQYXNzO1xyXG4gIHByaXZhdGUgX3NzYWFQYXNzOiBTU0FBUmVuZGVyUGFzcztcclxuICBwcml2YXRlIF90YWFSZW5kZXJQYXNzOiBUQUFSZW5kZXJQYXNzO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlUGFzczogU2hhZGVyUGFzcztcclxuICBwcml2YXRlIF9vdXRsaW5lUGFzczogT3V0bGluZVBhc3M7XHJcbiAgcHJpdmF0ZSBfc2NlbmU6IFNjZW5lO1xyXG4gIHByaXZhdGUgX3JlbmRlcmVyOiBXZWJHTFJlbmRlcmVyO1xyXG4gIHByaXZhdGUgX2NhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmE7XHJcbiAgcHJpdmF0ZSBfYmxlbmRTaGFkZXI6IFNoYWRlclBhc3M7XHJcbiAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcjtcclxuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcclxuICBwcml2YXRlIF9vdXRsaW5lUGFzc0FzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9oaWRlT3V0bGluZVRpbWVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmVUaW1lb3V0OiBudW1iZXIgPSAxMDAwMDtcclxuICBwcml2YXRlIF9zdGFuZGFsb25lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FtZXJhTW92ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfcG9zdFByb2Nlc3NpbmdHdWk6IEdVSTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9hb0RlZmF1bHRPcHRpb25zOiBBb09wdGlvbnMgPSB7XHJcbiAgICBhb1NhbXBsZXM6IDMyLjAsXHJcbiAgICBkZW5vaXNlU2FtcGxlczogOC4wLFxyXG4gICAgZGVub2lzZVJhZGl1czogMjQuMCxcclxuICAgIGFvUmFkaXVzOiA1LjAsXHJcbiAgICBkaXN0YW5jZUZhbGxvZmY6IDEuMCxcclxuICAgIHNjcmVlblNwYWNlUmFkaXVzOiBmYWxzZSxcclxuICAgIGhhbGZSZXM6IGZhbHNlLFxyXG4gICAgZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXHJcbiAgICB0cmFuc3BhcmVuY3lBd2FyZTogdHJ1ZSxcclxuICAgIGludGVuc2l0eTogMy4wLFxyXG4gICAgcmVuZGVyTW9kZTogJ0NvbWJpbmVkJyxcclxuICAgIGNvbG9yOiAnMDAwMDAwJyxcclxuICAgIGNvbG9yTXVsdGlwbHk6IHRydWUsXHJcbiAgICBzdGVuY2lsOiB0cnVlLFxyXG4gICAgYWNjdW11bGF0ZTogZmFsc2UsXHJcbiAgICBnYW1tYUNvcnJlY3Rpb246IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfYW9PcHRpb25zOiBBb09wdGlvbnMgPSB0aGlzLl9hb0RlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwcml2YXRlIF9hYURlZmF1bHRPcHRpb25zOiBBYU9wdGlvbnMgPSB7XHJcbiAgICBzYW1wbGVMZXZlbDogNCxcclxuICAgIHVuYmlhc2VkOiBmYWxzZVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfYWFPcHRpb25zOiBBYU9wdGlvbnMgPSB0aGlzLl9hYURlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwcml2YXRlIF92aWduZXR0ZURlZmF1bHRPcHRpb25zOiBWaWduZXR0ZU9wdGlvbnMgPSB7XHJcbiAgICB2aWduZXR0ZU9mZnNldDogMSxcclxuICAgIHZpZ25ldHRlRGFya25lc3M6IDEuNVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfdmlnbmV0dGVPcHRpb25zOiBWaWduZXR0ZU9wdGlvbnMgPSB0aGlzLl92aWduZXR0ZURlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwdWJsaWMgYW9FbmFibGVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBhYUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIHZpZ25ldHRlRW5hYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogQXBwRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZUFuYWx5c2lzOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLm9uQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlZDogQ29uZmlndXJhdGlvbkRhdGEpID0+IHtcclxuICAgICAgICBpZiAoQ29uZmlndXJhdGlvbktleS5TaG93UG9zdFByb2Nlc3NpbmdTZXR0aW5ncyBpbiBjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLl9zaG93SGlkZUd1aShjaGFuZ2VkW0NvbmZpZ3VyYXRpb25LZXkuU2hvd1Bvc3RQcm9jZXNzaW5nU2V0dGluZ3NdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9zZXR0aW5nc1NlcnZpY2UubGlnaHRTZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKHNldHRpbmdzOiBTZXR0aW5nW10pID0+IHtcclxuICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbmF2aWdhdG9yVHlwZTogTmF2aWdhdG9yVHlwZSA9IHRoaXMuX3NjcmVlblNpemVBbmFseXNpcy5uYXZpZ2F0b3JUeXBlKCk7XHJcbiAgICAgICAgICBsZXQgc2V0dGluZzogU2V0dGluZyA9IHNldHRpbmdzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0Lm5hdmlnYXRvclR5cGUgPT09IG5hdmlnYXRvclR5cGUgJiYgcHJlc2V0LmRlZmF1bHQgJiYgcHJlc2V0LnN0YW5kYWxvbmUgPT09IHRoaXMuX3N0YW5kYWxvbmUpO1xyXG4gICAgICAgICAgaWYgKCFzZXR0aW5nKSB7XHJcbiAgICAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5ncy5maW5kKChwcmVzZXQpID0+IHByZXNldC5kZWZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghc2V0dGluZykge1xyXG4gICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3NbMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoc2V0dGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkU2V0dGluZyhzZXR0aW5nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uuc2hvd091dGxpbmUuc3Vic2NyaWJlKChvYmplY3Q6IE9iamVjdDNEKSA9PiB0aGlzLl9zaG93T3V0bGluZShvYmplY3QpKSxcclxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLnNob3dFcnJvck91dGxpbmUuc3Vic2NyaWJlKChvYmplY3Q6IE9iamVjdDNEKSA9PiB0aGlzLl9zaG93RXJyb3JPdXRsaW5lKG9iamVjdCkpLFxyXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2UuaGlkZU91dGxpbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hpZGVPdXRsaW5lKCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXQocmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSwgY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHN0YW5kYWxvbmU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YW5kYWxvbmUgPSBzdGFuZGFsb25lO1xyXG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlcjtcclxuICAgIHRoaXMuX3NjZW5lID0gc2NlbmU7XHJcbiAgICB0aGlzLl9jYW1lcmEgPSBjYW1lcmE7XHJcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkgPSBuZXcgR1VJKCk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5oaWRlKCk7XHJcbiAgICB0aGlzLl9pbml0Q29tcG9zZXIoKTtcclxuICAgIHRoaXMuX2NyZWF0ZUd1aSgpO1xyXG4gICAgdGhpcy5fY3JlYXRlR3VpVGFhUGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl93aWR0aCA9PT0gd2lkdGggJiYgdGhpcy5faGVpZ2h0ID09PSBoZWlnaHQgJiYgIWZvcmNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5fY29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fY29tcG9zZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByOiBudW1iZXIgPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICBpZiAodGhpcy5fbjhhb1Bhc3MpIHtcclxuICAgICAgdGhpcy5fbjhhb1Bhc3Muc2V0U2l6ZSh0aGlzLl93aWR0aCAqIHByLCB0aGlzLl9oZWlnaHQgKiBwcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3NtYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NtYWFQYXNzLnNldFNpemUodGhpcy5fd2lkdGggKiBwciwgdGhpcy5faGVpZ2h0ICogcHIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NzYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NzYWFQYXNzLnNldFNpemUodGhpcy5fd2lkdGggKiBwciwgdGhpcy5faGVpZ2h0ICogcHIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9vdXRsaW5lUGFzcykge1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzcy5zZXRTaXplKHRoaXMuX3dpZHRoICogcHIsIHRoaXMuX2hlaWdodCAqIHByKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl91cGRhdGVBQVNpemUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW5kZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fY29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fY29tcG9zZXIucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FtZXJhTW92ZW1lbnRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dHdWkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkpIHtcclxuICAgICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuc2hvdyh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlR3VpKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpKSB7XHJcbiAgICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JjZVJlbmRlckNhbnZhcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkU2V0dGluZyhzZXR0aW5nOiBTZXR0aW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2V0dGluZyAmJiBzZXR0aW5nLnBvc3RQcm9jZXNzaW5nKSB7XHJcbiAgICAgIHRoaXMuYW9FbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy5hb0VuYWJsZWQ7XHJcbiAgICAgIHRoaXMuYWFFbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy5hYUVuYWJsZWQ7XHJcbiAgICAgIHRoaXMudmlnbmV0dGVFbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZUVuYWJsZWQ7XHJcbiAgICAgIGlmIChzZXR0aW5nLnBvc3RQcm9jZXNzaW5nLmFvT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX2FvT3B0aW9ucyA9IHsuLi50aGlzLl9hb0RlZmF1bHRPcHRpb25zLCAuLi5zZXR0aW5nLnBvc3RQcm9jZXNzaW5nLmFvT3B0aW9uc307XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNldHRpbmcucG9zdFByb2Nlc3NpbmcuYWFPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5fYWFPcHRpb25zID0gey4uLnRoaXMuX2FhRGVmYXVsdE9wdGlvbnMsIC4uLnNldHRpbmcucG9zdFByb2Nlc3NpbmcuYWFPcHRpb25zfTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLl92aWduZXR0ZU9wdGlvbnMgPSB7Li4udGhpcy5fdmlnbmV0dGVEZWZhdWx0T3B0aW9ucywgLi4uc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZU9wdGlvbnN9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2luaXRDb21wb3NlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0Vycm9yT3V0bGluZShpdGVtOiBPYmplY3QzRCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IpIHtcclxuICAgICAgdGhpcy5fc2V0RXJyb3JHbG93U2V0dGluZ3MoKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dPdXRsaW5lKGl0ZW06IE9iamVjdDNEKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZU91dGxpbmVUaW1lcik7XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkdsb3dTZXR0aW5ncygpO1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICAgIC8vIGF3YWl0IHRoaXMuX2FuaW1hdGVkT3V0bGluZVN0cmVuZ3RoKDAsIDMwMCk7XHJcbiAgICAvLyByZW1vdmUgYWZ0ZXIgeCBhbW91bnQgb2YgbXNcclxuICAgIHRoaXMuX2hpZGVPdXRsaW5lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5faGlkZU91dGxpbmUoKTtcclxuICAgIH0sIHRoaXMuX2hpZGVPdXRsaW5lVGltZW91dCk7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3Muc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5fYW5pbWF0ZWRPdXRsaW5lU3RyZW5ndGgoMzAwLCAwKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3Muc2VsZWN0ZWRPYmplY3RzID0gW107XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBQVNpemUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmeGFhVW5pZm9ybSA9IHRoaXMuX2Z4YWFQYXNzICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zLnJlc29sdXRpb24gPyB0aGlzLl9meGFhUGFzcy5tYXRlcmlhbC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlIDogbnVsbDtcclxuICAgIGNvbnN0IHByOiBudW1iZXIgPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICBpZiAoZnhhYVVuaWZvcm0pIHtcclxuICAgICAgZnhhYVVuaWZvcm0uc2V0KDEgLyBNYXRoLm1heCgxLCB0aGlzLl93aWR0aCAqIHByKSwgMSAvIE1hdGgubWF4KDEsIHRoaXMuX2hlaWdodCAqIHByKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q29tcG9zZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX3JlbmRlcmVyIHx8ICF0aGlzLl9zY2VuZSB8fCAhdGhpcy5fY2FtZXJhKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2NsZWFuVXAoKTtcclxuICAgIGNvbnN0IGRldmljZVRpZXI6IERldmljZVRpZXIgPSBEZXZpY2VVdGlscy5HZXREZXZpY2VUaWVyKCk7XHJcblxyXG4gICAgdGhpcy5fY29tcG9zZXIgPSBuZXcgRWZmZWN0Q29tcG9zZXIodGhpcy5fcmVuZGVyZXIpO1xyXG4gICAgdGhpcy5fcmVuZGVyUGFzcyA9IG5ldyBSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9yZW5kZXJQYXNzKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYW9FbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX244YW9QYXNzID0gbmV3IE44QU9QYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpO1xyXG4gICAgICB0aGlzLl9hcHBseUFvUHJvcHMoKTtcclxuICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9uOGFvUGFzcyk7XHJcbiAgICAgIGlmICh0aGlzLmFhRW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX3NtYWFQYXNzID0gbmV3IFNNQUFQYXNzKCk7XHJcbiAgICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9zbWFhUGFzcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmFhRW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzID0gbmV3IFNTQUFSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzLnNhbXBsZUxldmVsID0gdGhpcy5fYWFPcHRpb25zLnNhbXBsZUxldmVsO1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzLnVuYmlhc2VkID0gdGhpcy5fYWFPcHRpb25zLnVuYmlhc2VkO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3ModGhpcy5fc3NhYVBhc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MgPSBuZXcgT3V0bGluZVBhc3MobmV3IFZlY3RvcjIodGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCksIHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgdGhpcy5fc2V0U2VsZWN0aW9uR2xvd1NldHRpbmdzKCk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHRoaXMuX291dGxpbmVQYXNzKTtcclxuXHJcbiAgICBpZiAodGhpcy52aWduZXR0ZUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fdmlnbmV0dGVQYXNzID0gbmV3IFNoYWRlclBhc3MoVmlnbmV0dGVTaGFkZXIpO1xyXG4gICAgICB0aGlzLl92aWduZXR0ZVBhc3MudW5pZm9ybXMub2Zmc2V0LnZhbHVlID0gdGhpcy5fdmlnbmV0dGVPcHRpb25zLnZpZ25ldHRlT2Zmc2V0O1xyXG4gICAgICB0aGlzLl92aWduZXR0ZVBhc3MudW5pZm9ybXMuZGFya25lc3MudmFsdWUgPSB0aGlzLl92aWduZXR0ZU9wdGlvbnMudmlnbmV0dGVEYXJrbmVzcztcclxuICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl92aWduZXR0ZVBhc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX291dHB1dFBhc3MgPSBuZXcgT3V0cHV0UGFzcygpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9vdXRwdXRQYXNzKTtcclxuXHJcbiAgICB0aGlzLnNldFNpemUodGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW5VcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9jb21wb3Nlci5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fcmVuZGVyUGFzcykge1xyXG4gICAgICB0aGlzLl9yZW5kZXJQYXNzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9uOGFvUGFzcykge1xyXG4gICAgICB0aGlzLl9uOGFvUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZnhhYVBhc3MpIHtcclxuICAgICAgdGhpcy5fZnhhYVBhc3MuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NtYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NtYWFQYXNzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zc2FhUGFzcykge1xyXG4gICAgICB0aGlzLl9zc2FhUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fdmlnbmV0dGVQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3ZpZ25ldHRlUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3MpIHtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3MuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYXBwbHlBb1Byb3BzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5hb1JhZGl1cyA9IHRoaXMuX2FvT3B0aW9ucy5hb1JhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGlzdGFuY2VGYWxsb2ZmID0gdGhpcy5fYW9PcHRpb25zLmRpc3RhbmNlRmFsbG9mZjtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24udHJhbnNwYXJlbmN5QXdhcmUgPSB0aGlzLl9hb09wdGlvbnMudHJhbnNwYXJlbmN5QXdhcmU7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmludGVuc2l0eSA9IHRoaXMuX2FvT3B0aW9ucy5pbnRlbnNpdHk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmFvU2FtcGxlcyA9IHRoaXMuX2FvT3B0aW9ucy5hb1NhbXBsZXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmRlbm9pc2VSYWRpdXMgPSB0aGlzLl9hb09wdGlvbnMuZGVub2lzZVJhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVub2lzZVNhbXBsZXMgPSB0aGlzLl9hb09wdGlvbnMuZGVub2lzZVNhbXBsZXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnN0ZW5jaWwgPSB0aGlzLl9hb09wdGlvbnMuc3RlbmNpbDtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24ucmVuZGVyTW9kZSA9IFsnQ29tYmluZWQnLCAnQU8nLCAnTm8gQU8nLCAnU3BsaXQnLCAnU3BsaXQgQU8nXS5pbmRleE9mKHRoaXMuX2FvT3B0aW9ucy5yZW5kZXJNb2RlKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uY29sb3IgPSBuZXcgQ29sb3IoYCMke3RoaXMuX2FvT3B0aW9ucy5jb2xvcn1gKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uc2NyZWVuU3BhY2VSYWRpdXMgPSB0aGlzLl9hb09wdGlvbnMuc2NyZWVuU3BhY2VSYWRpdXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmhhbGZSZXMgPSB0aGlzLl9hb09wdGlvbnMuaGFsZlJlcztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVwdGhBd2FyZVVwc2FtcGxpbmcgPSB0aGlzLl9hb09wdGlvbnMuZGVwdGhBd2FyZVVwc2FtcGxpbmc7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmNvbG9yTXVsdGlwbHkgPSB0aGlzLl9hb09wdGlvbnMuY29sb3JNdWx0aXBseTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uYWNjdW11bGF0ZSA9IHRoaXMuX2FvT3B0aW9ucy5hY2N1bXVsYXRlO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5nYW1tYUNvcnJlY3Rpb24gPSB0aGlzLl9hb09wdGlvbnMuZ2FtbWFDb3JyZWN0aW9uO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUd1aVRhYVBhc3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbSA9IHtUQUFFbmFibGVkOiAnMScsIFRBQVNhbXBsZUxldmVsOiAwfTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZChwYXJhbSwgJ1RBQUVuYWJsZWQnLCB7XHJcbiAgICAgICdEaXNhYmxlZCc6ICcwJyxcclxuICAgICAgJ0VuYWJsZWQnOiAnMSdcclxuICAgIH0pLm9uRmluaXNoQ2hhbmdlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX3RhYVJlbmRlclBhc3MpIHtcclxuICAgICAgICB0aGlzLl90YWFSZW5kZXJQYXNzLmVuYWJsZWQgPSAocGFyYW0uVEFBRW5hYmxlZCA9PT0gJzEnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHBhcmFtLCAnVEFBU2FtcGxlTGV2ZWwnLCB7XHJcbiAgICAgICdMZXZlbCAwOiAxIFNhbXBsZSc6IDAsXHJcbiAgICAgICdMZXZlbCAxOiAyIFNhbXBsZXMnOiAxLFxyXG4gICAgICAnTGV2ZWwgMjogNCBTYW1wbGVzJzogMixcclxuICAgICAgJ0xldmVsIDM6IDggU2FtcGxlcyc6IDMsXHJcbiAgICAgICdMZXZlbCA0OiAxNiBTYW1wbGVzJzogNCxcclxuICAgICAgJ0xldmVsIDU6IDMyIFNhbXBsZXMnOiA1XHJcbiAgICB9KS5vbkZpbmlzaENoYW5nZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl90YWFSZW5kZXJQYXNzKSB7XHJcbiAgICAgICAgdGhpcy5fdGFhUmVuZGVyUGFzcy5zYW1wbGVMZXZlbCA9IHBhcmFtLlRBQVNhbXBsZUxldmVsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dIaWRlR3VpKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHNob3cgPyB0aGlzLnNob3dHdWkoKSA6IHRoaXMuaGlkZUd1aSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlR3VpKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2FvU2FtcGxlcycsIDEuMCwgNjQuMCwgMS4wKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZGVub2lzZVNhbXBsZXMnLCAxLjAsIDY0LjAsIDEuMCkub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2Rlbm9pc2VSYWRpdXMnLCAwLjAsIDI0LjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIGNvbnN0IGFvciA9IHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdhb1JhZGl1cycsIDEuMCwgMTAuMCwgMC4wMSkub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgY29uc3QgZGYgPSB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZGlzdGFuY2VGYWxsb2ZmJywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnc2NyZWVuU3BhY2VSYWRpdXMnKS5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fYW9PcHRpb25zLmFvUmFkaXVzID0gNDguMDtcclxuICAgICAgICB0aGlzLl9hb09wdGlvbnMuZGlzdGFuY2VGYWxsb2ZmID0gMC4yO1xyXG4gICAgICAgIGFvci5fbWluID0gMDtcclxuICAgICAgICBhb3IuX21heCA9IDY0O1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2FvT3B0aW9ucy5hb1JhZGl1cyA9IDUuMDtcclxuICAgICAgICB0aGlzLl9hb09wdGlvbnMuZGlzdGFuY2VGYWxsb2ZmID0gMS4wO1xyXG4gICAgICAgIGFvci5fbWluID0gMTtcclxuICAgICAgICBhb3IuX21heCA9IDEwO1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxMDtcclxuICAgICAgfVxyXG4gICAgICBhb3IudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgICBkZi51cGRhdGVEaXNwbGF5KCk7XHJcbiAgICAgIHRoaXMuX2FwcGx5QW9Qcm9wcygpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibGVuZFNoYWRlclBhcmFtcyA9IHtcclxuICAgICAgbWl4UmF0aW86IDAuNVxyXG4gICAgfTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdoYWxmUmVzJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3RyYW5zcGFyZW5jeUF3YXJlJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2RlcHRoQXdhcmVVcHNhbXBsaW5nJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3N0ZW5jaWwnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnaW50ZW5zaXR5JywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGRDb2xvcih0aGlzLl9hb09wdGlvbnMsICdjb2xvcicpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdjb2xvck11bHRpcGx5Jykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2FjY3VtdWxhdGUnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZ2FtbWFDb3JyZWN0aW9uJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3JlbmRlck1vZGUnLCBbJ0NvbWJpbmVkJywgJ0FPJywgJ05vIEFPJywgJ1NwbGl0JywgJ1NwbGl0IEFPJ10pLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZChibGVuZFNoYWRlclBhcmFtcywgJ21peFJhdGlvJywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2JsZW5kU2hhZGVyLnVuaWZvcm1zLm1peFJhdGlvLnZhbHVlID0gYmxlbmRTaGFkZXJQYXJhbXMubWl4UmF0aW87XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEVycm9yR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDQ7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDE7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlVGhpY2tuZXNzID0gMTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnB1bHNlUGVyaW9kID0gMS41O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDI7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDAuNTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VUaGlja25lc3MgPSAxLjU7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5wdWxzZVBlcmlvZCA9IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ProductConfiguratorService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.showChange = new EventEmitter();
|
|
6
|
-
this.answerChosen = new EventEmitter();
|
|
7
|
-
this.selectSelection = new EventEmitter();
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
ProductConfiguratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
-
ProductConfiguratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, providedIn: 'root' });
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, decorators: [{
|
|
13
|
-
type: Injectable,
|
|
14
|
-
args: [{ providedIn: 'root' }]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jb25maWd1cmF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL3Byb2R1Y3QtY29uZmlndXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXZELE1BQU0sT0FBTywwQkFBMEI7SUFGdkM7UUFHUyxlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRSxvQkFBZSxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztLQUdqRzs7d0hBTlksMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGZCxNQUFNOzRGQUVsQiwwQkFBMEI7a0JBRnRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Fuc3dlcn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hbnN3ZXInO1xyXG5pbXBvcnQge1NlbGVjdG9yU3RydWN0dXJlfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdG9yLXN0cnVjdHVyZS5ibyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0Q29uZmlndXJhdG9yU2VydmljZSB7XHJcbiAgcHVibGljIHNob3dDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgYW5zd2VyQ2hvc2VuOiBFdmVudEVtaXR0ZXI8QW5zd2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8QW5zd2VyPigpO1xyXG4gIHB1YmxpYyBzZWxlY3RTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxTZWxlY3RvclN0cnVjdHVyZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdG9yU3RydWN0dXJlPigpO1xyXG5cclxuXHJcbn1cclxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ProgressService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this._progressPercent = 0;
|
|
6
|
-
}
|
|
7
|
-
get progress() {
|
|
8
|
-
return this._progressPercent;
|
|
9
|
-
}
|
|
10
|
-
set progress(value) {
|
|
11
|
-
this._progressPercent = value;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
ProgressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
|
-
ProgressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, providedIn: 'root' });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, decorators: [{
|
|
17
|
-
type: Injectable,
|
|
18
|
-
args: [{ providedIn: 'root' }]
|
|
19
|
-
}], ctorParameters: function () { return []; } });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL3Byb2dyZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGVBQWU7SUFXMUI7UUFWUSxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7SUFXckMsQ0FBQztJQVRELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7OzZHQVRVLGVBQWU7aUhBQWYsZUFBZSxjQURILE1BQU07NEZBQ2xCLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9wcm9ncmVzc1BlcmNlbnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzc1BlcmNlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHByb2dyZXNzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3Byb2dyZXNzUGVyY2VudCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|