@colijnit/homedecorator 255.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_variables.scss +1 -0
- package/app/app.component.scss +30 -0
- package/app/app.version.d.ts +5 -0
- package/app/bundle/threedselector-bundle/threedselector-bundle.component.scss +24 -0
- package/app/bundle/threedselector-bundle/threedselector-selections-bundle.component.scss +4 -0
- package/app/core/components/debug/debug.component.d.ts +17 -0
- package/app/core/components/debug/debug.component.scss +27 -0
- package/app/core/components/error/error-message.component.d.ts +14 -0
- package/app/core/components/error/error-message.component.scss +18 -0
- package/app/core/components/tooltip/tooltip.component.d.ts +17 -0
- package/app/core/components/tooltip/tooltip.component.scss +34 -0
- package/app/core/const/dimensioning.d.ts +24 -0
- package/app/core/core.module.d.ts +27 -0
- package/app/core/directive/autofocus.directive.d.ts +11 -0
- package/app/core/directive/tooltip.directive.d.ts +21 -0
- package/app/core/directive/visibility-observer-master.directive.d.ts +12 -0
- package/app/core/directive/visibility-observer.directive.d.ts +16 -0
- package/app/core/enum/configuration-key.enum.d.ts +35 -0
- package/app/core/enum/export-type.enum.d.ts +5 -0
- package/app/core/enum/google-tag-manager-event.enum.d.ts +12 -0
- package/app/core/enum/icon-name.enum.d.ts +15 -0
- package/app/core/enum/icon.enum.d.ts +33 -0
- package/app/core/enum/light.enum.d.ts +7 -0
- package/app/core/enum/message-type.enum.d.ts +69 -0
- package/app/core/enum/model-type.enum.d.ts +6 -0
- package/app/core/enum/output-encoding.enum.d.ts +4 -0
- package/app/core/enum/shadow-map-type.enum.d.ts +6 -0
- package/app/core/enum/user-role-type.enum.d.ts +18 -0
- package/app/core/enum/view-mode.enum.d.ts +9 -0
- package/app/core/enum/xr-mode.enum.d.ts +4 -0
- package/app/core/interface/adjustable-element.interface.d.ts +5 -0
- package/app/core/interface/category.interface.d.ts +9 -0
- package/app/core/interface/changes.interface.d.ts +9 -0
- package/app/core/interface/child-params.interface.d.ts +3 -0
- package/app/core/interface/configuration-data.interface.d.ts +36 -0
- package/app/core/interface/external-settings.interface.d.ts +6 -0
- package/app/core/interface/info-dialog-data.interface.d.ts +4 -0
- package/app/core/interface/light-preset.interface.d.ts +18 -0
- package/app/core/interface/loading-overlay-data.interface.d.ts +4 -0
- package/app/core/interface/media-resource.interface.d.ts +6 -0
- package/app/core/interface/message-with-payload.interface.d.ts +81 -0
- package/app/core/interface/message-without-payload.interface.d.ts +35 -0
- package/app/core/interface/preset.interface.d.ts +8 -0
- package/app/core/interface/selected-floor-event.interface.d.ts +5 -0
- package/app/core/interface/selected-wall-event.interface.d.ts +6 -0
- package/app/core/interface/texture.interface.d.ts +37 -0
- package/app/core/interface/toolbar-icon.interface.d.ts +8 -0
- package/app/core/model/ar-position-indicator.d.ts +4 -0
- package/app/core/model/camera-settings.d.ts +12 -0
- package/app/core/model/category.d.ts +12 -0
- package/app/core/model/custom-button.d.ts +10 -0
- package/app/core/model/error-message.d.ts +8 -0
- package/app/core/model/export-object.d.ts +5 -0
- package/app/core/model/from-intersection-observer.d.ts +7 -0
- package/app/core/model/homedecorator-settings-options.d.ts +46 -0
- package/app/core/model/homedecorator-settings.d.ts +54 -0
- package/app/core/model/icon.d.ts +4 -0
- package/app/core/model/light-preset.d.ts +27 -0
- package/app/core/model/light-properties.d.ts +25 -0
- package/app/core/model/media-resource.d.ts +7 -0
- package/app/core/model/preset.d.ts +10 -0
- package/app/core/model/ral-color.d.ts +19 -0
- package/app/core/model/shadow-properties.d.ts +7 -0
- package/app/core/model/texture-type.d.ts +6 -0
- package/app/core/model/texture.d.ts +43 -0
- package/app/core/model/three-object.d.ts +1 -0
- package/app/core/model/toast-type.d.ts +5 -0
- package/app/core/model/toast.d.ts +5 -0
- package/app/core/model/xr-reticle.d.ts +17 -0
- package/app/core/pipe/append.pipe.d.ts +7 -0
- package/app/core/pipe/cm-to-measure.pipe.d.ts +10 -0
- package/app/core/pipe/filter.pipe.d.ts +7 -0
- package/app/core/pipe/keys.pipe.d.ts +7 -0
- package/app/core/pipe/localize.pipe.d.ts +10 -0
- package/app/core/pipe/m-to-measure.pipe.d.ts +10 -0
- package/app/core/pipe/prepend.pipe.d.ts +7 -0
- package/app/core/pipe/scm-to-measure.pipe.d.ts +10 -0
- package/app/core/pipe/sm-to-measure.pipe.d.ts +10 -0
- package/app/core/pipe/strip-html.pipe.d.ts +7 -0
- package/app/core/service/3dm-api.d.ts +65 -0
- package/app/core/service/app-state.service.d.ts +49 -0
- package/app/core/service/configuration.service.d.ts +15 -0
- package/app/core/service/debug.service.d.ts +16 -0
- package/app/core/service/dimensioning.service.d.ts +14 -0
- package/app/core/service/dynamic-camera.service.d.ts +23 -0
- package/app/core/service/environment.service.d.ts +8 -0
- package/app/core/service/error.service.d.ts +11 -0
- package/app/core/service/export.service.d.ts +18 -0
- package/app/core/service/file.service.d.ts +9 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +23 -0
- package/app/core/service/homedecorator-app.service.d.ts +58 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +90 -0
- package/app/core/service/homedecorator-connector.service.d.ts +127 -0
- package/app/core/service/homedecorator-dictionary.service.d.ts +15 -0
- package/app/core/service/homedecorator-icon-cache.service.d.ts +21 -0
- package/app/core/service/homedecorator-settings.service.d.ts +23 -0
- package/app/core/service/homedecorator.service.d.ts +14 -0
- package/app/core/service/integration.service.d.ts +16 -0
- package/app/core/service/item-serialization.service.d.ts +78 -0
- package/app/core/service/json-utils.service.d.ts +7 -0
- package/app/core/service/message-bus.service.d.ts +21 -0
- package/app/core/service/permanent-store.service.d.ts +37 -0
- package/app/core/service/presets.service.d.ts +50 -0
- package/app/core/service/progress.service.d.ts +17 -0
- package/app/core/service/ral.service.d.ts +17 -0
- package/app/core/service/skip-button-info.service.d.ts +19 -0
- package/app/core/service/toast.service.d.ts +12 -0
- package/app/core/service/utils.service.d.ts +68 -0
- package/app/core/service/view-mode.service.d.ts +27 -0
- package/app/core/service/web-worker.service.d.ts +18 -0
- package/app/core/utils/clone-utils.d.ts +5 -0
- package/app/core/utils/color.utils.d.ts +7 -0
- package/app/core/utils/file.utils.d.ts +36 -0
- package/app/core/utils/function/is-empty.function.d.ts +1 -0
- package/app/core/utils/function/is-nill.function.d.ts +1 -0
- package/app/core/utils/material.utils.d.ts +33 -0
- package/app/core/utils/object.utils.d.ts +14 -0
- package/app/core/utils/relative-position.utils.d.ts +12 -0
- package/app/core/utils/variation-utils.d.ts +12 -0
- package/app/core/workers/enum/web-worker-message.enum.d.ts +4 -0
- package/app/core/workers/enum/web-worker-type.enum.d.ts +3 -0
- package/app/development/components/selected-child-material-texture.component.d.ts +58 -0
- package/app/development/components/selected-child-material-texture.component.scss +122 -0
- package/app/development/components/selected-child-material.component.d.ts +73 -0
- package/app/development/components/selected-child-material.component.scss +45 -0
- package/app/development/components/selected-child.component.d.ts +8 -0
- package/app/development/components/selected-child.component.scss +40 -0
- package/app/development/components/selected-object-base.d.ts +32 -0
- package/app/development/components/selected-object.component.d.ts +20 -0
- package/app/development/components/selected-object.component.scss +13 -0
- package/app/development/development.module.d.ts +19 -0
- package/app/development/directive/development.directive.d.ts +19 -0
- package/app/development/service/development.service.d.ts +49 -0
- package/app/homedecorator.component.d.ts +42 -0
- package/app/homedecorator.component.scss +34 -0
- package/app/homedecorator.module.d.ts +18 -0
- package/app/plugins/core3d/collision-manager/collision-manager.service.d.ts +23 -0
- package/app/plugins/core3d/collision-manager/floorplan-collision-detection.d.ts +9 -0
- package/app/plugins/core3d/collision-manager/snapping-collision.service.d.ts +47 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.d.ts +17 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.scss +30 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.d.ts +25 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.scss +13 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.d.ts +21 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.scss +6 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.d.ts +11 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.scss +19 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.d.ts +16 -0
- package/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.scss +23 -0
- package/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.d.ts +46 -0
- package/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.scss +93 -0
- package/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.d.ts +24 -0
- package/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.scss +93 -0
- package/app/plugins/core3d/components/lightplan/lightplan.component.d.ts +60 -0
- package/app/plugins/core3d/components/lightplan/lightplan.component.scss +102 -0
- package/app/plugins/core3d/components/scene-options/scene-options.component.d.ts +17 -0
- package/app/plugins/core3d/components/scene-options/scene-options.component.scss +54 -0
- package/app/plugins/core3d/core/angles.d.ts +8 -0
- package/app/plugins/core3d/core/corner-utils.d.ts +8 -0
- package/app/plugins/core3d/core/dimensioning.d.ts +19 -0
- package/app/plugins/core3d/core/utils.d.ts +147 -0
- package/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.d.ts +49 -0
- package/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.scss +3 -0
- package/app/plugins/core3d/core3d/core3d.component.d.ts +76 -0
- package/app/plugins/core3d/core3d/core3d.component.scss +27 -0
- package/app/plugins/core3d/core3d.module.d.ts +38 -0
- package/app/plugins/core3d/directive/scene.directive.d.ts +26 -0
- package/app/plugins/core3d/enum/ar-feature.enum.d.ts +12 -0
- package/app/plugins/core3d/enum/direction.enum.d.ts +8 -0
- package/app/plugins/core3d/enum/result-type.enum.d.ts +19 -0
- package/app/plugins/core3d/hud/bounding-measurement-box/bounding-box-measurement.d.ts +28 -0
- package/app/plugins/core3d/hud/bounding-measurement-box/box-measurement.d.ts +17 -0
- package/app/plugins/core3d/hud/bounding-measurement-box/door-or-window-box-measurement.d.ts +29 -0
- package/app/plugins/core3d/hud/bounding-measurement-box/measurable.d.ts +8 -0
- package/app/plugins/core3d/hud/bounding-measurement-box/measurement-utils.d.ts +9 -0
- package/app/plugins/core3d/hud/custom-shape-name-label.d.ts +15 -0
- package/app/plugins/core3d/hud/floor-indicator.d.ts +20 -0
- package/app/plugins/core3d/hud/furniture-measurements.d.ts +12 -0
- package/app/plugins/core3d/hud/indicator-factory.d.ts +7 -0
- package/app/plugins/core3d/hud/measurements.d.ts +46 -0
- package/app/plugins/core3d/hud/on-wall-measurements.d.ts +18 -0
- package/app/plugins/core3d/hud/opening-symbol.d.ts +11 -0
- package/app/plugins/core3d/hud/rotation-helper.d.ts +44 -0
- package/app/plugins/core3d/hud/utils.d.ts +3 -0
- package/app/plugins/core3d/interface/dragged-data.interface.d.ts +10 -0
- package/app/plugins/core3d/interface/edge-visibility-changes.d.ts +5 -0
- package/app/plugins/core3d/interface/model.interface.d.ts +42 -0
- package/app/plugins/core3d/interface/opening.interface.d.ts +6 -0
- package/app/plugins/core3d/interface/scene-option-button.interface.d.ts +17 -0
- package/app/plugins/core3d/interface/scene-update.interface.d.ts +5 -0
- package/app/plugins/core3d/items/base-item.d.ts +97 -0
- package/app/plugins/core3d/items/custom-cylinder-floor-item.d.ts +12 -0
- package/app/plugins/core3d/items/custom-cylinder-wall-item.d.ts +13 -0
- package/app/plugins/core3d/items/custom-floor-item.d.ts +9 -0
- package/app/plugins/core3d/items/custom-objects.d.ts +55 -0
- package/app/plugins/core3d/items/custom-shape-floor-item.d.ts +9 -0
- package/app/plugins/core3d/items/custom-shape-wall-item.d.ts +10 -0
- package/app/plugins/core3d/items/custom-wall-floor-item.d.ts +19 -0
- package/app/plugins/core3d/items/custom-wall-item.d.ts +9 -0
- package/app/plugins/core3d/items/factory.d.ts +24 -0
- package/app/plugins/core3d/items/floor-item.d.ts +13 -0
- package/app/plugins/core3d/items/floor-pin.d.ts +11 -0
- package/app/plugins/core3d/items/floor-plane-item.d.ts +30 -0
- package/app/plugins/core3d/items/furniture.d.ts +3 -0
- package/app/plugins/core3d/items/in-wall-floor-item.d.ts +9 -0
- package/app/plugins/core3d/items/item-group.d.ts +51 -0
- package/app/plugins/core3d/items/item-type.d.ts +21 -0
- package/app/plugins/core3d/items/item.d.ts +84 -0
- package/app/plugins/core3d/items/metadata.d.ts +74 -0
- package/app/plugins/core3d/items/on-floor-item.d.ts +8 -0
- package/app/plugins/core3d/items/pin.d.ts +5 -0
- package/app/plugins/core3d/items/three-mesh.d.ts +8 -0
- package/app/plugins/core3d/items/wall-floor-item.d.ts +8 -0
- package/app/plugins/core3d/items/wall-objects.d.ts +512 -0
- package/app/plugins/core3d/items/wall-pin.d.ts +8 -0
- package/app/plugins/core3d/model/ar-parameters.d.ts +9 -0
- package/app/plugins/core3d/model/box-skin-default.d.ts +5 -0
- package/app/plugins/core3d/model/collision-info.d.ts +6 -0
- package/app/plugins/core3d/model/custom-floor-group-result.d.ts +18 -0
- package/app/plugins/core3d/model/cylinder-skin-default.d.ts +4 -0
- package/app/plugins/core3d/model/dragged-status.d.ts +18 -0
- package/app/plugins/core3d/model/face.d.ts +11 -0
- package/app/plugins/core3d/model/geometry.d.ts +11 -0
- package/app/plugins/core3d/model/scene-event.enum.d.ts +10 -0
- package/app/plugins/core3d/model/skin.d.ts +15 -0
- package/app/plugins/core3d/model/threed-model.d.ts +47 -0
- package/app/plugins/core3d/service/ar.service.d.ts +121 -0
- package/app/plugins/core3d/service/camera.service.d.ts +70 -0
- package/app/plugins/core3d/service/ceiling.service.d.ts +25 -0
- package/app/plugins/core3d/service/controls.d.ts +11 -0
- package/app/plugins/core3d/service/drag-and-drop.service.d.ts +73 -0
- package/app/plugins/core3d/service/error-glow.service.d.ts +18 -0
- package/app/plugins/core3d/service/floor.service.d.ts +43 -0
- package/app/plugins/core3d/service/font.service.d.ts +10 -0
- package/app/plugins/core3d/service/hud.service.d.ts +79 -0
- package/app/plugins/core3d/service/intersection.service.d.ts +10 -0
- package/app/plugins/core3d/service/item-group.service.d.ts +33 -0
- package/app/plugins/core3d/service/item.service.d.ts +37 -0
- package/app/plugins/core3d/service/light-presets.service.d.ts +46 -0
- package/app/plugins/core3d/service/lights.service.d.ts +38 -0
- package/app/plugins/core3d/service/message-board.service.d.ts +18 -0
- package/app/plugins/core3d/service/models.service.d.ts +37 -0
- package/app/plugins/core3d/service/outline.service.d.ts +40 -0
- package/app/plugins/core3d/service/rotation.service.d.ts +57 -0
- package/app/plugins/core3d/service/scene-event.service.d.ts +131 -0
- package/app/plugins/core3d/service/scene-options.service.d.ts +11 -0
- package/app/plugins/core3d/service/scene.service.d.ts +74 -0
- package/app/plugins/core3d/service/vr.service.d.ts +44 -0
- package/app/plugins/core3d/service/wall-measurements.service.d.ts +23 -0
- package/app/plugins/core3d/service/xr.service.d.ts +56 -0
- package/app/plugins/core3d/textures/DepthDataTexture.d.ts +5 -0
- package/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.d.ts +19 -0
- package/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.scss +7 -0
- package/app/plugins/furniture-manager/furniture-library/furniture-library.component.d.ts +27 -0
- package/app/plugins/furniture-manager/furniture-library/furniture-library.component.scss +20 -0
- package/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.d.ts +91 -0
- package/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.scss +57 -0
- package/app/plugins/furniture-manager/furniture-manager.module.d.ts +23 -0
- package/app/plugins/help/help/help.component.d.ts +21 -0
- package/app/plugins/help/help/help.component.scss +0 -0
- package/app/plugins/help/help-dialog/help-dialog.component.d.ts +20 -0
- package/app/plugins/help/help-dialog/help-dialog.component.scss +28 -0
- package/app/plugins/help/help.module.d.ts +12 -0
- package/app/plugins/lite-selector/lite-selector/component/animation/animation.component.d.ts +19 -0
- package/app/plugins/lite-selector/lite-selector/component/animation/animation.component.scss +0 -0
- package/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.d.ts +41 -0
- package/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.scss +25 -0
- package/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.d.ts +72 -0
- package/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.scss +146 -0
- package/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.d.ts +19 -0
- package/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.scss +37 -0
- package/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.d.ts +28 -0
- package/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.scss +127 -0
- package/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.d.ts +9 -0
- package/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.scss +47 -0
- package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.d.ts +31 -0
- package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.scss +11 -0
- package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.d.ts +38 -0
- package/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.scss +80 -0
- package/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.d.ts +8 -0
- package/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.scss +10 -0
- package/app/plugins/lite-selector/lite-selector/lite-selector.component.d.ts +40 -0
- package/app/plugins/lite-selector/lite-selector/lite-selector.component.scss +10 -0
- package/app/plugins/lite-selector/lite-selector/service/customizer.service.d.ts +44 -0
- package/app/plugins/lite-selector/lite-selector.module.d.ts +22 -0
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +57 -0
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +75 -0
- package/app/plugins/model-uploader/model-uploader/model-upload.component.scss +34 -0
- package/app/plugins/model-uploader/model-uploader/model-uploader.component.d.ts +23 -0
- package/app/plugins/model-uploader/model-uploader.module.d.ts +16 -0
- package/app/plugins/plugin-interface.d.ts +5 -0
- package/app/plugins/plugins.module.d.ts +15 -0
- package/app/plugins/presets/presets/presets.component.d.ts +22 -0
- package/app/plugins/presets/presets/presets.component.scss +0 -0
- package/app/plugins/presets/presets.module.d.ts +10 -0
- package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.d.ts +19 -0
- package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.scss +4 -0
- package/app/plugins/product-catalog/own-collection-catalog/product-own-collection.module.d.ts +10 -0
- package/app/plugins/product-catalog/product-catalog/product-catalog.component.d.ts +70 -0
- package/app/plugins/product-catalog/product-catalog/product-catalog.component.scss +128 -0
- package/app/plugins/product-catalog/product-catalog.module.d.ts +16 -0
- package/app/plugins/render/enum/connection-status.d.ts +6 -0
- package/app/plugins/render/enum/render-modes.d.ts +5 -0
- package/app/plugins/render/enum/render-status.d.ts +7 -0
- package/app/plugins/render/model/camera-position.d.ts +7 -0
- package/app/plugins/render/model/image-size.d.ts +6 -0
- package/app/plugins/render/model/lightning.d.ts +5 -0
- package/app/plugins/render/model/render-data.d.ts +15 -0
- package/app/plugins/render/model/render-environment.d.ts +6 -0
- package/app/plugins/render/model/render-parameters.d.ts +15 -0
- package/app/plugins/render/model/render-queue-item.d.ts +14 -0
- package/app/plugins/render/model/render-settings.d.ts +9 -0
- package/app/plugins/render/model/render.d.ts +14 -0
- package/app/plugins/render/render-controls/render-controls.component.d.ts +27 -0
- package/app/plugins/render/render-controls/render-controls.component.scss +51 -0
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +59 -0
- package/app/plugins/render/render-dialog/render-dialog.component.scss +320 -0
- package/app/plugins/render/render.module.d.ts +20 -0
- package/app/plugins/render/service/new-render.service.d.ts +65 -0
- package/app/plugins/render/service/render.service.d.ts +104 -0
- package/app/plugins/room-planner/components/appearance-section/appearance-section.component.d.ts +43 -0
- package/app/plugins/room-planner/components/appearance-section/appearance-section.component.scss +14 -0
- package/app/plugins/room-planner/components/color-picker/color-picker.component.d.ts +11 -0
- package/app/plugins/room-planner/components/color-picker/color-picker.component.scss +0 -0
- package/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.d.ts +49 -0
- package/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.scss +19 -0
- package/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.d.ts +49 -0
- package/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.scss +24 -0
- package/app/plugins/room-planner/components/dimension-input/dimension-input.component.d.ts +22 -0
- package/app/plugins/room-planner/components/dimension-input/dimension-input.component.scss +14 -0
- package/app/plugins/room-planner/components/edit-apply/edit-apply.component.d.ts +19 -0
- package/app/plugins/room-planner/components/edit-apply/edit-apply.component.scss +0 -0
- package/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.d.ts +28 -0
- package/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.scss +23 -0
- package/app/plugins/room-planner/components/file-drop/file-drop.component.d.ts +21 -0
- package/app/plugins/room-planner/components/file-drop/file-drop.component.scss +31 -0
- package/app/plugins/room-planner/components/floorplanner/const/defaults.d.ts +48 -0
- package/app/plugins/room-planner/components/floorplanner/floorplanner-mode.d.ts +9 -0
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +172 -0
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.scss +48 -0
- package/app/plugins/room-planner/components/floorplanner/service/floorplan.service.d.ts +103 -0
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +75 -0
- package/app/plugins/room-planner/components/floorplanner/snap-indicator-mode.d.ts +5 -0
- package/app/plugins/room-planner/components/floorplanner/utils/context.utils.d.ts +5 -0
- package/app/plugins/room-planner/components/object-library/object-library.component.d.ts +23 -0
- package/app/plugins/room-planner/components/object-library/object-library.component.scss +43 -0
- package/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.d.ts +22 -0
- package/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.scss +55 -0
- package/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.d.ts +11 -0
- package/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.scss +10 -0
- package/app/plugins/room-planner/components/selected-floor/selected-floor.component.d.ts +16 -0
- package/app/plugins/room-planner/components/selected-floor/selected-floor.component.scss +16 -0
- package/app/plugins/room-planner/components/selected-object/selected-object.component.d.ts +44 -0
- package/app/plugins/room-planner/components/selected-object/selected-object.component.scss +21 -0
- package/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.d.ts +57 -0
- package/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.scss +35 -0
- package/app/plugins/room-planner/components/selected-wall/selected-wall.component.d.ts +45 -0
- package/app/plugins/room-planner/components/selected-wall/selected-wall.component.scss +31 -0
- package/app/plugins/room-planner/components/settings/settings-options.component.d.ts +18 -0
- package/app/plugins/room-planner/components/settings/settings-options.component.scss +46 -0
- package/app/plugins/room-planner/components/settings/settings.component.d.ts +63 -0
- package/app/plugins/room-planner/components/settings/settings.component.scss +42 -0
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +125 -0
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.scss +38 -0
- package/app/plugins/room-planner/components/texture-picker/texture-picker.component.d.ts +25 -0
- package/app/plugins/room-planner/components/texture-picker/texture-picker.component.scss +49 -0
- package/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.d.ts +16 -0
- package/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.scss +5 -0
- package/app/plugins/room-planner/const/key.d.ts +10 -0
- package/app/plugins/room-planner/room-planner/room-planner.component.d.ts +236 -0
- package/app/plugins/room-planner/room-planner/room-planner.component.scss +167 -0
- package/app/plugins/room-planner/room-planner.module.d.ts +59 -0
- package/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.d.ts +18 -0
- package/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.scss +7 -0
- package/app/plugins/threed-in-photo/components/upload-image/upload-image.component.d.ts +18 -0
- package/app/plugins/threed-in-photo/components/upload-image/upload-image.component.scss +7 -0
- package/app/plugins/threed-in-photo/components/view-control/view-control.component.d.ts +30 -0
- package/app/plugins/threed-in-photo/components/view-control/view-control.component.scss +40 -0
- package/app/plugins/threed-in-photo/models/model-output.d.ts +14 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-build.service.d.ts +37 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-connection.service.d.ts +8 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-control.service.d.ts +14 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-event-listeners.service.d.ts +15 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-event.service.d.ts +9 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-initializer.service.d.ts +27 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-render.service.d.ts +20 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-scene.service.d.ts +12 -0
- package/app/plugins/threed-in-photo/services/threed-in-photo-view.service.d.ts +8 -0
- package/app/plugins/threed-in-photo/threed-in-photo.module.d.ts +17 -0
- package/app/plugins/threed-in-photo/utils/utils.d.ts +6 -0
- package/app/plugins/threedselector/element-buttons/element-buttons.component.d.ts +31 -0
- package/app/plugins/threedselector/element-buttons/element-buttons.component.scss +61 -0
- package/app/plugins/threedselector/element-slider/element-slider.component.d.ts +14 -0
- package/app/plugins/threedselector/element-slider/element-slider.component.scss +47 -0
- package/app/plugins/threedselector/element-toolbar/element-toolbar.component.d.ts +26 -0
- package/app/plugins/threedselector/element-toolbar/element-toolbar.component.scss +142 -0
- package/app/plugins/threedselector/threedselector/model/furniture-connected-part-integration.d.ts +7 -0
- package/app/plugins/threedselector/threedselector/model/furniture-integration.d.ts +12 -0
- package/app/plugins/threedselector/threedselector/model/furniture-part-integration.d.ts +14 -0
- package/app/plugins/threedselector/threedselector/model/furniture-part-variation.d.ts +7 -0
- package/app/plugins/threedselector/threedselector/model/material.d.ts +41 -0
- package/app/plugins/threedselector/threedselector/model/variation-settings.d.ts +53 -0
- package/app/plugins/threedselector/threedselector/model/variation.d.ts +11 -0
- package/app/plugins/threedselector/threedselector/service/animation.service.d.ts +22 -0
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +186 -0
- package/app/plugins/threedselector/threedselector/service/dimensions.service.d.ts +33 -0
- package/app/plugins/threedselector/threedselector/service/element.service.d.ts +45 -0
- package/app/plugins/threedselector/threedselector/service/light-creation.service.d.ts +9 -0
- package/app/plugins/threedselector/threedselector/service/load-furniture.service.d.ts +74 -0
- package/app/plugins/threedselector/threedselector/service/resize.service.d.ts +13 -0
- package/app/plugins/threedselector/threedselector/service/third-party-model.service.d.ts +66 -0
- package/app/plugins/threedselector/threedselector/service/threedselector.service.d.ts +22 -0
- package/app/plugins/threedselector/threedselector/service/variation-cache.service.d.ts +23 -0
- package/app/plugins/threedselector/threedselector/service/variation.service.d.ts +23 -0
- package/app/plugins/threedselector/threedselector/threedselector.component.d.ts +188 -0
- package/app/plugins/threedselector/threedselector/threedselector.component.scss +82 -0
- package/app/plugins/threedselector/threedselector/utils/asset.utils.d.ts +19 -0
- package/app/plugins/threedselector/threedselector/utils/image.utils.d.ts +6 -0
- package/app/plugins/threedselector/threedselector/utils/json-parser.utils.d.ts +9 -0
- package/app/plugins/threedselector/threedselector/utils/scene-3d.utils.d.ts +10 -0
- package/app/plugins/threedselector/threedselector.module.d.ts +31 -0
- package/app/plugins/toolbar/download-dialog/download-dialog.component.d.ts +14 -0
- package/app/plugins/toolbar/download-dialog/download-dialog.component.scss +22 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +66 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +97 -0
- package/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.d.ts +8 -0
- package/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.scss +0 -0
- package/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.d.ts +36 -0
- package/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.scss +71 -0
- package/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.d.ts +36 -0
- package/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.scss +3 -0
- package/app/plugins/toolbar/open-dialog/open-dialog.component.d.ts +23 -0
- package/app/plugins/toolbar/open-dialog/open-dialog.component.scss +0 -0
- package/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.d.ts +34 -0
- package/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.scss +17 -0
- package/app/plugins/toolbar/save-dialog/save-dialog.component.d.ts +38 -0
- package/app/plugins/toolbar/save-dialog/save-dialog.component.scss +33 -0
- package/app/plugins/toolbar/saved-dialog/saved-dialog.component.d.ts +24 -0
- package/app/plugins/toolbar/saved-dialog/saved-dialog.component.scss +7 -0
- package/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.d.ts +9 -0
- package/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.scss +10 -0
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +101 -0
- package/app/plugins/toolbar/toolbar/toolbar.component.scss +251 -0
- package/app/plugins/toolbar/toolbar.module.d.ts +44 -0
- package/app/root/root.component.scss +0 -0
- package/app/service/dynamic-script.service.d.ts +8 -0
- package/app/service/google-tag-manager.service.d.ts +19 -0
- package/app/service/local-storage.service.d.ts +18 -0
- package/app/service/service-locator.service.d.ts +4 -0
- package/app/shared/base64-images.d.ts +4 -0
- package/app/shared/button-elevation/button-elevation.component.d.ts +40 -0
- package/app/shared/button-elevation/button-elevation.component.scss +109 -0
- package/app/shared/button-elevation/button-elevation.module.d.ts +16 -0
- package/app/shared/camera-settings-dialog/camera-settings-dialog.component.d.ts +24 -0
- package/app/shared/camera-settings-dialog/camera-settings-dialog.component.scss +30 -0
- package/app/shared/camera-settings-dialog/camera-settings-dialog.module.d.ts +16 -0
- package/app/shared/category-library/category-library.component.d.ts +10 -0
- package/app/shared/category-library/category-library.component.scss +16 -0
- package/app/shared/category-library/category-library.module.d.ts +11 -0
- package/app/shared/context-menu/context-menu.component.d.ts +12 -0
- package/app/shared/context-menu/context-menu.component.scss +25 -0
- package/app/shared/context-menu/context-menu.module.d.ts +14 -0
- package/app/shared/context-menu/item-context-menu/item-context-menu.component.d.ts +30 -0
- package/app/shared/context-menu/item-context-menu/item-context-menu.component.scss +32 -0
- package/app/shared/dialog/dialog.component.d.ts +26 -0
- package/app/shared/dialog/dialog.component.scss +25 -0
- package/app/shared/dialog/dialog.module.d.ts +12 -0
- package/app/shared/dialog/enum/dialog-type.enum.d.ts +6 -0
- package/app/shared/dialog/interface/dialog-config.interface.d.ts +7 -0
- package/app/shared/dialog/service/dialog.service.d.ts +11 -0
- package/app/shared/error-dialog/error-dialog.component.d.ts +11 -0
- package/app/shared/error-dialog/error-dialog.component.scss +0 -0
- package/app/shared/error-dialog/error-dialog.module.d.ts +10 -0
- package/app/shared/export-dialog/export-dialog.component.d.ts +11 -0
- package/app/shared/export-dialog/export-dialog.component.scss +19 -0
- package/app/shared/export-dialog/export-dialog.module.d.ts +11 -0
- package/app/shared/info-dialog/info-dialog.component.d.ts +9 -0
- package/app/shared/info-dialog/info-dialog.component.scss +15 -0
- package/app/shared/info-dialog/info-dialog.module.d.ts +12 -0
- package/app/shared/loader/hd-loader.component.d.ts +6 -0
- package/app/shared/loader/hd-loader.component.scss +44 -0
- package/app/shared/loader/hd-loader.module.d.ts +9 -0
- package/app/shared/loader/loader.component.scss +42 -0
- package/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.d.ts +8 -0
- package/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.scss +3 -0
- package/app/shared/loading-overlay/loading-overlay.component.d.ts +19 -0
- package/app/shared/loading-overlay/loading-overlay.component.scss +9 -0
- package/app/shared/loading-overlay/loading-overlay.module.d.ts +11 -0
- package/app/shared/model-dialog/model-dialog-furniture-list.component.d.ts +35 -0
- package/app/shared/model-dialog/model-dialog-furniture-list.component.scss +221 -0
- package/app/shared/model-dialog/model-dialog.component.d.ts +31 -0
- package/app/shared/model-dialog/model-dialog.component.scss +22 -0
- package/app/shared/model-dialog/model-dialog.module.d.ts +16 -0
- package/app/shared/progress-bar/progress-bar.component.d.ts +9 -0
- package/app/shared/progress-bar/progress-bar.component.scss +11 -0
- package/app/shared/progress-bar/progress-bar.module.d.ts +9 -0
- package/app/shared/register-dialog/register-dialog.component.d.ts +26 -0
- package/app/shared/register-dialog/register-dialog.component.scss +21 -0
- package/app/shared/screen-size-analysis/device-size-type.d.ts +5 -0
- package/app/shared/screen-size-analysis/navigator-type.enum.d.ts +4 -0
- package/app/shared/screen-size-analysis/screen-size-analysis.service.d.ts +27 -0
- package/app/shared/screen-size-analysis/screen-size-config.d.ts +5 -0
- package/app/shared/screen-size-analysis/screen-size-info.d.ts +10 -0
- package/app/shared/slider-input/slider-input.component.d.ts +13 -0
- package/app/shared/slider-input/slider-input.component.scss +12 -0
- package/app/shared/slider-input/slider-input.module.d.ts +13 -0
- package/app/shared/toolbar-icon/toolbar-icon.component.d.ts +12 -0
- package/app/shared/toolbar-icon/toolbar-icon.component.scss +8 -0
- package/app/shared/toolbar-icon/toolbar-icon.module.d.ts +11 -0
- package/app/shared/zoom-controls/zoom-controls.component.d.ts +16 -0
- package/app/shared/zoom-controls/zoom-controls.component.scss +0 -0
- package/app/shared/zoom-controls/zoom-controls.module.d.ts +10 -0
- package/assets/.gitkeep +0 -0
- package/assets/3d-models/pin.mtl +12 -0
- package/assets/3d-models/pin.obj +1083 -0
- package/assets/colors/ral.json +2345 -0
- package/assets/cursors/pencil.png +0 -0
- package/assets/cursors/pencil.svg +1 -0
- package/assets/fonts/helvetiker_regular.ttf +0 -0
- package/assets/fonts/helvetiker_regular.typeface.json +1 -0
- package/assets/fonts/helvetiker_regular.woff +0 -0
- package/assets/fonts/optimer_regular.typeface.json +1 -0
- package/assets/hdri/TSStudio3Point.hdr +135 -0
- package/assets/hdri/ground_MASK.jpg +0 -0
- package/assets/hdri/std_env_v2_A.hdr +0 -0
- package/assets/hdri/std_env_v2_B.hdr +0 -0
- package/assets/hdri/std_env_v2_C.hdr +0 -0
- package/assets/hdri/std_env_v2_D.hdr +0 -0
- package/assets/hdri/std_env_v2_E.hdr +46 -0
- package/assets/icons/add-button.svg +10 -0
- package/assets/icons/ar_circle.svg +7 -0
- package/assets/icons/arrow_point_down.svg +6 -0
- package/assets/icons/brush.svg +1 -0
- package/assets/icons/cart-shopping-regular.svg +1 -0
- package/assets/icons/check.svg +6 -0
- package/assets/icons/cit_powered_white.svg +92 -0
- package/assets/icons/conf_frame.svg +1 -0
- package/assets/icons/conf_plane.svg +1 -0
- package/assets/icons/cross.svg +1 -0
- package/assets/icons/cube-outline.svg +1 -0
- package/assets/icons/cube-unfolded.svg +1 -0
- package/assets/icons/delete-button.svg +16 -0
- package/assets/icons/download.svg +4 -0
- package/assets/icons/edit-button.svg +18 -0
- package/assets/icons/google-cardboard-orange.svg +1 -0
- package/assets/icons/google-cardboard.svg +1 -0
- package/assets/icons/hand-pointer.svg +1 -0
- package/assets/icons/height_adjust.svg +1 -0
- package/assets/icons/magic-wand.svg +57 -0
- package/assets/icons/magnifier.svg +12 -0
- package/assets/icons/measurements.svg +1 -0
- package/assets/icons/move-phone-ar.svg +4 -0
- package/assets/icons/qrcode.svg +1 -0
- package/assets/icons/street-view-orange.svg +5 -0
- package/assets/icons/street-view.svg +6 -0
- package/assets/icons/swap-button.svg +12 -0
- package/assets/icons/tilt-phone.svg +29 -0
- package/assets/icons/triangle_down.svg +1 -0
- package/assets/icons/triangle_up.svg +1 -0
- package/assets/images/colijn-logo.webp +0 -0
- package/assets/images/favicon.ico +0 -0
- package/assets/images/favicon.png +0 -0
- package/assets/images/ione360-logo.webp +0 -0
- package/assets/images/logo.svg +35 -0
- package/assets/workers/indexedDB-web-worker.js +74 -0
- package/bundle-styles.scss +267 -0
- package/bundles/colijnit-homedecorator.umd.js +47374 -0
- package/bundles/colijnit-homedecorator.umd.js.map +1 -0
- package/colijnit-homedecorator.d.ts +5 -0
- package/environments/environment.d.ts +11 -0
- package/esm2015/app/app.version.js +9 -0
- package/esm2015/app/core/components/debug/debug.component.js +57 -0
- package/esm2015/app/core/components/error/error-message.component.js +55 -0
- package/esm2015/app/core/components/tooltip/tooltip.component.js +73 -0
- package/esm2015/app/core/const/dimensioning.js +28 -0
- package/esm2015/app/core/core.module.js +159 -0
- package/esm2015/app/core/directive/autofocus.directive.js +26 -0
- package/esm2015/app/core/directive/tooltip.directive.js +64 -0
- package/esm2015/app/core/directive/visibility-observer-master.directive.js +53 -0
- package/esm2015/app/core/directive/visibility-observer.directive.js +54 -0
- package/esm2015/app/core/enum/configuration-key.enum.js +37 -0
- package/esm2015/app/core/enum/export-type.enum.js +7 -0
- package/esm2015/app/core/enum/google-tag-manager-event.enum.js +14 -0
- package/esm2015/app/core/enum/icon-name.enum.js +17 -0
- package/esm2015/app/core/enum/icon.enum.js +35 -0
- package/esm2015/app/core/enum/light.enum.js +9 -0
- package/esm2015/app/core/enum/message-type.enum.js +71 -0
- package/esm2015/app/core/enum/model-type.enum.js +8 -0
- package/esm2015/app/core/enum/output-encoding.enum.js +6 -0
- package/esm2015/app/core/enum/shadow-map-type.enum.js +8 -0
- package/esm2015/app/core/enum/user-role-type.enum.js +22 -0
- package/esm2015/app/core/enum/view-mode.enum.js +11 -0
- package/esm2015/app/core/enum/xr-mode.enum.js +6 -0
- package/esm2015/app/core/interface/adjustable-element.interface.js +2 -0
- package/esm2015/app/core/interface/category.interface.js +2 -0
- package/esm2015/app/core/interface/changes.interface.js +2 -0
- package/esm2015/app/core/interface/child-params.interface.js +2 -0
- package/esm2015/app/core/interface/configuration-data.interface.js +2 -0
- package/esm2015/app/core/interface/external-settings.interface.js +2 -0
- package/esm2015/app/core/interface/info-dialog-data.interface.js +2 -0
- package/esm2015/app/core/interface/light-preset.interface.js +2 -0
- package/esm2015/app/core/interface/loading-overlay-data.interface.js +2 -0
- package/esm2015/app/core/interface/media-resource.interface.js +2 -0
- package/esm2015/app/core/interface/message-with-payload.interface.js +2 -0
- package/esm2015/app/core/interface/message-without-payload.interface.js +2 -0
- package/esm2015/app/core/interface/preset.interface.js +2 -0
- package/esm2015/app/core/interface/selected-floor-event.interface.js +2 -0
- package/esm2015/app/core/interface/selected-wall-event.interface.js +2 -0
- package/esm2015/app/core/interface/texture.interface.js +2 -0
- package/esm2015/app/core/interface/toolbar-icon.interface.js +2 -0
- package/esm2015/app/core/model/ar-position-indicator.js +21 -0
- package/esm2015/app/core/model/camera-settings.js +14 -0
- package/esm2015/app/core/model/category.js +15 -0
- package/esm2015/app/core/model/custom-button.js +16 -0
- package/esm2015/app/core/model/error-message.js +9 -0
- package/esm2015/app/core/model/export-object.js +3 -0
- package/esm2015/app/core/model/from-intersection-observer.js +64 -0
- package/esm2015/app/core/model/homedecorator-settings-options.js +49 -0
- package/esm2015/app/core/model/homedecorator-settings.js +22 -0
- package/esm2015/app/core/model/icon.js +34 -0
- package/esm2015/app/core/model/light-preset.js +59 -0
- package/esm2015/app/core/model/light-properties.js +45 -0
- package/esm2015/app/core/model/media-resource.js +10 -0
- package/esm2015/app/core/model/preset.js +15 -0
- package/esm2015/app/core/model/ral-color.js +2 -0
- package/esm2015/app/core/model/shadow-properties.js +10 -0
- package/esm2015/app/core/model/texture-type.js +8 -0
- package/esm2015/app/core/model/texture.js +58 -0
- package/esm2015/app/core/model/three-object.js +2 -0
- package/esm2015/app/core/model/toast-type.js +7 -0
- package/esm2015/app/core/model/toast.js +7 -0
- package/esm2015/app/core/model/xr-reticle.js +87 -0
- package/esm2015/app/core/pipe/append.pipe.js +21 -0
- package/esm2015/app/core/pipe/cm-to-measure.pipe.js +20 -0
- package/esm2015/app/core/pipe/filter.pipe.js +20 -0
- package/esm2015/app/core/pipe/keys.pipe.js +22 -0
- package/esm2015/app/core/pipe/localize.pipe.js +28 -0
- package/esm2015/app/core/pipe/m-to-measure.pipe.js +20 -0
- package/esm2015/app/core/pipe/prepend.pipe.js +21 -0
- package/esm2015/app/core/pipe/scm-to-measure.pipe.js +20 -0
- package/esm2015/app/core/pipe/sm-to-measure.pipe.js +20 -0
- package/esm2015/app/core/pipe/strip-html.pipe.js +17 -0
- package/esm2015/app/core/service/3dm-api.js +246 -0
- package/esm2015/app/core/service/app-state.service.js +128 -0
- package/esm2015/app/core/service/configuration.service.js +72 -0
- package/esm2015/app/core/service/debug.service.js +45 -0
- package/esm2015/app/core/service/dimensioning.service.js +45 -0
- package/esm2015/app/core/service/dynamic-camera.service.js +107 -0
- package/esm2015/app/core/service/environment.service.js +17 -0
- package/esm2015/app/core/service/error.service.js +30 -0
- package/esm2015/app/core/service/export.service.js +97 -0
- package/esm2015/app/core/service/file.service.js +44 -0
- package/esm2015/app/core/service/homedecorator-app-event.service.js +27 -0
- package/esm2015/app/core/service/homedecorator-app.service.js +201 -0
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +455 -0
- package/esm2015/app/core/service/homedecorator-connector.service.js +604 -0
- package/esm2015/app/core/service/homedecorator-dictionary.service.js +73 -0
- package/esm2015/app/core/service/homedecorator-icon-cache.service.js +43 -0
- package/esm2015/app/core/service/homedecorator-settings.service.js +146 -0
- package/esm2015/app/core/service/homedecorator.service.js +37 -0
- package/esm2015/app/core/service/integration.service.js +56 -0
- package/esm2015/app/core/service/item-serialization.service.js +188 -0
- package/esm2015/app/core/service/json-utils.service.js +56 -0
- package/esm2015/app/core/service/message-bus.service.js +28 -0
- package/esm2015/app/core/service/permanent-store.service.js +135 -0
- package/esm2015/app/core/service/presets.service.js +297 -0
- package/esm2015/app/core/service/progress.service.js +74 -0
- package/esm2015/app/core/service/ral.service.js +98 -0
- package/esm2015/app/core/service/skip-button-info.service.js +60 -0
- package/esm2015/app/core/service/toast.service.js +23 -0
- package/esm2015/app/core/service/utils.service.js +566 -0
- package/esm2015/app/core/service/view-mode.service.js +61 -0
- package/esm2015/app/core/service/web-worker.service.js +44 -0
- package/esm2015/app/core/utils/clone-utils.js +41 -0
- package/esm2015/app/core/utils/color.utils.js +20 -0
- package/esm2015/app/core/utils/file.utils.js +234 -0
- package/esm2015/app/core/utils/function/is-empty.function.js +5 -0
- package/esm2015/app/core/utils/function/is-nill.function.js +5 -0
- package/esm2015/app/core/utils/material.utils.js +407 -0
- package/esm2015/app/core/utils/object.utils.js +191 -0
- package/esm2015/app/core/utils/relative-position.utils.js +74 -0
- package/esm2015/app/core/utils/variation-utils.js +314 -0
- package/esm2015/app/core/workers/enum/web-worker-message.enum.js +6 -0
- package/esm2015/app/core/workers/enum/web-worker-type.enum.js +5 -0
- package/esm2015/app/development/components/selected-child-material-texture.component.js +467 -0
- package/esm2015/app/development/components/selected-child-material.component.js +863 -0
- package/esm2015/app/development/components/selected-child.component.js +64 -0
- package/esm2015/app/development/components/selected-object-base.js +127 -0
- package/esm2015/app/development/components/selected-object.component.js +98 -0
- package/esm2015/app/development/development.module.js +74 -0
- package/esm2015/app/development/directive/development.directive.js +92 -0
- package/esm2015/app/development/service/development.service.js +212 -0
- package/esm2015/app/homedecorator.component.js +285 -0
- package/esm2015/app/homedecorator.module.js +60 -0
- package/esm2015/app/plugins/core3d/collision-manager/collision-manager.service.js +119 -0
- package/esm2015/app/plugins/core3d/collision-manager/floorplan-collision-detection.js +158 -0
- package/esm2015/app/plugins/core3d/collision-manager/snapping-collision.service.js +234 -0
- package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-buttons/ar-gui-buttons.component.js +36 -0
- package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-configurator/ar-gui-configurator.component.js +49 -0
- package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-context-menu/ar-gui-context-menu.component.js +77 -0
- package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-elements/ar-gui-notifications/ar-gui-notifications.component.js +26 -0
- package/esm2015/app/plugins/core3d/components/ar-gui/ar-gui-root/ar-gui-root.component.js +46 -0
- package/esm2015/app/plugins/core3d/components/lightplan/edit-light/edit-light.component.js +197 -0
- package/esm2015/app/plugins/core3d/components/lightplan/edit-lightplan/edit-lightplan.component.js +197 -0
- package/esm2015/app/plugins/core3d/components/lightplan/lightplan.component.js +512 -0
- package/esm2015/app/plugins/core3d/components/scene-options/scene-options.component.js +88 -0
- package/esm2015/app/plugins/core3d/core/angles.js +19 -0
- package/esm2015/app/plugins/core3d/core/corner-utils.js +9 -0
- package/esm2015/app/plugins/core3d/core/dimensioning.js +79 -0
- package/esm2015/app/plugins/core3d/core/utils.js +606 -0
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +289 -0
- package/esm2015/app/plugins/core3d/core3d/core3d.component.js +243 -0
- package/esm2015/app/plugins/core3d/core3d.module.js +201 -0
- package/esm2015/app/plugins/core3d/directive/scene.directive.js +41 -0
- package/esm2015/app/plugins/core3d/enum/ar-feature.enum.js +14 -0
- package/esm2015/app/plugins/core3d/enum/direction.enum.js +10 -0
- package/esm2015/app/plugins/core3d/enum/result-type.enum.js +21 -0
- package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/bounding-box-measurement.js +99 -0
- package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/box-measurement.js +35 -0
- package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/door-or-window-box-measurement.js +95 -0
- package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/measurable.js +2 -0
- package/esm2015/app/plugins/core3d/hud/bounding-measurement-box/measurement-utils.js +22 -0
- package/esm2015/app/plugins/core3d/hud/custom-shape-name-label.js +31 -0
- package/esm2015/app/plugins/core3d/hud/floor-indicator.js +80 -0
- package/esm2015/app/plugins/core3d/hud/furniture-measurements.js +44 -0
- package/esm2015/app/plugins/core3d/hud/indicator-factory.js +49 -0
- package/esm2015/app/plugins/core3d/hud/measurements.js +165 -0
- package/esm2015/app/plugins/core3d/hud/on-wall-measurements.js +80 -0
- package/esm2015/app/plugins/core3d/hud/opening-symbol.js +74 -0
- package/esm2015/app/plugins/core3d/hud/rotation-helper.js +263 -0
- package/esm2015/app/plugins/core3d/hud/utils.js +30 -0
- package/esm2015/app/plugins/core3d/interface/dragged-data.interface.js +2 -0
- package/esm2015/app/plugins/core3d/interface/edge-visibility-changes.js +2 -0
- package/esm2015/app/plugins/core3d/interface/model.interface.js +2 -0
- package/esm2015/app/plugins/core3d/interface/opening.interface.js +2 -0
- package/esm2015/app/plugins/core3d/interface/scene-option-button.interface.js +6 -0
- package/esm2015/app/plugins/core3d/interface/scene-update.interface.js +2 -0
- package/esm2015/app/plugins/core3d/items/base-item.js +233 -0
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +41 -0
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +45 -0
- package/esm2015/app/plugins/core3d/items/custom-floor-item.js +11 -0
- package/esm2015/app/plugins/core3d/items/custom-objects.js +295 -0
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +45 -0
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +37 -0
- package/esm2015/app/plugins/core3d/items/custom-wall-floor-item.js +84 -0
- package/esm2015/app/plugins/core3d/items/custom-wall-item.js +11 -0
- package/esm2015/app/plugins/core3d/items/factory.js +130 -0
- package/esm2015/app/plugins/core3d/items/floor-item.js +29 -0
- package/esm2015/app/plugins/core3d/items/floor-pin.js +31 -0
- package/esm2015/app/plugins/core3d/items/floor-plane-item.js +95 -0
- package/esm2015/app/plugins/core3d/items/furniture.js +2 -0
- package/esm2015/app/plugins/core3d/items/in-wall-floor-item.js +14 -0
- package/esm2015/app/plugins/core3d/items/item-group.js +160 -0
- package/esm2015/app/plugins/core3d/items/item-type.js +23 -0
- package/esm2015/app/plugins/core3d/items/item.js +388 -0
- package/esm2015/app/plugins/core3d/items/metadata.js +2 -0
- package/esm2015/app/plugins/core3d/items/on-floor-item.js +10 -0
- package/esm2015/app/plugins/core3d/items/pin.js +2 -0
- package/esm2015/app/plugins/core3d/items/three-mesh.js +17 -0
- package/esm2015/app/plugins/core3d/items/wall-floor-item.js +9 -0
- package/esm2015/app/plugins/core3d/items/wall-objects.js +2381 -0
- package/esm2015/app/plugins/core3d/items/wall-pin.js +25 -0
- package/esm2015/app/plugins/core3d/model/ar-parameters.js +12 -0
- package/esm2015/app/plugins/core3d/model/box-skin-default.js +17 -0
- package/esm2015/app/plugins/core3d/model/collision-info.js +2 -0
- package/esm2015/app/plugins/core3d/model/custom-floor-group-result.js +13 -0
- package/esm2015/app/plugins/core3d/model/cylinder-skin-default.js +14 -0
- package/esm2015/app/plugins/core3d/model/dragged-status.js +51 -0
- package/esm2015/app/plugins/core3d/model/face.js +18 -0
- package/esm2015/app/plugins/core3d/model/geometry.js +52 -0
- package/esm2015/app/plugins/core3d/model/scene-event.enum.js +12 -0
- package/esm2015/app/plugins/core3d/model/skin.js +2 -0
- package/esm2015/app/plugins/core3d/model/threed-model.js +49 -0
- package/esm2015/app/plugins/core3d/service/ar.service.js +844 -0
- package/esm2015/app/plugins/core3d/service/camera.service.js +340 -0
- package/esm2015/app/plugins/core3d/service/ceiling.service.js +104 -0
- package/esm2015/app/plugins/core3d/service/controls.js +763 -0
- package/esm2015/app/plugins/core3d/service/drag-and-drop.service.js +369 -0
- package/esm2015/app/plugins/core3d/service/error-glow.service.js +131 -0
- package/esm2015/app/plugins/core3d/service/floor.service.js +229 -0
- package/esm2015/app/plugins/core3d/service/font.service.js +27 -0
- package/esm2015/app/plugins/core3d/service/hud.service.js +404 -0
- package/esm2015/app/plugins/core3d/service/intersection.service.js +55 -0
- package/esm2015/app/plugins/core3d/service/item-group.service.js +117 -0
- package/esm2015/app/plugins/core3d/service/item.service.js +205 -0
- package/esm2015/app/plugins/core3d/service/light-presets.service.js +296 -0
- package/esm2015/app/plugins/core3d/service/lights.service.js +190 -0
- package/esm2015/app/plugins/core3d/service/message-board.service.js +60 -0
- package/esm2015/app/plugins/core3d/service/models.service.js +146 -0
- package/esm2015/app/plugins/core3d/service/outline.service.js +150 -0
- package/esm2015/app/plugins/core3d/service/rotation.service.js +183 -0
- package/esm2015/app/plugins/core3d/service/scene-event.service.js +1000 -0
- package/esm2015/app/plugins/core3d/service/scene-options.service.js +24 -0
- package/esm2015/app/plugins/core3d/service/scene.service.js +351 -0
- package/esm2015/app/plugins/core3d/service/vr.service.js +198 -0
- package/esm2015/app/plugins/core3d/service/wall-measurements.service.js +79 -0
- package/esm2015/app/plugins/core3d/service/xr.service.js +397 -0
- package/esm2015/app/plugins/core3d/textures/DepthDataTexture.js +17 -0
- package/esm2015/app/plugins/core3d/walkthrough-camera-controls/walkthrough-camera-controls.component.js +54 -0
- package/esm2015/app/plugins/furniture-manager/furniture-library/furniture-library.component.js +92 -0
- package/esm2015/app/plugins/furniture-manager/furniture-manager/furniture-manager.component.js +458 -0
- package/esm2015/app/plugins/furniture-manager/furniture-manager.module.js +100 -0
- package/esm2015/app/plugins/help/help/help.component.js +71 -0
- package/esm2015/app/plugins/help/help-dialog/help-dialog.component.js +83 -0
- package/esm2015/app/plugins/help/help.module.js +35 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/animation/animation.component.js +36 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/answer-card/answer-card.component.js +187 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +417 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/color-filter/color-filter.component.js +44 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/customizer/customizer.component.js +82 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/image-zoom/image-zoom.component.js +27 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary-line.component.js +148 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/selections-summary/selections-summary.component.js +167 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/component/tag-filter/tag-filter.component.js +25 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +150 -0
- package/esm2015/app/plugins/lite-selector/lite-selector/service/customizer.service.js +222 -0
- package/esm2015/app/plugins/lite-selector/lite-selector.module.js +108 -0
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +470 -0
- package/esm2015/app/plugins/model-uploader/model-uploader/model-uploader.component.js +132 -0
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +60 -0
- package/esm2015/app/plugins/plugin-interface.js +2 -0
- package/esm2015/app/plugins/plugins.module.js +80 -0
- package/esm2015/app/plugins/presets/presets/presets.component.js +72 -0
- package/esm2015/app/plugins/presets/presets.module.js +33 -0
- package/esm2015/app/plugins/product-catalog/own-collection-catalog/product-own-collection.component.js +57 -0
- package/esm2015/app/plugins/product-catalog/own-collection-catalog/product-own-collection.module.js +34 -0
- package/esm2015/app/plugins/product-catalog/product-catalog/product-catalog.component.js +428 -0
- package/esm2015/app/plugins/product-catalog/product-catalog.module.js +61 -0
- package/esm2015/app/plugins/render/enum/connection-status.js +8 -0
- package/esm2015/app/plugins/render/enum/render-modes.js +7 -0
- package/esm2015/app/plugins/render/enum/render-status.js +9 -0
- package/esm2015/app/plugins/render/model/camera-position.js +6 -0
- package/esm2015/app/plugins/render/model/image-size.js +3 -0
- package/esm2015/app/plugins/render/model/lightning.js +3 -0
- package/esm2015/app/plugins/render/model/render-data.js +6 -0
- package/esm2015/app/plugins/render/model/render-environment.js +3 -0
- package/esm2015/app/plugins/render/model/render-parameters.js +15 -0
- package/esm2015/app/plugins/render/model/render-queue-item.js +11 -0
- package/esm2015/app/plugins/render/model/render-settings.js +12 -0
- package/esm2015/app/plugins/render/model/render.js +10 -0
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +89 -0
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +318 -0
- package/esm2015/app/plugins/render/render.module.js +85 -0
- package/esm2015/app/plugins/render/service/new-render.service.js +302 -0
- package/esm2015/app/plugins/render/service/render.service.js +650 -0
- package/esm2015/app/plugins/room-planner/components/appearance-section/appearance-section.component.js +190 -0
- package/esm2015/app/plugins/room-planner/components/color-picker/color-picker.component.js +32 -0
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +219 -0
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +257 -0
- package/esm2015/app/plugins/room-planner/components/dimension-input/dimension-input.component.js +66 -0
- package/esm2015/app/plugins/room-planner/components/edit-apply/edit-apply.component.js +57 -0
- package/esm2015/app/plugins/room-planner/components/edit-parameter/edit-parameter.component.js +79 -0
- package/esm2015/app/plugins/room-planner/components/file-drop/file-drop.component.js +107 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/const/defaults.js +57 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner-mode.js +11 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +1303 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/floorplan.service.js +536 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +330 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/snap-indicator-mode.js +7 -0
- package/esm2015/app/plugins/room-planner/components/floorplanner/utils/context.utils.js +53 -0
- package/esm2015/app/plugins/room-planner/components/object-library/object-library.component.js +63 -0
- package/esm2015/app/plugins/room-planner/components/ral-color-picker/ral-color-picker.component.js +128 -0
- package/esm2015/app/plugins/room-planner/components/rgb-color-picker/rgb-color-picker.component.js +37 -0
- package/esm2015/app/plugins/room-planner/components/selected-floor/selected-floor.component.js +36 -0
- package/esm2015/app/plugins/room-planner/components/selected-object/selected-object.component.js +203 -0
- package/esm2015/app/plugins/room-planner/components/selected-threed-object/selected-threed-object.component.js +139 -0
- package/esm2015/app/plugins/room-planner/components/selected-wall/selected-wall.component.js +102 -0
- package/esm2015/app/plugins/room-planner/components/settings/settings-options.component.js +152 -0
- package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +188 -0
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +617 -0
- package/esm2015/app/plugins/room-planner/components/texture-picker/texture-picker.component.js +74 -0
- package/esm2015/app/plugins/room-planner/components/wall-length-input/wall-length-input.component.js +48 -0
- package/esm2015/app/plugins/room-planner/const/key.js +12 -0
- package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +1681 -0
- package/esm2015/app/plugins/room-planner/room-planner.module.js +233 -0
- package/esm2015/app/plugins/threed-in-photo/components/threed-in-photo-scene/threed-in-photo-scene.component.js +43 -0
- package/esm2015/app/plugins/threed-in-photo/components/upload-image/upload-image.component.js +61 -0
- package/esm2015/app/plugins/threed-in-photo/components/view-control/view-control.component.js +164 -0
- package/esm2015/app/plugins/threed-in-photo/models/model-output.js +18 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-build.service.js +243 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-connection.service.js +50 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-control.service.js +33 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-event-listeners.service.js +36 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-event.service.js +19 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-initializer.service.js +53 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-render.service.js +61 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-scene.service.js +37 -0
- package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-view.service.js +21 -0
- package/esm2015/app/plugins/threed-in-photo/threed-in-photo.module.js +67 -0
- package/esm2015/app/plugins/threed-in-photo/utils/utils.js +21 -0
- package/esm2015/app/plugins/threedselector/element-buttons/element-buttons.component.js +95 -0
- package/esm2015/app/plugins/threedselector/element-slider/element-slider.component.js +28 -0
- package/esm2015/app/plugins/threedselector/element-toolbar/element-toolbar.component.js +80 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/furniture-connected-part-integration.js +3 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/furniture-integration.js +13 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/furniture-part-integration.js +6 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/furniture-part-variation.js +3 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/material.js +11 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/variation-settings.js +11 -0
- package/esm2015/app/plugins/threedselector/threedselector/model/variation.js +3 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/animation.service.js +65 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +1343 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/dimensions.service.js +183 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/element.service.js +373 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/light-creation.service.js +35 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/load-furniture.service.js +291 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/resize.service.js +70 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/third-party-model.service.js +156 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/threedselector.service.js +101 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/variation-cache.service.js +133 -0
- package/esm2015/app/plugins/threedselector/threedselector/service/variation.service.js +436 -0
- package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1116 -0
- package/esm2015/app/plugins/threedselector/threedselector/utils/asset.utils.js +128 -0
- package/esm2015/app/plugins/threedselector/threedselector/utils/image.utils.js +33 -0
- package/esm2015/app/plugins/threedselector/threedselector/utils/json-parser.utils.js +188 -0
- package/esm2015/app/plugins/threedselector/threedselector/utils/scene-3d.utils.js +159 -0
- package/esm2015/app/plugins/threedselector/threedselector.module.js +129 -0
- package/esm2015/app/plugins/toolbar/download-dialog/download-dialog.component.js +33 -0
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +279 -0
- package/esm2015/app/plugins/toolbar/edit-preset-dialog/edit-preset-dialog.component.js +22 -0
- package/esm2015/app/plugins/toolbar/landing-screen-modal/landing-screen-modal.component.js +123 -0
- package/esm2015/app/plugins/toolbar/load-from-cloud-dialog/load-from-cloud-dialog.component.js +140 -0
- package/esm2015/app/plugins/toolbar/open-dialog/open-dialog.component.js +83 -0
- package/esm2015/app/plugins/toolbar/pdf-crop-dialog/pdf-crop-dialog.component.js +92 -0
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +146 -0
- package/esm2015/app/plugins/toolbar/saved-dialog/saved-dialog.component.js +66 -0
- package/esm2015/app/plugins/toolbar/toolbar/limited-mode-message-component/limited-mode-message.component.js +26 -0
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +676 -0
- package/esm2015/app/plugins/toolbar/toolbar.module.js +177 -0
- package/esm2015/app/service/dynamic-script.service.js +56 -0
- package/esm2015/app/service/google-tag-manager.service.js +89 -0
- package/esm2015/app/service/local-storage.service.js +93 -0
- package/esm2015/app/service/service-locator.service.js +4 -0
- package/esm2015/app/shared/base64-images.js +6 -0
- package/esm2015/app/shared/button-elevation/button-elevation.component.js +279 -0
- package/esm2015/app/shared/button-elevation/button-elevation.module.js +60 -0
- package/esm2015/app/shared/camera-settings-dialog/camera-settings-dialog.component.js +197 -0
- package/esm2015/app/shared/camera-settings-dialog/camera-settings-dialog.module.js +58 -0
- package/esm2015/app/shared/category-library/category-library.component.js +27 -0
- package/esm2015/app/shared/category-library/category-library.module.js +39 -0
- package/esm2015/app/shared/context-menu/context-menu.component.js +35 -0
- package/esm2015/app/shared/context-menu/context-menu.module.js +49 -0
- package/esm2015/app/shared/context-menu/item-context-menu/item-context-menu.component.js +93 -0
- package/esm2015/app/shared/dialog/dialog.component.js +119 -0
- package/esm2015/app/shared/dialog/dialog.module.js +45 -0
- package/esm2015/app/shared/dialog/enum/dialog-type.enum.js +8 -0
- package/esm2015/app/shared/dialog/interface/dialog-config.interface.js +2 -0
- package/esm2015/app/shared/dialog/service/dialog.service.js +21 -0
- package/esm2015/app/shared/error-dialog/error-dialog.component.js +24 -0
- package/esm2015/app/shared/error-dialog/error-dialog.module.js +30 -0
- package/esm2015/app/shared/export-dialog/export-dialog.component.js +68 -0
- package/esm2015/app/shared/export-dialog/export-dialog.module.js +35 -0
- package/esm2015/app/shared/info-dialog/info-dialog.component.js +54 -0
- package/esm2015/app/shared/info-dialog/info-dialog.module.js +37 -0
- package/esm2015/app/shared/loader/hd-loader.component.js +24 -0
- package/esm2015/app/shared/loader/hd-loader.module.js +33 -0
- package/esm2015/app/shared/loading-overlay/dialog/loading-overlay-dialog.component.js +26 -0
- package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +55 -0
- package/esm2015/app/shared/loading-overlay/loading-overlay.module.js +42 -0
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +325 -0
- package/esm2015/app/shared/model-dialog/model-dialog.component.js +104 -0
- package/esm2015/app/shared/model-dialog/model-dialog.module.js +64 -0
- package/esm2015/app/shared/progress-bar/progress-bar.component.js +39 -0
- package/esm2015/app/shared/progress-bar/progress-bar.module.js +33 -0
- package/esm2015/app/shared/register-dialog/register-dialog.component.js +112 -0
- package/esm2015/app/shared/screen-size-analysis/device-size-type.js +7 -0
- package/esm2015/app/shared/screen-size-analysis/navigator-type.enum.js +6 -0
- package/esm2015/app/shared/screen-size-analysis/screen-size-analysis.service.js +93 -0
- package/esm2015/app/shared/screen-size-analysis/screen-size-config.js +7 -0
- package/esm2015/app/shared/screen-size-analysis/screen-size-info.js +2 -0
- package/esm2015/app/shared/slider-input/slider-input.component.js +35 -0
- package/esm2015/app/shared/slider-input/slider-input.module.js +46 -0
- package/esm2015/app/shared/toolbar-icon/toolbar-icon.component.js +95 -0
- package/esm2015/app/shared/toolbar-icon/toolbar-icon.module.js +38 -0
- package/esm2015/app/shared/zoom-controls/zoom-controls.component.js +47 -0
- package/esm2015/app/shared/zoom-controls/zoom-controls.module.js +34 -0
- package/esm2015/colijnit-homedecorator.js +5 -0
- package/esm2015/environments/environment.js +17 -0
- package/esm2015/public_api.js +4 -0
- package/fesm2015/colijnit-homedecorator.js +45086 -0
- package/fesm2015/colijnit-homedecorator.js.map +1 -0
- package/homedecorator-globals.scss +361 -0
- package/package.json +48 -0
- package/palette.scss +32 -0
- package/public_api.d.ts +3 -0
- package/styles.scss +377 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Injectable } from '@angular/core';
|
|
11
|
+
import { ArrowHelper, BoxGeometry, BufferAttribute, BufferGeometry, DoubleSide, Group, Mesh, MeshStandardMaterial, NoColorSpace, ShadowMaterial, Vector3 } from 'three';
|
|
12
|
+
import Delaunator from 'delaunator';
|
|
13
|
+
import { VertexNormalsHelper } from 'three/examples/jsm/helpers/VertexNormalsHelper';
|
|
14
|
+
import { LinearFilter } from 'three/src/constants';
|
|
15
|
+
import { ModelOutput } from '../models/model-output';
|
|
16
|
+
import { Utils } from '../utils/utils';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "./threed-in-photo-connection.service";
|
|
19
|
+
import * as i2 from "./threed-in-photo-scene.service";
|
|
20
|
+
import * as i3 from "./threed-in-photo-view.service";
|
|
21
|
+
import * as i4 from "./threed-in-photo-control.service";
|
|
22
|
+
import * as i5 from "../../core3d/service/floor.service";
|
|
23
|
+
export class ThreedInPhotoBuildService {
|
|
24
|
+
constructor(_connectionService, _sceneService, _cameraService, _controlService, _floorService) {
|
|
25
|
+
this._connectionService = _connectionService;
|
|
26
|
+
this._sceneService = _sceneService;
|
|
27
|
+
this._cameraService = _cameraService;
|
|
28
|
+
this._controlService = _controlService;
|
|
29
|
+
this._floorService = _floorService;
|
|
30
|
+
this._textureMapSize = 512;
|
|
31
|
+
this.shadowMaterial = new ShadowMaterial({ opacity: 0.4, side: DoubleSide });
|
|
32
|
+
this.visibilityMaterial = new MeshStandardMaterial({
|
|
33
|
+
color: '#' + Math.floor(Math.random() * 16777215).toString(16),
|
|
34
|
+
side: DoubleSide
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
generateScene(file) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
yield this._connectionService.requestSceneParameters(file).then(result => {
|
|
40
|
+
if (result) {
|
|
41
|
+
if (this._cachedModelOutput) {
|
|
42
|
+
this._prepareForNewImage();
|
|
43
|
+
}
|
|
44
|
+
this._cachedModelOutput = ModelOutput.ObjectToModelOutput(result);
|
|
45
|
+
this._createSceneBackground(file);
|
|
46
|
+
this._generateMeshes([this._cachedModelOutput.polygons3D.floor], file, [this._cachedModelOutput.polygons2D.floor]);
|
|
47
|
+
this._controlService.placeCustomFloorItems(this._placementMatrix);
|
|
48
|
+
this._resetCamera();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// this._cachedModelOutput = ModelOutput.ObjectToModelOutput({"layout_2d":{"ceiling":[[530.9105603992939,0.3118055760860443],[47.03086057305336,0.3118055760860443],[223.9230525791645,116.30347988009453],[448.5480583012104,105.07847914099694]],"floor":[[11.46523466706276,477.99794813990595],[558.0527485907078,477.99794813990595],[541.2058731615543,463.0312804877758],[448.5480583012104,332.0729385316372],[224.85899010300637,319.6007154881954]],"walls":[[[47.03086057305336,0.3118055760860443],[0.23398438096046449,0.3118055760860443],[0.23398438096046449,477.99794813990595],[11.46523466706276,477.99794813990595],[224.85899010300637,319.6007154881954],[223.9230525791645,116.30347988009453]],[[223.9230525791645,116.30347988009453],[224.85899010300637,319.6007154881954],[448.5480583012104,332.0729385316372],[448.5480583012104,105.07847914099694]],[[538.3980605900288,0.3118055760860443],[530.9105603992939,0.3118055760860443],[448.5480583012104,105.07847914099694],[448.5480583012104,332.0729385316372],[541.2058731615543,463.0312804877758]],[[558.0527485907078,477.99794813990595],[598.2980621159077,477.99794813990595],[598.2980621159077,0.3118055760860443],[538.3980605900288,0.3118055760860443],[541.2058731615543,463.0312804877758]]]},"layout_3d":{"ceiling":[[1.3872436768478816,-1.4127035164170796,-1.3719063348240326],[-2.752578448586994,-1.4158451580339009,-1.365247303909726],[-2.0475381129317817,-1.5404981397920186,2.456250136428409],[1.9674640185303157,-1.512902142935329,1.7001819067531159]],"floor":[[-2.798312615685993,1.48322367436356,-1.6857259816593598],[1.3594668394989436,1.4595421529478497,-1.730117852158017],[1.3432941920227473,1.4569534040159649,-1.5665455407566498],[1.949396181768841,1.4005049443907208,1.656955187850528],[-2.0389817469649849,1.4100615955061382,2.5015868597560457]],"walls":[[[-2.7499639504485664,-1.4141030334764058,-1.368939930862851],[-2.820334863000446,-1.2286291145616109,-1.762072379059262],[-2.8040821068816719,1.4321645475096173,-1.7814384049839447],[-2.7884995453887519,1.4767428613371319,-1.6978746003574799],[-2.03023905687862,1.4017025209135479,2.459818785720401],[-2.0503613465362129,-1.543531181746059,2.4695710592799715]],[[-2.0563641303115425,-1.5499800466828878,2.4978937559657625],[-2.028852772050434,1.4003771520323223,2.453195994430118],[1.947130966848797,1.399278042382664,1.6515354567103913],[1.9620111472076838,-1.509623529844814,1.6871356421046784]],[[1.3584952837891047,-1.3473986410432393,-1.5103271550602387],[1.3837347514099543,-1.4101525568299825,-1.377313429779477],[1.9666138178772395,-1.5123909735017354,1.6981477194362214],[1.963871050543255,1.4083445048994488,1.69158548646503],[1.3476056343979304,1.460146305627293,-1.5601847714847992]],[[1.3654572255081599,1.4639496780104107,-1.7218559331364106],[1.4059656149811213,1.2959241843885845,-2.036826188034482],[1.4197884089416926,-1.1067872070603902,-2.0203297681278657],[1.3577268607086604,-1.3468575500779683,-1.5114741868442963],[1.3456337935394709,1.458685991830296,-1.5630939549869965]]]}});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
_generateMeshes(coordinates3D, file, coordinates2D, createTextures = false, createHelpers = false) {
|
|
55
|
+
const meshGroup = new Group();
|
|
56
|
+
meshGroup.name = 'threed-in-photo-mesh-group';
|
|
57
|
+
coordinates3D.forEach((positionVertices, index) => {
|
|
58
|
+
const geometry = this._createGeometryAndUvs(positionVertices);
|
|
59
|
+
const polygonMesh = new Mesh(geometry, this.visibilityMaterial);
|
|
60
|
+
polygonMesh.receiveShadow = true;
|
|
61
|
+
this.floorMesh = polygonMesh;
|
|
62
|
+
this._floorService.groundPlane = this.floorMesh;
|
|
63
|
+
if (createTextures) {
|
|
64
|
+
this._createTextures(file, coordinates2D[index], polygonMesh);
|
|
65
|
+
}
|
|
66
|
+
const middle = new Vector3();
|
|
67
|
+
positionVertices.forEach((v) => {
|
|
68
|
+
middle.add(v);
|
|
69
|
+
});
|
|
70
|
+
middle.multiplyScalar(1 / positionVertices.length);
|
|
71
|
+
polygonMesh.localToWorld(middle);
|
|
72
|
+
if (createHelpers) {
|
|
73
|
+
this._createHelpers(polygonMesh, middle);
|
|
74
|
+
}
|
|
75
|
+
meshGroup.add(polygonMesh, this._createPlacementBoxTest(geometry, middle));
|
|
76
|
+
});
|
|
77
|
+
this._meshGroup = meshGroup;
|
|
78
|
+
meshGroup.scale.set(1, -1, -1);
|
|
79
|
+
this._sceneService.scene.add(meshGroup);
|
|
80
|
+
}
|
|
81
|
+
_createGeometryAndUvs(positionVertices) {
|
|
82
|
+
const geometry = new BufferGeometry().setFromPoints(positionVertices);
|
|
83
|
+
const indexDelaunay = Delaunator.from(positionVertices.map(v => [v.x, v.z]));
|
|
84
|
+
const meshIndex = [];
|
|
85
|
+
const quadUvs = [];
|
|
86
|
+
for (let i = 0; i < indexDelaunay.triangles.length; i++) {
|
|
87
|
+
meshIndex.push(indexDelaunay.triangles[i]);
|
|
88
|
+
}
|
|
89
|
+
const minX = Math.min(...positionVertices.map((n) => n.x));
|
|
90
|
+
const maxX = Math.max(...positionVertices.map((n) => n.x));
|
|
91
|
+
const minY = Math.min(...positionVertices.map((n) => n.z));
|
|
92
|
+
const maxY = Math.max(...positionVertices.map((n) => n.z));
|
|
93
|
+
for (let j = 0; j < positionVertices.length; j++) {
|
|
94
|
+
const qx = this._remapFloat(positionVertices[j].x, minX, maxX, 1, 0);
|
|
95
|
+
const qz = this._remapFloat(positionVertices[j].z, minY, maxY, 0, 1);
|
|
96
|
+
quadUvs.push(...[qx, qz]);
|
|
97
|
+
}
|
|
98
|
+
const uvs = new Float32Array(quadUvs);
|
|
99
|
+
geometry.setAttribute('uv', new BufferAttribute(uvs, 2));
|
|
100
|
+
geometry.getAttribute('uv').needsUpdate = true;
|
|
101
|
+
geometry.setIndex(meshIndex);
|
|
102
|
+
geometry.computeVertexNormals();
|
|
103
|
+
return geometry;
|
|
104
|
+
}
|
|
105
|
+
_createTextures(file, points, object) {
|
|
106
|
+
const canvas = document.createElement('canvas');
|
|
107
|
+
const ctx = canvas.getContext('2d');
|
|
108
|
+
const image = new Image();
|
|
109
|
+
const fileReader = new FileReader();
|
|
110
|
+
fileReader.onload = () => {
|
|
111
|
+
image.src = fileReader.result;
|
|
112
|
+
};
|
|
113
|
+
image.onload = () => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
canvas.width = image.width;
|
|
115
|
+
canvas.height = image.height;
|
|
116
|
+
let minX = Infinity;
|
|
117
|
+
let maxX = -Infinity;
|
|
118
|
+
let minY = Infinity;
|
|
119
|
+
let maxY = -Infinity;
|
|
120
|
+
ctx.save();
|
|
121
|
+
ctx.beginPath();
|
|
122
|
+
ctx.moveTo(points[0].x, points[0].y);
|
|
123
|
+
for (let i = 0; i < points.length; i++) {
|
|
124
|
+
minX = points[i].x < minX ? points[i].x : minX;
|
|
125
|
+
maxX = points[i].x > maxX ? points[i].x : maxX;
|
|
126
|
+
minY = points[i].y < minY ? points[i].y : minY;
|
|
127
|
+
maxY = points[i].y > maxY ? points[i].y : maxY;
|
|
128
|
+
if (i !== 0) {
|
|
129
|
+
ctx.lineTo(points[i].x, points[i].y);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
ctx.closePath();
|
|
133
|
+
ctx.clip();
|
|
134
|
+
ctx.drawImage(image, 0, 0);
|
|
135
|
+
const c = document.createElement('canvas');
|
|
136
|
+
const cx = c.getContext('2d');
|
|
137
|
+
c.width = this._textureMapSize;
|
|
138
|
+
c.height = this._textureMapSize;
|
|
139
|
+
cx.scale(this._textureMapSize / (maxX - minX), this._textureMapSize / (maxY - minY));
|
|
140
|
+
cx.drawImage(canvas, -minX, -minY);
|
|
141
|
+
const uvCoordinates = this._generateUVCoordinates(points, minX, minY, maxX - minX, maxY - minY);
|
|
142
|
+
this._setUVCoordinates(object.geometry, uvCoordinates);
|
|
143
|
+
object.material.map = yield Utils.CreateTextureFromBase64(c.toDataURL());
|
|
144
|
+
object.material.color = undefined;
|
|
145
|
+
object.material.needsUpdate = true;
|
|
146
|
+
});
|
|
147
|
+
fileReader.readAsDataURL(file);
|
|
148
|
+
}
|
|
149
|
+
_createSceneBackground(file) {
|
|
150
|
+
const fileReader = new FileReader();
|
|
151
|
+
fileReader.onload = () => __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const texture = yield Utils.CreateTextureFromBase64(fileReader.result);
|
|
153
|
+
texture.flipY = true;
|
|
154
|
+
texture.colorSpace = NoColorSpace;
|
|
155
|
+
texture.minFilter = LinearFilter;
|
|
156
|
+
texture.matrixAutoUpdate = false;
|
|
157
|
+
const sceneWidth = this._sceneService.renderer.domElement.clientWidth;
|
|
158
|
+
const sceneHeight = this._sceneService.renderer.domElement.clientHeight;
|
|
159
|
+
const imageAspect = texture.image.width / texture.image.height;
|
|
160
|
+
const sceneAspect = sceneWidth / sceneHeight;
|
|
161
|
+
if (imageAspect > sceneAspect) {
|
|
162
|
+
// Image is wider than the scene
|
|
163
|
+
texture.matrix.setUvTransform(0, 0, // Translation
|
|
164
|
+
sceneAspect / imageAspect, 1, // Scale
|
|
165
|
+
0, (1 - sceneAspect / imageAspect) / 2, // Offset
|
|
166
|
+
0.5 // Center point
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Image is taller than the scene
|
|
171
|
+
texture.matrix.setUvTransform(0, 0, // Translation
|
|
172
|
+
1, imageAspect / sceneAspect, // Scale
|
|
173
|
+
0, (1 - imageAspect / sceneAspect) / 2, // Offset
|
|
174
|
+
0.5 // Center point
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
this._sceneService.scene.background = texture;
|
|
178
|
+
this._sceneService.sceneWidth = texture.image.width;
|
|
179
|
+
this._sceneService.sceneHeight = texture.image.height;
|
|
180
|
+
});
|
|
181
|
+
fileReader.readAsDataURL(file);
|
|
182
|
+
}
|
|
183
|
+
_createHelpers(polygonMesh, middle) {
|
|
184
|
+
const n1 = Utils.GetFaceNormalFromBufferGeometry(polygonMesh.geometry, 0, 0);
|
|
185
|
+
const arrowHelper1 = new ArrowHelper(n1, middle, 1, 0xffff00);
|
|
186
|
+
const vertexHelper = new VertexNormalsHelper(polygonMesh, 2, 0x00ff00);
|
|
187
|
+
const bf = new BoxGeometry(0.3, 0.3, 0.3);
|
|
188
|
+
const ft = new MeshStandardMaterial({ color: 'blue', side: DoubleSide });
|
|
189
|
+
const f = new Mesh(bf, ft);
|
|
190
|
+
f.position.copy(middle);
|
|
191
|
+
f.lookAt(new Vector3().addVectors(middle, n1));
|
|
192
|
+
f.updateMatrix();
|
|
193
|
+
this._sceneService.scene.add(arrowHelper1, vertexHelper);
|
|
194
|
+
}
|
|
195
|
+
_createPlacementBoxTest(geometry, middle) {
|
|
196
|
+
const n1 = Utils.GetFaceNormalFromBufferGeometry(geometry, 0, 0);
|
|
197
|
+
const ad = new BoxGeometry(0.3, 0.3, 0.3);
|
|
198
|
+
const af = new MeshStandardMaterial({ color: 'blue', side: DoubleSide });
|
|
199
|
+
const ag = new Mesh(ad, af);
|
|
200
|
+
ag.position.copy(middle);
|
|
201
|
+
ag.lookAt(new Vector3().addVectors(middle, n1));
|
|
202
|
+
this._placementMatrix = ag.matrix;
|
|
203
|
+
ag.translateZ(-0.15);
|
|
204
|
+
ag.translateX(0.15);
|
|
205
|
+
ag.castShadow = true;
|
|
206
|
+
ag.visible = false;
|
|
207
|
+
return ag;
|
|
208
|
+
}
|
|
209
|
+
_setUVCoordinates(geometry, coordinates) {
|
|
210
|
+
const uvAttribute = geometry.getAttribute('uv');
|
|
211
|
+
coordinates.forEach((uvVector, index) => {
|
|
212
|
+
uvAttribute.setXY(index, uvVector.x, uvVector.y);
|
|
213
|
+
});
|
|
214
|
+
uvAttribute.needsUpdate = true;
|
|
215
|
+
}
|
|
216
|
+
_generateUVCoordinates(points, minX, minY, maxX, maxY) {
|
|
217
|
+
for (const point of points) {
|
|
218
|
+
point.x = (point.x - minX) / maxX;
|
|
219
|
+
point.y = (point.y - minY) / maxY;
|
|
220
|
+
}
|
|
221
|
+
return points;
|
|
222
|
+
}
|
|
223
|
+
_remapFloat(v, min0, max0, min1, max1) {
|
|
224
|
+
return min1 + (v - min0) / (max0 - min0) * (max1 - min1);
|
|
225
|
+
}
|
|
226
|
+
_prepareForNewImage() {
|
|
227
|
+
this._sceneService.scene.remove(this._meshGroup);
|
|
228
|
+
}
|
|
229
|
+
_resetCamera() {
|
|
230
|
+
this._cameraService.camera.position.set(0, 0, 4);
|
|
231
|
+
this._cameraService.camera.rotation.set(0, 0, 0);
|
|
232
|
+
this._cameraService.camera.fov = 45;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
ThreedInPhotoBuildService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, deps: [{ token: i1.ThreedInPhotoConnectionService }, { token: i2.ThreedInPhotoSceneService }, { token: i3.ThreedInPhotoViewService }, { token: i4.ThreedInPhotoControlService }, { token: i5.FloorService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
236
|
+
ThreedInPhotoBuildService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, providedIn: 'root' });
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoBuildService, decorators: [{
|
|
238
|
+
type: Injectable,
|
|
239
|
+
args: [{
|
|
240
|
+
providedIn: 'root'
|
|
241
|
+
}]
|
|
242
|
+
}], ctorParameters: function () { return [{ type: i1.ThreedInPhotoConnectionService }, { type: i2.ThreedInPhotoSceneService }, { type: i3.ThreedInPhotoViewService }, { type: i4.ThreedInPhotoControlService }, { type: i5.FloorService }]; } });
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWJ1aWxkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8tYnVpbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLEtBQUssRUFFTCxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBR2QsT0FBTyxFQUNSLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQU1qRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3JDLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQ1Usa0JBQWtELEVBQ2xELGFBQXdDLEVBQ3hDLGNBQXdDLEVBQ3hDLGVBQTRDLEVBQzVDLGFBQTJCO1FBSjNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZ0M7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBNkI7UUFDNUMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFwQnBCLG9CQUFlLEdBQVcsR0FBRyxDQUFDO1FBU3hDLG1CQUFjLEdBQW1CLElBQUksY0FB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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7O3VIQXZRVSx5QkFBeUI7MkhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFycm93SGVscGVyLFxyXG4gIEJveEdlb21ldHJ5LFxyXG4gIEJ1ZmZlckF0dHJpYnV0ZSxcclxuICBCdWZmZXJHZW9tZXRyeSxcclxuICBEb3VibGVTaWRlLFxyXG4gIEdyb3VwLFxyXG4gIE1hdHJpeDQsXHJcbiAgTWVzaCxcclxuICBNZXNoU3RhbmRhcmRNYXRlcmlhbCxcclxuICBOb0NvbG9yU3BhY2UsXHJcbiAgU2NlbmUsXHJcbiAgU2hhZG93TWF0ZXJpYWwsXHJcbiAgVGV4dHVyZSxcclxuICBWZWN0b3IyLFxyXG4gIFZlY3RvcjNcclxufSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCBEZWxhdW5hdG9yIGZyb20gJ2RlbGF1bmF0b3InO1xyXG5pbXBvcnQge1ZlcnRleE5vcm1hbHNIZWxwZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9oZWxwZXJzL1ZlcnRleE5vcm1hbHNIZWxwZXInO1xyXG5pbXBvcnQge0xpbmVhckZpbHRlcn0gZnJvbSAndGhyZWUvc3JjL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b0Nvbm5lY3Rpb25TZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9TY2VuZVNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXNjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9WaWV3U2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tdmlldy5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvQ29udHJvbFNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtNb2RlbE91dHB1dH0gZnJvbSAnLi4vbW9kZWxzL21vZGVsLW91dHB1dCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRocmVlZEluUGhvdG9CdWlsZFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RleHR1cmVNYXBTaXplOiBudW1iZXIgPSA1MTI7XHJcblxyXG4gIHByaXZhdGUgX2NhY2hlZE1vZGVsT3V0cHV0OiBNb2RlbE91dHB1dDtcclxuICBwcml2YXRlIF9wbGFjZW1lbnRNYXRyaXg6IE1hdHJpeDQ7XHJcbiAgcHJpdmF0ZSBfbWVzaEdyb3VwOiBHcm91cDtcclxuXHJcbiAgcHVibGljIGZsb29yTWVzaDogTWVzaDtcclxuICBwdWJsaWMgc2NlbmU6IFNjZW5lO1xyXG5cclxuICBwdWJsaWMgc2hhZG93TWF0ZXJpYWw6IFNoYWRvd01hdGVyaWFsID0gbmV3IFNoYWRvd01hdGVyaWFsKHtvcGFjaXR5OiAwLjQsIHNpZGU6IERvdWJsZVNpZGV9KTtcclxuICBwdWJsaWMgdmlzaWJpbGl0eU1hdGVyaWFsOiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbCh7XHJcbiAgICBjb2xvcjogJyMnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KSxcclxuICAgIHNpZGU6IERvdWJsZVNpZGVcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb25uZWN0aW9uU2VydmljZTogVGhyZWVkSW5QaG90b0Nvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2FtZXJhU2VydmljZTogVGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29udHJvbFNlcnZpY2U6IFRocmVlZEluUGhvdG9Db250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yU2VydmljZTogRmxvb3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVTY2VuZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5yZXF1ZXN0U2NlbmVQYXJhbWV0ZXJzKGZpbGUpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jYWNoZWRNb2RlbE91dHB1dCkge1xyXG4gICAgICAgICAgdGhpcy5fcHJlcGFyZUZvck5ld0ltYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NhY2hlZE1vZGVsT3V0cHV0ID0gTW9kZWxPdXRwdXQuT2JqZWN0VG9Nb2RlbE91dHB1dChyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZVNjZW5lQmFja2dyb3VuZChmaWxlKTtcclxuICAgICAgICB0aGlzLl9nZW5lcmF0ZU1lc2hlcyhbdGhpcy5fY2FjaGVkTW9kZWxPdXRwdXQucG9seWdvbnMzRC5mbG9vcl0sIGZpbGUsIFt0aGlzLl9jYWNoZWRNb2RlbE91dHB1dC5wb2x5Z29uczJELmZsb29yXSk7XHJcbiAgICAgICAgdGhpcy5fY29udHJvbFNlcnZpY2UucGxhY2VDdXN0b21GbG9vckl0ZW1zKHRoaXMuX3BsYWNlbWVudE1hdHJpeCk7XHJcbiAgICAgICAgdGhpcy5fcmVzZXRDYW1lcmEoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gdGhpcy5fY2FjaGVkTW9kZWxPdXRwdXQgPSBNb2RlbE91dHB1dC5PYmplY3RUb01vZGVsT3V0cHV0KHtcImxheW91dF8yZFwiOntcImNlaWxpbmdcIjpbWzUzMC45MTA1NjAzOTkyOTM5LDAuMzExODA1NTc2MDg2MDQ0M10sWzQ3LjAzMDg2MDU3MzA1MzM2LDAuMzExODA1NTc2MDg2MDQ0M10sWzIyMy45MjMwNTI1NzkxNjQ1LDExNi4zMDM0Nzk4ODAwOTQ1M10sWzQ0OC41NDgwNTgzMDEyMTA0LDEwNS4wNzg0NzkxNDA5OTY5NF1dLFwiZmxvb3JcIjpbWzExLjQ2NTIzNDY2NzA2Mjc2LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU1OC4wNTI3NDg1OTA3MDc4LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU0MS4yMDU4NzMxNjE1NTQzLDQ2My4wMzEyODA0ODc3NzU4XSxbNDQ4LjU0ODA1ODMwMTIxMDQsMzMyLjA3MjkzODUzMTYzNzJdLFsyMjQuODU4OTkwMTAzMDA2MzcsMzE5LjYwMDcxNTQ4ODE5NTRdXSxcIndhbGxzXCI6W1tbNDcuMDMwODYwNTczMDUzMzYsMC4zMTE4MDU1NzYwODYwNDQzXSxbMC4yMzM5ODQzODA5NjA0NjQ0OSwwLjMxMTgwNTU3NjA4NjA0NDNdLFswLjIzMzk4NDM4MDk2MDQ2NDQ5LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzExLjQ2NTIzNDY2NzA2Mjc2LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzIyNC44NTg5OTAxMDMwMDYzNywzMTkuNjAwNzE1NDg4MTk1NF0sWzIyMy45MjMwNTI1NzkxNjQ1LDExNi4zMDM0Nzk4ODAwOTQ1M11dLFtbMjIzLjkyMzA1MjU3OTE2NDUsMTE2LjMwMzQ3OTg4MDA5NDUzXSxbMjI0Ljg1ODk5MDEwMzAwNjM3LDMxOS42MDA3MTU0ODgxOTU0XSxbNDQ4LjU0ODA1ODMwMTIxMDQsMzMyLjA3MjkzODUzMTYzNzJdLFs0NDguNTQ4MDU4MzAxMjEwNCwxMDUuMDc4NDc5MTQwOTk2OTRdXSxbWzUzOC4zOTgwNjA1OTAwMjg4LDAuMzExODA1NTc2MDg2MDQ0M10sWzUzMC45MTA1NjAzOTkyOTM5LDAuMzExODA1NTc2MDg2MDQ0M10sWzQ0OC41NDgwNTgzMDEyMTA0LDEwNS4wNzg0NzkxNDA5OTY5NF0sWzQ0OC41NDgwNTgzMDEyMTA0LDMzMi4wNzI5Mzg1MzE2MzcyXSxbNTQxLjIwNTg3MzE2MTU1NDMsNDYzLjAzMTI4MDQ4Nzc3NThdXSxbWzU1OC4wNTI3NDg1OTA3MDc4LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU5OC4yOTgwNjIxMTU5MDc3LDQ3Ny45OTc5NDgxMzk5MDU5NV0sWzU5OC4yOTgwNjIxMTU5MDc3LDAuMzExODA1NTc2MDg2MDQ0M10sWzUzOC4zOTgwNjA1OTAwMjg4LDAuMzExODA1NTc2MDg2MDQ0M10sWzU0MS4yMDU4NzMxNjE1NTQzLDQ2My4wMzEyODA0ODc3NzU4XV1dfSxcImxheW91dF8zZFwiOntcImNlaWxpbmdcIjpbWzEuMzg3MjQzNjc2ODQ3ODgxNiwtMS40MTI3MDM1MTY0MTcwNzk2LC0xLjM3MTkwNjMzNDgyNDAzMjZdLFstMi43NTI1Nzg0NDg1ODY5OTQsLTEuNDE1ODQ1MTU4MDMzOTAwOSwtMS4zNjUyNDczMDM5MDk3MjZdLFstMi4wNDc1MzgxMTI5MzE3ODE3LC0xLjU0MDQ5ODEzOTc5MjAxODYsMi40NTYyNTAxMzY0Mjg0MDldLFsxLjk2NzQ2NDAxODUzMDMxNTcsLTEuNTEyOTAyMTQyOTM1MzI5LDEuNzAwMTgxOTA2NzUzMTE1OV1dLFwiZmxvb3JcIjpbWy0yLjc5ODMxMjYxNTY4NTk5MywxLjQ4MzIyMzY3NDM2MzU2LC0xLjY4NTcyNTk4MTY1OTM1OThdLFsxLjM1OTQ2NjgzOTQ5ODk0MzYsMS40NTk1NDIxNTI5NDc4NDk3LC0xLjczMDExNzg1MjE1ODAxN10sWzEuMzQzMjk0MTkyMDIyNzQ3MywxLjQ1Njk1MzQwNDAxNTk2NDksLTEuNTY2NTQ1NTQwNzU2NjQ5OF0sWzEuOTQ5Mzk2MTgxNzY4ODQxLDEuNDAwNTA0OTQ0MzkwNzIwOCwxLjY1Njk1NTE4Nzg1MDUyOF0sWy0yLjAzODk4MTc0Njk2NDk4NDksMS40MTAwNjE1OTU1MDYxMzgyLDIuNTAxNTg2ODU5NzU2MDQ1N11dLFwid2FsbHNcIjpbW1stMi43NDk5NjM5NTA0NDg1NjY0LC0xLjQxNDEwMzAzMzQ3NjQwNTgsLTEuMzY4OTM5OTMwODYyODUxXSxbLTIuODIwMzM0ODYzMDAwNDQ2LC0xLjIyODYyOTExNDU2MTYxMDksLTEuNzYyMDcyMzc5MDU5MjYyXSxbLTIuODA0MDgyMTA2ODgxNjcxOSwxLjQzMjE2NDU0NzUwOTYxNzMsLTEuNzgxNDM4NDA0OTgzOTQ0N10sWy0yLjc4ODQ5OTU0NTM4ODc1MTksMS40NzY3NDI4NjEzMzcxMzE5LC0xLjY5Nzg3NDYwMDM1NzQ3OTldLFstMi4wMzAyMzkwNTY4Nzg2MiwxLjQwMTcwMjUyMDkxMzU0NzksMi40NTk4MTg3ODU3MjA0MDFdLFstMi4wNTAzNjEzNDY1MzYyMTI5LC0xLjU0MzUzMTE4MTc0NjA1OSwyLjQ2OTU3MTA1OTI3OTk3MTVdXSxbWy0yLjA1NjM2NDEzMDMxMTU0MjUsLTEuNTQ5OTgwMDQ2NjgyODg3OCwyLjQ5Nzg5Mzc1NTk2NTc2MjVdLFstMi4wMjg4NTI3NzIwNTA0MzQsMS40MDAzNzcxNTIwMzIzMjIzLDIuNDUzMTk1OTk0NDMwMTE4XSxbMS45NDcxMzA5NjY4NDg3OTcsMS4zOTkyNzgwNDIzODI2NjQsMS42NTE1MzU0NTY3MTAzOTEzXSxbMS45NjIwMTExNDcyMDc2ODM4LC0xLjUwOTYyMzUyOTg0NDgxNCwxLjY4NzEzNTY0MjEwNDY3ODRdXSxbWzEuMzU4NDk1MjgzNzg5MTA0NywtMS4zNDczOTg2NDEwNDMyMzkzLC0xLjUxMDMyNzE1NTA2MDIzODddLFsxLjM4MzczNDc1MTQwOTk1NDMsLTEuNDEwMTUyNTU2ODI5OTgyNSwtMS4zNzczMTM0Mjk3Nzk0NzddLFsxLjk2NjYxMzgxNzg3NzIzOTUsLTEuNTEyMzkwOTczNTAxNzM1NCwxLjY5ODE0NzcxOTQzNjIyMTRdLFsxLjk2Mzg3MTA1MDU0MzI1NSwxLjQwODM0NDUwNDg5OTQ0ODgsMS42OTE1ODU0ODY0NjUwM10sWzEuMzQ3NjA1NjM0Mzk3OTMwNCwxLjQ2MDE0NjMwNTYyNzI5MywtMS41NjAxODQ3NzE0ODQ3OTkyXV0sW1sxLjM2NTQ1NzIyNTUwODE1OTksMS40NjM5NDk2NzgwMTA0MTA3LC0xLjcyMTg1NTkzMzEzNjQxMDZdLFsxLjQwNTk2NTYxNDk4MTEyMTMsMS4yOTU5MjQxODQzODg1ODQ1LC0yLjAzNjgyNjE4ODAzNDQ4Ml0sWzEuNDE5Nzg4NDA4OTQxNjkyNiwtMS4xMDY3ODcyMDcwNjAzOTAyLC0yLjAyMDMyOTc2ODEyNzg2NTddLFsxLjM1NzcyNjg2MDcwODY2MDQsLTEuMzQ2ODU3NTUwMDc3OTY4MywtMS41MTE0NzQxODY4NDQyOTYzXSxbMS4zNDU2MzM3OTM1Mzk0NzA5LDEuNDU4Njg1OTkxODMwMjk2LC0xLjU2MzA5Mzk1NDk4Njk5NjVdXV19fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZU1lc2hlcyhjb29yZGluYXRlczNEOiBWZWN0b3IzW11bXSwgZmlsZTogYW55LCBjb29yZGluYXRlczJEOiBWZWN0b3IyW11bXSwgY3JlYXRlVGV4dHVyZXM6IGJvb2xlYW4gPSBmYWxzZSwgY3JlYXRlSGVscGVyczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBtZXNoR3JvdXA6IEdyb3VwID0gbmV3IEdyb3VwKCk7XHJcbiAgICBtZXNoR3JvdXAubmFtZSA9ICd0aHJlZWQtaW4tcGhvdG8tbWVzaC1ncm91cCc7XHJcblxyXG4gICAgY29vcmRpbmF0ZXMzRC5mb3JFYWNoKChwb3NpdGlvblZlcnRpY2VzOiBWZWN0b3IzW10sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5ID0gdGhpcy5fY3JlYXRlR2VvbWV0cnlBbmRVdnMocG9zaXRpb25WZXJ0aWNlcyk7XHJcbiAgICAgIGNvbnN0IHBvbHlnb25NZXNoOiBNZXNoID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMudmlzaWJpbGl0eU1hdGVyaWFsKTtcclxuXHJcbiAgICAgIHBvbHlnb25NZXNoLnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZsb29yTWVzaCA9IHBvbHlnb25NZXNoO1xyXG4gICAgICB0aGlzLl9mbG9vclNlcnZpY2UuZ3JvdW5kUGxhbmUgPSB0aGlzLmZsb29yTWVzaDtcclxuXHJcbiAgICAgIGlmIChjcmVhdGVUZXh0dXJlcykge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRleHR1cmVzKGZpbGUsIGNvb3JkaW5hdGVzMkRbaW5kZXhdLCBwb2x5Z29uTWVzaCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG1pZGRsZSA9IG5ldyBWZWN0b3IzKCk7XHJcbiAgICAgIHBvc2l0aW9uVmVydGljZXMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIG1pZGRsZS5hZGQodik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBtaWRkbGUubXVsdGlwbHlTY2FsYXIoMSAvIHBvc2l0aW9uVmVydGljZXMubGVuZ3RoKTtcclxuICAgICAgcG9seWdvbk1lc2gubG9jYWxUb1dvcmxkKG1pZGRsZSk7XHJcblxyXG4gICAgICBpZiAoY3JlYXRlSGVscGVycykge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUhlbHBlcnMocG9seWdvbk1lc2gsIG1pZGRsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1lc2hHcm91cC5hZGQocG9seWdvbk1lc2gsIHRoaXMuX2NyZWF0ZVBsYWNlbWVudEJveFRlc3QoZ2VvbWV0cnksIG1pZGRsZSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fbWVzaEdyb3VwID0gbWVzaEdyb3VwO1xyXG4gICAgbWVzaEdyb3VwLnNjYWxlLnNldCgxLCAtMSwgLTEpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnNjZW5lLmFkZChtZXNoR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlR2VvbWV0cnlBbmRVdnMocG9zaXRpb25WZXJ0aWNlczogVmVjdG9yM1tdKTogQnVmZmVyR2VvbWV0cnkge1xyXG4gICAgY29uc3QgZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5ID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyhwb3NpdGlvblZlcnRpY2VzKTtcclxuICAgIGNvbnN0IGluZGV4RGVsYXVuYXk6IGFueSA9IERlbGF1bmF0b3IuZnJvbShwb3NpdGlvblZlcnRpY2VzLm1hcCh2ID0+IFt2LngsIHYuel0pKTtcclxuICAgIGNvbnN0IG1lc2hJbmRleDogbnVtYmVyW10gPSBbXTtcclxuICAgIGNvbnN0IHF1YWRVdnM6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleERlbGF1bmF5LnRyaWFuZ2xlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBtZXNoSW5kZXgucHVzaChpbmRleERlbGF1bmF5LnRyaWFuZ2xlc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWluWDogbnVtYmVyID0gTWF0aC5taW4oLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueCkpO1xyXG4gICAgY29uc3QgbWF4WDogbnVtYmVyID0gTWF0aC5tYXgoLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueCkpO1xyXG4gICAgY29uc3QgbWluWTogbnVtYmVyID0gTWF0aC5taW4oLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueikpO1xyXG4gICAgY29uc3QgbWF4WTogbnVtYmVyID0gTWF0aC5tYXgoLi4ucG9zaXRpb25WZXJ0aWNlcy5tYXAoKG4pID0+IG4ueikpO1xyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9zaXRpb25WZXJ0aWNlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICBjb25zdCBxeDogbnVtYmVyID0gdGhpcy5fcmVtYXBGbG9hdChwb3NpdGlvblZlcnRpY2VzW2pdLngsIG1pblgsIG1heFgsIDEsIDApO1xyXG4gICAgICBjb25zdCBxejogbnVtYmVyID0gdGhpcy5fcmVtYXBGbG9hdChwb3NpdGlvblZlcnRpY2VzW2pdLnosIG1pblksIG1heFksIDAsIDEpO1xyXG4gICAgICBxdWFkVXZzLnB1c2goLi4uW3F4LCBxel0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHV2czogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShxdWFkVXZzKTtcclxuXHJcbiAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3V2JywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSh1dnMsIDIpKTtcclxuICAgIGdlb21ldHJ5LmdldEF0dHJpYnV0ZSgndXYnKS5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICBnZW9tZXRyeS5zZXRJbmRleChtZXNoSW5kZXgpO1xyXG4gICAgZ2VvbWV0cnkuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvbWV0cnk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVUZXh0dXJlcyhmaWxlOiBGaWxlLCBwb2ludHM6IFZlY3RvcjJbXSwgb2JqZWN0OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGltYWdlLnNyYyA9IDxzdHJpbmc+ZmlsZVJlYWRlci5yZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGltYWdlLm9ubG9hZCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2Uud2lkdGg7XHJcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgbWluWDogbnVtYmVyID0gSW5maW5pdHk7XHJcbiAgICAgIGxldCBtYXhYOiBudW1iZXIgPSAtSW5maW5pdHk7XHJcbiAgICAgIGxldCBtaW5ZOiBudW1iZXIgPSBJbmZpbml0eTtcclxuICAgICAgbGV0IG1heFk6IG51bWJlciA9IC1JbmZpbml0eTtcclxuXHJcbiAgICAgIGN0eC5zYXZlKCk7XHJcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgICAgY3R4Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtaW5YID0gcG9pbnRzW2ldLnggPCBtaW5YID8gcG9pbnRzW2ldLnggOiBtaW5YO1xyXG4gICAgICAgIG1heFggPSBwb2ludHNbaV0ueCA+IG1heFggPyBwb2ludHNbaV0ueCA6IG1heFg7XHJcbiAgICAgICAgbWluWSA9IHBvaW50c1tpXS55IDwgbWluWSA/IHBvaW50c1tpXS55IDogbWluWTtcclxuICAgICAgICBtYXhZID0gcG9pbnRzW2ldLnkgPiBtYXhZID8gcG9pbnRzW2ldLnkgOiBtYXhZO1xyXG4gICAgICAgIGlmIChpICE9PSAwKSB7XHJcbiAgICAgICAgICBjdHgubGluZVRvKHBvaW50c1tpXS54LCBwb2ludHNbaV0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHguY2xvc2VQYXRoKCk7XHJcbiAgICAgIGN0eC5jbGlwKCk7XHJcbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG5cclxuICAgICAgY29uc3QgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBjb25zdCBjeCA9IGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgYy53aWR0aCA9IHRoaXMuX3RleHR1cmVNYXBTaXplO1xyXG4gICAgICBjLmhlaWdodCA9IHRoaXMuX3RleHR1cmVNYXBTaXplO1xyXG4gICAgICBjeC5zY2FsZSh0aGlzLl90ZXh0dXJlTWFwU2l6ZSAvIChtYXhYIC0gbWluWCksIHRoaXMuX3RleHR1cmVNYXBTaXplIC8gKG1heFkgLSBtaW5ZKSk7XHJcbiAgICAgIGN4LmRyYXdJbWFnZShjYW52YXMsIC1taW5YLCAtbWluWSk7XHJcblxyXG4gICAgICBjb25zdCB1dkNvb3JkaW5hdGVzOiBWZWN0b3IyW10gPSB0aGlzLl9nZW5lcmF0ZVVWQ29vcmRpbmF0ZXMocG9pbnRzLCBtaW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpO1xyXG4gICAgICB0aGlzLl9zZXRVVkNvb3JkaW5hdGVzKG9iamVjdC5nZW9tZXRyeSwgdXZDb29yZGluYXRlcyk7XHJcblxyXG4gICAgICBvYmplY3QubWF0ZXJpYWwubWFwID0gYXdhaXQgVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYy50b0RhdGFVUkwoKSk7XHJcbiAgICAgIG9iamVjdC5tYXRlcmlhbC5jb2xvciA9IHVuZGVmaW5lZDtcclxuICAgICAgb2JqZWN0Lm1hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlU2NlbmVCYWNrZ3JvdW5kKGZpbGU6IEZpbGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0dXJlOiBUZXh0dXJlID0gYXdhaXQgVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoPHN0cmluZz5maWxlUmVhZGVyLnJlc3VsdCk7XHJcbiAgICAgIHRleHR1cmUuZmxpcFkgPSB0cnVlO1xyXG4gICAgICB0ZXh0dXJlLmNvbG9yU3BhY2UgPSBOb0NvbG9yU3BhY2U7XHJcbiAgICAgIHRleHR1cmUubWluRmlsdGVyID0gTGluZWFyRmlsdGVyO1xyXG4gICAgICB0ZXh0dXJlLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHNjZW5lV2lkdGggPSB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIuZG9tRWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgY29uc3Qgc2NlbmVIZWlnaHQgPSB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IGltYWdlQXNwZWN0ID0gdGV4dHVyZS5pbWFnZS53aWR0aCAvIHRleHR1cmUuaW1hZ2UuaGVpZ2h0O1xyXG4gICAgICBjb25zdCBzY2VuZUFzcGVjdCA9IHNjZW5lV2lkdGggLyBzY2VuZUhlaWdodDtcclxuXHJcbiAgICAgIGlmIChpbWFnZUFzcGVjdCA+IHNjZW5lQXNwZWN0KSB7XHJcbiAgICAgICAgLy8gSW1hZ2UgaXMgd2lkZXIgdGhhbiB0aGUgc2NlbmVcclxuICAgICAgICB0ZXh0dXJlLm1hdHJpeC5zZXRVdlRyYW5zZm9ybShcclxuICAgICAgICAgIDAsIDAsIC8vIFRyYW5zbGF0aW9uXHJcbiAgICAgICAgICBzY2VuZUFzcGVjdCAvIGltYWdlQXNwZWN0LCAxLCAvLyBTY2FsZVxyXG4gICAgICAgICAgMCwgKDEgLSBzY2VuZUFzcGVjdCAvIGltYWdlQXNwZWN0KSAvIDIsIC8vIE9mZnNldFxyXG4gICAgICAgICAgMC41IC8vIENlbnRlciBwb2ludFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSW1hZ2UgaXMgdGFsbGVyIHRoYW4gdGhlIHNjZW5lXHJcbiAgICAgICAgdGV4dHVyZS5tYXRyaXguc2V0VXZUcmFuc2Zvcm0oXHJcbiAgICAgICAgICAwLCAwLCAvLyBUcmFuc2xhdGlvblxyXG4gICAgICAgICAgMSwgaW1hZ2VBc3BlY3QgLyBzY2VuZUFzcGVjdCwgLy8gU2NhbGVcclxuICAgICAgICAgIDAsICgxIC0gaW1hZ2VBc3BlY3QgLyBzY2VuZUFzcGVjdCkgLyAyLCAvLyBPZmZzZXRcclxuICAgICAgICAgIDAuNSAvLyBDZW50ZXIgcG9pbnRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUuYmFja2dyb3VuZCA9IHRleHR1cmU7XHJcbiAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZVdpZHRoID0gdGV4dHVyZS5pbWFnZS53aWR0aDtcclxuICAgICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnNjZW5lSGVpZ2h0ID0gdGV4dHVyZS5pbWFnZS5oZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUhlbHBlcnMocG9seWdvbk1lc2g6IE1lc2gsIG1pZGRsZTogVmVjdG9yMyk6IHZvaWQge1xyXG4gICAgY29uc3QgbjEgPSBVdGlscy5HZXRGYWNlTm9ybWFsRnJvbUJ1ZmZlckdlb21ldHJ5KHBvbHlnb25NZXNoLmdlb21ldHJ5LCAwLCAwKTtcclxuICAgIGNvbnN0IGFycm93SGVscGVyMSA9IG5ldyBBcnJvd0hlbHBlcihuMSwgbWlkZGxlLCAxLCAweGZmZmYwMCk7XHJcbiAgICBjb25zdCB2ZXJ0ZXhIZWxwZXIgPSBuZXcgVmVydGV4Tm9ybWFsc0hlbHBlcihwb2x5Z29uTWVzaCwgMiwgMHgwMGZmMDApO1xyXG5cclxuICAgIGNvbnN0IGJmOiBCb3hHZW9tZXRyeSA9IG5ldyBCb3hHZW9tZXRyeSgwLjMsIDAuMywgMC4zKTtcclxuICAgIGNvbnN0IGZ0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbCh7Y29sb3I6ICdibHVlJywgc2lkZTogRG91YmxlU2lkZX0pO1xyXG4gICAgY29uc3QgZjogTWVzaCA9IG5ldyBNZXNoKGJmLCBmdCk7XHJcblxyXG4gICAgZi5wb3NpdGlvbi5jb3B5KG1pZGRsZSk7XHJcbiAgICBmLmxvb2tBdChuZXcgVmVjdG9yMygpLmFkZFZlY3RvcnMobWlkZGxlLCBuMSkpO1xyXG4gICAgZi51cGRhdGVNYXRyaXgoKTtcclxuXHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUuYWRkKGFycm93SGVscGVyMSwgdmVydGV4SGVscGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVBsYWNlbWVudEJveFRlc3QoZ2VvbWV0cnk6IEJ1ZmZlckdlb21ldHJ5LCBtaWRkbGU6IFZlY3RvcjMpOiBNZXNoIHtcclxuICAgIGNvbnN0IG4xID0gVXRpbHMuR2V0RmFjZU5vcm1hbEZyb21CdWZmZXJHZW9tZXRyeShnZW9tZXRyeSwgMCwgMCk7XHJcbiAgICBjb25zdCBhZDogQm94R2VvbWV0cnkgPSBuZXcgQm94R2VvbWV0cnkoMC4zLCAwLjMsIDAuMyk7XHJcbiAgICBjb25zdCBhZjogTWVzaFN0YW5kYXJkTWF0ZXJpYWwgPSBuZXcgTWVzaFN0YW5kYXJkTWF0ZXJpYWwoe2NvbG9yOiAnYmx1ZScsIHNpZGU6IERvdWJsZVNpZGV9KTtcclxuICAgIGNvbnN0IGFnOiBNZXNoID0gbmV3IE1lc2goYWQsIGFmKTtcclxuICAgIGFnLnBvc2l0aW9uLmNvcHkobWlkZGxlKTtcclxuICAgIGFnLmxvb2tBdChuZXcgVmVjdG9yMygpLmFkZFZlY3RvcnMobWlkZGxlLCBuMSkpO1xyXG4gICAgdGhpcy5fcGxhY2VtZW50TWF0cml4ID0gYWcubWF0cml4O1xyXG4gICAgYWcudHJhbnNsYXRlWigtMC4xNSk7XHJcbiAgICBhZy50cmFuc2xhdGVYKDAuMTUpO1xyXG4gICAgYWcuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICBhZy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICByZXR1cm4gYWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRVVkNvb3JkaW5hdGVzKGdlb21ldHJ5OiBCdWZmZXJHZW9tZXRyeSwgY29vcmRpbmF0ZXM6IFZlY3RvcjJbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXZBdHRyaWJ1dGU6IEJ1ZmZlckF0dHJpYnV0ZSA9IDxCdWZmZXJBdHRyaWJ1dGU+Z2VvbWV0cnkuZ2V0QXR0cmlidXRlKCd1dicpO1xyXG4gICAgY29vcmRpbmF0ZXMuZm9yRWFjaCgodXZWZWN0b3I6IFZlY3RvcjIsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgdXZBdHRyaWJ1dGUuc2V0WFkoaW5kZXgsIHV2VmVjdG9yLngsIHV2VmVjdG9yLnkpO1xyXG4gICAgfSk7XHJcbiAgICB1dkF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZW5lcmF0ZVVWQ29vcmRpbmF0ZXMocG9pbnRzOiBWZWN0b3IyW10sIG1pblg6IG51bWJlciwgbWluWTogbnVtYmVyLCBtYXhYOiBudW1iZXIsIG1heFkpOiBWZWN0b3IyW10ge1xyXG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBwb2ludHMpIHtcclxuICAgICAgcG9pbnQueCA9IChwb2ludC54IC0gbWluWCkgLyBtYXhYO1xyXG4gICAgICBwb2ludC55ID0gKHBvaW50LnkgLSBtaW5ZKSAvIG1heFk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtYXBGbG9hdCh2OiBudW1iZXIsIG1pbjA6IG51bWJlciwgbWF4MDogbnVtYmVyLCBtaW4xOiBudW1iZXIsIG1heDE6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG1pbjEgKyAodiAtIG1pbjApIC8gKG1heDAgLSBtaW4wKSAqIChtYXgxIC0gbWluMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRm9yTmV3SW1hZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUucmVtb3ZlKHRoaXMuX21lc2hHcm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldENhbWVyYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCA0KTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLnJvdGF0aW9uLnNldCgwLCAwLCAwKTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLmZvdiA9IDQ1O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Injectable } from '@angular/core';
|
|
11
|
+
import axios from 'axios';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class ThreedInPhotoConnectionService {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.endpointURL = 'https://3d.enbisys.com:28000/room_layout';
|
|
16
|
+
}
|
|
17
|
+
requestSceneParameters(file) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const data = new FormData();
|
|
20
|
+
data.append('file', file);
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
axios.post(this.endpointURL, data, {
|
|
23
|
+
headers: {
|
|
24
|
+
accept: 'application/json',
|
|
25
|
+
'Content-Type': 'multipart/form-data',
|
|
26
|
+
}
|
|
27
|
+
}).then(response => {
|
|
28
|
+
if (response.status === 200) {
|
|
29
|
+
resolve(response.data);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
reject();
|
|
33
|
+
}
|
|
34
|
+
}).catch(e => {
|
|
35
|
+
console.log(e);
|
|
36
|
+
reject();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
ThreedInPhotoConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
ThreedInPhotoConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, providedIn: 'root' });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoConnectionService, decorators: [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{
|
|
47
|
+
providedIn: 'root'
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return []; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWNvbm5lY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvdGhyZWVkLWluLXBob3RvL3NlcnZpY2VzL3RocmVlZC1pbi1waG90by1jb25uZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBSzFCLE1BQU0sT0FBTyw4QkFBOEI7SUFJekM7UUFGTyxnQkFBVyxHQUFXLDBDQUEwQyxDQUFDO0lBRXhELENBQUM7SUFFSixzQkFBc0IsQ0FBQyxJQUFVOztZQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTFCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtnQkFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRTtvQkFDakMsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxrQkFBa0I7d0JBQzFCLGNBQWMsRUFBRSxxQkFBcUI7cUJBQ3RDO2lCQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2pCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7d0JBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLE1BQU0sRUFBRSxDQUFDO3FCQUNWO2dCQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNmLE1BQU0sRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7OzRIQTNCVSw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvQ29ubmVjdGlvblNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgZW5kcG9pbnRVUkw6IHN0cmluZyA9ICdodHRwczovLzNkLmVuYmlzeXMuY29tOjI4MDAwL3Jvb21fbGF5b3V0JztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlcXVlc3RTY2VuZVBhcmFtZXRlcnMoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGF4aW9zLnBvc3QodGhpcy5lbmRwb2ludFVSTCwgZGF0YSwge1xyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { CustomFloorItem } from '../../core3d/items/custom-floor-item';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./threed-in-photo-view.service";
|
|
5
|
+
import * as i2 from "./threed-in-photo-render.service";
|
|
6
|
+
import * as i3 from "./threed-in-photo-scene.service";
|
|
7
|
+
export class ThreedInPhotoControlService {
|
|
8
|
+
constructor(_cameraService, _renderService, _sceneService) {
|
|
9
|
+
this._cameraService = _cameraService;
|
|
10
|
+
this._renderService = _renderService;
|
|
11
|
+
this._sceneService = _sceneService;
|
|
12
|
+
}
|
|
13
|
+
placeCustomFloorItems(placementMatrix) {
|
|
14
|
+
this._sceneService.scene.children.forEach((child) => {
|
|
15
|
+
if (child instanceof CustomFloorItem) {
|
|
16
|
+
child.position.set(0, 0, 0);
|
|
17
|
+
child.applyMatrix4(placementMatrix);
|
|
18
|
+
child.position.y = -child.position.y;
|
|
19
|
+
// child.translateY((<CustomFloorItem>child).halfSize.y);
|
|
20
|
+
// child.translateY(-Math.abs(child.position.y * 2));
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ThreedInPhotoControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, deps: [{ token: i1.ThreedInPhotoViewService }, { token: i2.ThreedInPhotoRenderService }, { token: i3.ThreedInPhotoSceneService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
ThreedInPhotoControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, providedIn: 'root' });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoControlService, decorators: [{
|
|
28
|
+
type: Injectable,
|
|
29
|
+
args: [{
|
|
30
|
+
providedIn: 'root'
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.ThreedInPhotoViewService }, { type: i2.ThreedInPhotoRenderService }, { type: i3.ThreedInPhotoSceneService }]; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWNvbnRyb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvdGhyZWVkLWluLXBob3RvL3NlcnZpY2VzL3RocmVlZC1pbi1waG90by1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUt6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBS3JFLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFDVSxjQUF3QyxFQUN4QyxjQUEwQyxFQUMxQyxhQUF3QztRQUZ4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtJQUM5QyxDQUFDO0lBRUUscUJBQXFCLENBQUMsZUFBd0I7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xELElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDckMseURBQXlEO2dCQUN6RCxxREFBcUQ7YUFDdEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lIQWxCVSwyQkFBMkI7NkhBQTNCLDJCQUEyQixjQUYxQixNQUFNOzRGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdHJpeDR9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvVmlld1NlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXZpZXcuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDdXN0b21GbG9vckl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tZmxvb3ItaXRlbSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvQ29udHJvbFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NhbWVyYVNlcnZpY2U6IFRocmVlZEluUGhvdG9WaWV3U2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlclNlcnZpY2U6IFRocmVlZEluUGhvdG9SZW5kZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBUaHJlZWRJblBob3RvU2NlbmVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIHBsYWNlQ3VzdG9tRmxvb3JJdGVtcyhwbGFjZW1lbnRNYXRyaXg6IE1hdHJpeDQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBDdXN0b21GbG9vckl0ZW0pIHtcclxuICAgICAgICBjaGlsZC5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XHJcbiAgICAgICAgY2hpbGQuYXBwbHlNYXRyaXg0KHBsYWNlbWVudE1hdHJpeCk7XHJcbiAgICAgICAgY2hpbGQucG9zaXRpb24ueSA9IC1jaGlsZC5wb3NpdGlvbi55O1xyXG4gICAgICAgIC8vIGNoaWxkLnRyYW5zbGF0ZVkoKDxDdXN0b21GbG9vckl0ZW0+Y2hpbGQpLmhhbGZTaXplLnkpO1xyXG4gICAgICAgIC8vIGNoaWxkLnRyYW5zbGF0ZVkoLU1hdGguYWJzKGNoaWxkLnBvc2l0aW9uLnkgKiAyKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2015/app/plugins/threed-in-photo/services/threed-in-photo-event-listeners.service.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { UploadImageComponent } from '../components/upload-image/upload-image.component';
|
|
3
|
+
import { ViewControlComponent } from '../components/view-control/view-control.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./threed-in-photo-event.service";
|
|
6
|
+
import * as i2 from "@angular/material/dialog";
|
|
7
|
+
export class ThreedInPhotoEventListenersService {
|
|
8
|
+
constructor(_eventService, _dialog) {
|
|
9
|
+
this._eventService = _eventService;
|
|
10
|
+
this._dialog = _dialog;
|
|
11
|
+
this._subs = [];
|
|
12
|
+
this._subs.push(this._eventService.showUploadImageDialog.subscribe(() => this.openUploadImageDialog()), this._eventService.showViewControlDialog.subscribe(() => this.openViewControlDialog()));
|
|
13
|
+
}
|
|
14
|
+
ngOnDestroy() {
|
|
15
|
+
this._subs.forEach(s => s.unsubscribe());
|
|
16
|
+
}
|
|
17
|
+
openUploadImageDialog() {
|
|
18
|
+
this._dialog.open(UploadImageComponent, {
|
|
19
|
+
width: '400px'
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
openViewControlDialog() {
|
|
23
|
+
this._dialog.open(ViewControlComponent, {
|
|
24
|
+
hasBackdrop: false
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ThreedInPhotoEventListenersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, deps: [{ token: i1.ThreedInPhotoEventService }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
ThreedInPhotoEventListenersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, providedIn: 'root' });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventListenersService, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{
|
|
33
|
+
providedIn: 'root'
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i1.ThreedInPhotoEventService }, { type: i2.MatDialog }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWV2ZW50LWxpc3RlbmVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy90aHJlZWQtaW4tcGhvdG8vc2VydmljZXMvdGhyZWVkLWluLXBob3RvLWV2ZW50LWxpc3RlbmVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbURBQW1ELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLGtDQUFrQztJQUkzQyxZQUNZLGFBQXdDLEVBQ3hDLE9BQWtCO1FBRGxCLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4QyxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBSnRCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBTS9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNYLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQ3RGLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQ3pGLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNwQyxLQUFLLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0scUJBQXFCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLFdBQVcsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztJQUNQLENBQUM7O2dJQTVCUSxrQ0FBa0M7b0lBQWxDLGtDQUFrQyxjQUYvQixNQUFNOzRGQUVULGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VXBsb2FkSW1hZ2VDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1ZpZXdDb250cm9sQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL3ZpZXctY29udHJvbC92aWV3LWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvRXZlbnRTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhyZWVkSW5QaG90b0V2ZW50TGlzdGVuZXJzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9ldmVudFNlcnZpY2U6IFRocmVlZEluUGhvdG9FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2dcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dVcGxvYWRJbWFnZURpYWxvZy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuVXBsb2FkSW1hZ2VEaWFsb2coKSksXHJcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93Vmlld0NvbnRyb2xEaWFsb2cuc3Vic2NyaWJlKCgpID0+IHRoaXMub3BlblZpZXdDb250cm9sRGlhbG9nKCkpLFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuVXBsb2FkSW1hZ2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oVXBsb2FkSW1hZ2VDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgd2lkdGg6ICc0MDBweCdcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblZpZXdDb250cm9sRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKFZpZXdDb250cm9sQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ThreedInPhotoEventService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.requestRender = new Subject();
|
|
7
|
+
this.showUploadImageDialog = new Subject();
|
|
8
|
+
this.showViewControlDialog = new Subject();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
ThreedInPhotoEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
+
ThreedInPhotoEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, providedIn: 'root' });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoEventService, decorators: [{
|
|
14
|
+
type: Injectable,
|
|
15
|
+
args: [{
|
|
16
|
+
providedIn: 'root'
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8tZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBSzdCLE1BQU0sT0FBTyx5QkFBeUI7SUFIdEM7UUFLa0Isa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuRCwwQkFBcUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMzRCwwQkFBcUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQUU1RTs7dUhBTlkseUJBQXlCOzJIQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRocmVlZEluUGhvdG9FdmVudFNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFJlbmRlcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dVcGxvYWRJbWFnZURpYWxvZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dWaWV3Q29udHJvbERpYWxvZzogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ViewMode } from '../../../core/enum/view-mode.enum';
|
|
3
|
+
import { UploadImageComponent } from '../components/upload-image/upload-image.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./threed-in-photo-build.service";
|
|
6
|
+
import * as i2 from "./threed-in-photo-view.service";
|
|
7
|
+
import * as i3 from "./threed-in-photo-connection.service";
|
|
8
|
+
import * as i4 from "./threed-in-photo-scene.service";
|
|
9
|
+
import * as i5 from "./threed-in-photo-render.service";
|
|
10
|
+
import * as i6 from "@angular/material/dialog";
|
|
11
|
+
import * as i7 from "../../core3d/service/scene-event.service";
|
|
12
|
+
import * as i8 from "../../core3d/service/camera.service";
|
|
13
|
+
import * as i9 from "../../../core/service/view-mode.service";
|
|
14
|
+
export class ThreedInPhotoInitializerService {
|
|
15
|
+
constructor(_buildService, _viewService, _connectionService, _sceneService, _renderService, _dialog, _sceneEventService, _cameraService, _viewModeService) {
|
|
16
|
+
this._buildService = _buildService;
|
|
17
|
+
this._viewService = _viewService;
|
|
18
|
+
this._connectionService = _connectionService;
|
|
19
|
+
this._sceneService = _sceneService;
|
|
20
|
+
this._renderService = _renderService;
|
|
21
|
+
this._dialog = _dialog;
|
|
22
|
+
this._sceneEventService = _sceneEventService;
|
|
23
|
+
this._cameraService = _cameraService;
|
|
24
|
+
this._viewModeService = _viewModeService;
|
|
25
|
+
}
|
|
26
|
+
init(connectionEndpointML, camera, scene, renderer) {
|
|
27
|
+
this._connectionService.endpointURL = connectionEndpointML ? connectionEndpointML : this._connectionService.endpointURL;
|
|
28
|
+
this._viewService.camera = camera ? camera : this._viewService.camera;
|
|
29
|
+
this._sceneService.scene = scene ? scene : this._sceneService.scene;
|
|
30
|
+
this._sceneService.renderer = renderer ? renderer : this._renderService.renderer;
|
|
31
|
+
this._cameraService.disableRotate();
|
|
32
|
+
this._cameraService.cameraZoomOut();
|
|
33
|
+
this._cameraService.disableZoom();
|
|
34
|
+
this._cameraService.disablePan();
|
|
35
|
+
this._sceneEventService.rotateNoDrag = false;
|
|
36
|
+
this._viewModeService.viewMode = ViewMode.InPhotoView;
|
|
37
|
+
this._openUploadDialog();
|
|
38
|
+
}
|
|
39
|
+
_openUploadDialog() {
|
|
40
|
+
this._dialog.open(UploadImageComponent, {
|
|
41
|
+
width: '400px'
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
ThreedInPhotoInitializerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, deps: [{ token: i1.ThreedInPhotoBuildService }, { token: i2.ThreedInPhotoViewService }, { token: i3.ThreedInPhotoConnectionService }, { token: i4.ThreedInPhotoSceneService }, { token: i5.ThreedInPhotoRenderService }, { token: i6.MatDialog }, { token: i7.SceneEventService }, { token: i8.CameraService }, { token: i9.ViewModeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
ThreedInPhotoInitializerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, providedIn: 'root' });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoInitializerService, decorators: [{
|
|
48
|
+
type: Injectable,
|
|
49
|
+
args: [{
|
|
50
|
+
providedIn: 'root'
|
|
51
|
+
}]
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.ThreedInPhotoBuildService }, { type: i2.ThreedInPhotoViewService }, { type: i3.ThreedInPhotoConnectionService }, { type: i4.ThreedInPhotoSceneService }, { type: i5.ThreedInPhotoRenderService }, { type: i6.MatDialog }, { type: i7.SceneEventService }, { type: i8.CameraService }, { type: i9.ViewModeService }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLWluaXRpYWxpemVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3RocmVlZC1pbi1waG90by9zZXJ2aWNlcy90aHJlZWQtaW4tcGhvdG8taW5pdGlhbGl6ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBV3pDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtREFBbUQsQ0FBQzs7Ozs7Ozs7Ozs7QUFLdkYsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUNVLGFBQXdDLEVBQ3hDLFlBQXNDLEVBQ3RDLGtCQUFrRCxFQUNsRCxhQUF3QyxFQUN4QyxjQUEwQyxFQUMxQyxPQUFrQixFQUNsQixrQkFBcUMsRUFDckMsY0FBNkIsRUFDN0IsZ0JBQWlDO1FBUmpDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFnQztRQUNsRCxrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO0lBQ3ZDLENBQUM7SUFFRSxJQUFJLENBQ1Qsb0JBQTZCLEVBQzdCLE1BQTBCLEVBQzFCLEtBQWEsRUFDYixRQUF3QjtRQUV4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztRQUN4SCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUVqRixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUV0RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkhBdkNVLCtCQUErQjtpSUFBL0IsK0JBQStCLGNBRjlCLE1BQU07NEZBRVAsK0JBQStCO2tCQUgzQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGVyc3BlY3RpdmVDYW1lcmEsIFNjZW5lLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9CdWlsZFNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWJ1aWxkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZEluUGhvdG9WaWV3U2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tdmlldy5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRJblBob3RvQ29ubmVjdGlvblNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1NjZW5lU2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2V9IGZyb20gJy4vdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZUV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7Q2FtZXJhU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvY2FtZXJhLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZpZXdNb2RlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ZpZXctbW9kZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL3ZpZXctbW9kZS5lbnVtJztcclxuaW1wb3J0IHtVcGxvYWRJbWFnZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy91cGxvYWQtaW1hZ2UvdXBsb2FkLWltYWdlLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaHJlZWRJblBob3RvSW5pdGlhbGl6ZXJTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9idWlsZFNlcnZpY2U6IFRocmVlZEluUGhvdG9CdWlsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92aWV3U2VydmljZTogVGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29ubmVjdGlvblNlcnZpY2U6IFRocmVlZEluUGhvdG9Db25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogVGhyZWVkSW5QaG90b1NjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlclNlcnZpY2U6IFRocmVlZEluUGhvdG9SZW5kZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9zY2VuZUV2ZW50U2VydmljZTogU2NlbmVFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jYW1lcmFTZXJ2aWNlOiBDYW1lcmFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgaW5pdChcclxuICAgIGNvbm5lY3Rpb25FbmRwb2ludE1MPzogc3RyaW5nLFxyXG4gICAgY2FtZXJhPzogUGVyc3BlY3RpdmVDYW1lcmEsXHJcbiAgICBzY2VuZT86IFNjZW5lLFxyXG4gICAgcmVuZGVyZXI/OiBXZWJHTFJlbmRlcmVyXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5lbmRwb2ludFVSTCA9IGNvbm5lY3Rpb25FbmRwb2ludE1MID8gY29ubmVjdGlvbkVuZHBvaW50TUwgOiB0aGlzLl9jb25uZWN0aW9uU2VydmljZS5lbmRwb2ludFVSTDtcclxuICAgIHRoaXMuX3ZpZXdTZXJ2aWNlLmNhbWVyYSA9IGNhbWVyYSA/IGNhbWVyYSA6IHRoaXMuX3ZpZXdTZXJ2aWNlLmNhbWVyYTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZSA9IHNjZW5lID8gc2NlbmUgOiB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmU7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIgPSByZW5kZXJlciA/IHJlbmRlcmVyIDogdGhpcy5fcmVuZGVyU2VydmljZS5yZW5kZXJlcjtcclxuXHJcbiAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmRpc2FibGVSb3RhdGUoKTtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhWm9vbU91dCgpO1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5kaXNhYmxlWm9vbSgpO1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5kaXNhYmxlUGFuKCk7XHJcbiAgICB0aGlzLl9zY2VuZUV2ZW50U2VydmljZS5yb3RhdGVOb0RyYWcgPSBmYWxzZTtcclxuICAgIHRoaXMuX3ZpZXdNb2RlU2VydmljZS52aWV3TW9kZSA9IFZpZXdNb2RlLkluUGhvdG9WaWV3O1xyXG5cclxuICAgIHRoaXMuX29wZW5VcGxvYWREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5VcGxvYWREaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihVcGxvYWRJbWFnZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQwMHB4J1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { PCFShadowMap, SRGBColorSpace, WebGLRenderer } from 'three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./threed-in-photo-scene.service";
|
|
5
|
+
import * as i2 from "./threed-in-photo-view.service";
|
|
6
|
+
export class ThreedInPhotoRenderService {
|
|
7
|
+
constructor(_sceneService, _viewService) {
|
|
8
|
+
this._sceneService = _sceneService;
|
|
9
|
+
this._viewService = _viewService;
|
|
10
|
+
}
|
|
11
|
+
init() {
|
|
12
|
+
this._initiateRenderer();
|
|
13
|
+
this._render();
|
|
14
|
+
}
|
|
15
|
+
resizeRendererToDisplaySize(forceUpdate = false) {
|
|
16
|
+
const canvas = this.renderer.domElement;
|
|
17
|
+
const pixelRatio = window.devicePixelRatio;
|
|
18
|
+
const width = canvas.clientWidth * pixelRatio | 0;
|
|
19
|
+
const height = canvas.clientHeight * pixelRatio | 0;
|
|
20
|
+
const needResize = this.sceneContainer.clientWidth !== width || this.sceneContainer.clientHeight !== height;
|
|
21
|
+
if (needResize || forceUpdate) {
|
|
22
|
+
this.renderer.setSize(width, height, false);
|
|
23
|
+
}
|
|
24
|
+
return needResize;
|
|
25
|
+
}
|
|
26
|
+
_animate() {
|
|
27
|
+
// animations can be defined here
|
|
28
|
+
}
|
|
29
|
+
_render() {
|
|
30
|
+
this.renderer.render(this._sceneService.scene, this._viewService.camera);
|
|
31
|
+
this._animate();
|
|
32
|
+
if (this.resizeRendererToDisplaySize()) {
|
|
33
|
+
this._onUpdateCanvasSize();
|
|
34
|
+
}
|
|
35
|
+
this._frameId = requestAnimationFrame(() => {
|
|
36
|
+
this._render();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
_initiateRenderer() {
|
|
40
|
+
this.renderer = new WebGLRenderer({
|
|
41
|
+
antialias: true
|
|
42
|
+
});
|
|
43
|
+
this.renderer.shadowMap.enabled = true;
|
|
44
|
+
this.renderer.shadowMap.type = PCFShadowMap;
|
|
45
|
+
this.renderer.outputColorSpace = SRGBColorSpace;
|
|
46
|
+
this.sceneContainer.appendChild(this.renderer.domElement);
|
|
47
|
+
}
|
|
48
|
+
_onUpdateCanvasSize() {
|
|
49
|
+
this.renderer.setSize(this.sceneContainer.clientWidth, this.sceneContainer.clientHeight);
|
|
50
|
+
this._viewService.updateProjectionMatrix(this.sceneContainer.clientWidth, this.sceneContainer.clientHeight);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ThreedInPhotoRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, deps: [{ token: i1.ThreedInPhotoSceneService }, { token: i2.ThreedInPhotoViewService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
54
|
+
ThreedInPhotoRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, providedIn: 'root' });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ThreedInPhotoRenderService, decorators: [{
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{
|
|
58
|
+
providedIn: 'root'
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.ThreedInPhotoSceneService }, { type: i2.ThreedInPhotoViewService }]; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy90aHJlZWQtaW4tcGhvdG8vc2VydmljZXMvdGhyZWVkLWluLXBob3RvLXJlbmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sT0FBTyxDQUFDOzs7O0FBT2xFLE1BQU0sT0FBTywwQkFBMEI7SUFPckMsWUFDVSxhQUF3QyxFQUN4QyxZQUFzQztRQUR0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQTBCO0lBRWhELENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxjQUF1QixLQUFLO1FBQzdELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUM7UUFDNUcsSUFBSSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sUUFBUTtRQUNkLGlDQUFpQztJQUNuQyxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDaEMsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1FBRWhELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RyxDQUFDOzt3SEE3RFUsMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQQ0ZTaGFkb3dNYXAsIFNSR0JDb2xvclNwYWNlLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1NjZW5lU2VydmljZX0gZnJvbSAnLi90aHJlZWQtaW4tcGhvdG8tc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkSW5QaG90b1ZpZXdTZXJ2aWNlfSBmcm9tICcuL3RocmVlZC1pbi1waG90by12aWV3LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhyZWVkSW5QaG90b1JlbmRlclNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHVibGljIHNjZW5lQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgcHJpdmF0ZSBfZnJhbWVJZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogVGhyZWVkSW5QaG90b1NjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ZpZXdTZXJ2aWNlOiBUaHJlZWRJblBob3RvVmlld1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhdGVSZW5kZXJlcigpO1xyXG4gICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzaXplUmVuZGVyZXJUb0Rpc3BsYXlTaXplKGZvcmNlVXBkYXRlOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudDtcclxuICAgIGNvbnN0IHBpeGVsUmF0aW8gPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcclxuICAgIGNvbnN0IHdpZHRoID0gY2FudmFzLmNsaWVudFdpZHRoICogcGl4ZWxSYXRpbyB8IDA7XHJcbiAgICBjb25zdCBoZWlnaHQgPSBjYW52YXMuY2xpZW50SGVpZ2h0ICogcGl4ZWxSYXRpbyB8IDA7XHJcbiAgICBjb25zdCBuZWVkUmVzaXplID0gdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRXaWR0aCAhPT0gd2lkdGggfHwgdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRIZWlnaHQgIT09IGhlaWdodDtcclxuICAgIGlmIChuZWVkUmVzaXplIHx8IGZvcmNlVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmVlZFJlc2l6ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGUoKSB7XHJcbiAgICAvLyBhbmltYXRpb25zIGNhbiBiZSBkZWZpbmVkIGhlcmVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lU2VydmljZS5zY2VuZSwgdGhpcy5fdmlld1NlcnZpY2UuY2FtZXJhKTtcclxuICAgIHRoaXMuX2FuaW1hdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVSZW5kZXJlclRvRGlzcGxheVNpemUoKSkge1xyXG4gICAgICB0aGlzLl9vblVwZGF0ZUNhbnZhc1NpemUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9mcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRpYXRlUmVuZGVyZXIoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFdlYkdMUmVuZGVyZXIoe1xyXG4gICAgICBhbnRpYWxpYXM6IHRydWVcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd01hcC50eXBlID0gUENGU2hhZG93TWFwO1xyXG4gICAgdGhpcy5yZW5kZXJlci5vdXRwdXRDb2xvclNwYWNlID0gU1JHQkNvbG9yU3BhY2U7XHJcblxyXG4gICAgdGhpcy5zY2VuZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25VcGRhdGVDYW52YXNTaXplKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuc2NlbmVDb250YWluZXIuY2xpZW50V2lkdGgsIHRoaXMuc2NlbmVDb250YWluZXIuY2xpZW50SGVpZ2h0KTtcclxuICAgIHRoaXMuX3ZpZXdTZXJ2aWNlLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgodGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRXaWR0aCwgdGhpcy5zY2VuZUNvbnRhaW5lci5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|