@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,60 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { HomedecoratorComponent } from './homedecorator.component';
|
|
3
|
+
import { ServiceLocator } from './service/service-locator.service';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { ProgressBarModule } from './shared/progress-bar/progress-bar.module';
|
|
6
|
+
import { LoadingOverlayModule } from './shared/loading-overlay/loading-overlay.module';
|
|
7
|
+
import { HdLoaderModule } from './shared/loader/hd-loader.module';
|
|
8
|
+
import { ExportDialogModule } from './shared/export-dialog/export-dialog.module';
|
|
9
|
+
import { PluginsModule } from './plugins/plugins.module';
|
|
10
|
+
import { InfoDialogModule } from './shared/info-dialog/info-dialog.module';
|
|
11
|
+
import { DialogModule } from './shared/dialog/dialog.module';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class HomedecoratorModule {
|
|
14
|
+
constructor(_injector) {
|
|
15
|
+
this._injector = _injector;
|
|
16
|
+
ServiceLocator.injector = this._injector;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
HomedecoratorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
HomedecoratorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, bootstrap: [HomedecoratorComponent], declarations: [HomedecoratorComponent], imports: [CommonModule,
|
|
21
|
+
ProgressBarModule,
|
|
22
|
+
LoadingOverlayModule,
|
|
23
|
+
HdLoaderModule,
|
|
24
|
+
ExportDialogModule,
|
|
25
|
+
InfoDialogModule,
|
|
26
|
+
PluginsModule,
|
|
27
|
+
DialogModule], exports: [HomedecoratorComponent] });
|
|
28
|
+
HomedecoratorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, imports: [[
|
|
29
|
+
CommonModule,
|
|
30
|
+
ProgressBarModule,
|
|
31
|
+
LoadingOverlayModule,
|
|
32
|
+
HdLoaderModule,
|
|
33
|
+
ExportDialogModule,
|
|
34
|
+
InfoDialogModule,
|
|
35
|
+
PluginsModule,
|
|
36
|
+
DialogModule
|
|
37
|
+
]] });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
imports: [
|
|
42
|
+
CommonModule,
|
|
43
|
+
ProgressBarModule,
|
|
44
|
+
LoadingOverlayModule,
|
|
45
|
+
HdLoaderModule,
|
|
46
|
+
ExportDialogModule,
|
|
47
|
+
InfoDialogModule,
|
|
48
|
+
PluginsModule,
|
|
49
|
+
DialogModule
|
|
50
|
+
],
|
|
51
|
+
declarations: [
|
|
52
|
+
HomedecoratorComponent
|
|
53
|
+
],
|
|
54
|
+
exports: [
|
|
55
|
+
HomedecoratorComponent
|
|
56
|
+
],
|
|
57
|
+
bootstrap: [HomedecoratorComponent]
|
|
58
|
+
}]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9ob21lZGVjb3JhdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBcUIzRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7O2lIQUhVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLHNCQUFzQixrQkFMaEMsc0JBQXNCLGFBVnRCLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixZQUFZLGFBTVosc0JBQXNCO2tIQUliLG1CQUFtQixZQWxCckI7WUFDUCxZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsWUFBWTtTQUNiOzRGQVNVLG1CQUFtQjtrQkFuQi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asc0JBQXNCO3FCQUN2QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbXBvbmVudH0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U2VydmljZUxvY2F0b3J9IGZyb20gJy4vc2VydmljZS9zZXJ2aWNlLWxvY2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1Byb2dyZXNzQmFyTW9kdWxlfSBmcm9tICcuL3NoYXJlZC9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLm1vZHVsZSc7XHJcbmltcG9ydCB7TG9hZGluZ092ZXJsYXlNb2R1bGV9IGZyb20gJy4vc2hhcmVkL2xvYWRpbmctb3ZlcmxheS9sb2FkaW5nLW92ZXJsYXkubW9kdWxlJztcclxuaW1wb3J0IHtIZExvYWRlck1vZHVsZX0gZnJvbSAnLi9zaGFyZWQvbG9hZGVyL2hkLWxvYWRlci5tb2R1bGUnO1xyXG5pbXBvcnQge0V4cG9ydERpYWxvZ01vZHVsZX0gZnJvbSAnLi9zaGFyZWQvZXhwb3J0LWRpYWxvZy9leHBvcnQtZGlhbG9nLm1vZHVsZSc7XHJcbmltcG9ydCB7UGx1Z2luc01vZHVsZX0gZnJvbSAnLi9wbHVnaW5zL3BsdWdpbnMubW9kdWxlJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nTW9kdWxlfSBmcm9tICcuL3NoYXJlZC9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQge0RpYWxvZ01vZHVsZX0gZnJvbSAnLi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIExvYWRpbmdPdmVybGF5TW9kdWxlLFxyXG4gICAgSGRMb2FkZXJNb2R1bGUsXHJcbiAgICBFeHBvcnREaWFsb2dNb2R1bGUsXHJcbiAgICBJbmZvRGlhbG9nTW9kdWxlLFxyXG4gICAgUGx1Z2luc01vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBIb21lZGVjb3JhdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBIb21lZGVjb3JhdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBib290c3RyYXA6IFtIb21lZGVjb3JhdG9yQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZWRlY29yYXRvck1vZHVsZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBTZXJ2aWNlTG9jYXRvci5pbmplY3RvciA9IHRoaXMuX2luamVjdG9yO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Euler, Vector3 } from 'three';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { validFloorplanPosition } from './floorplan-collision-detection';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../room-planner/components/floorplanner/service/floorplan.service";
|
|
6
|
+
import * as i2 from "../service/scene.service";
|
|
7
|
+
import * as i3 from "../service/intersection.service";
|
|
8
|
+
import * as i4 from "../service/floor.service";
|
|
9
|
+
export class CollisionManagerService {
|
|
10
|
+
constructor(_floorplanService, _sceneService, _intersectionService, _floorService) {
|
|
11
|
+
this._floorplanService = _floorplanService;
|
|
12
|
+
this._sceneService = _sceneService;
|
|
13
|
+
this._intersectionService = _intersectionService;
|
|
14
|
+
this._floorService = _floorService;
|
|
15
|
+
this.checkCollisions = true;
|
|
16
|
+
this._cachedMeshes = {};
|
|
17
|
+
this._origPosition = new Vector3();
|
|
18
|
+
this._origRotation = new Euler();
|
|
19
|
+
}
|
|
20
|
+
validatePosition(newPosition, newRotation, piece, allFurniture = []) {
|
|
21
|
+
if (!this.checkCollisions) {
|
|
22
|
+
return { valid: true };
|
|
23
|
+
}
|
|
24
|
+
const otherFurniture = allFurniture.filter(f => f.uuid !== piece.uuid);
|
|
25
|
+
const floorplanRooms = this._floorplanService.getRooms();
|
|
26
|
+
const orphanWalls = this._floorplanService.getOrphanWalls();
|
|
27
|
+
/*
|
|
28
|
+
for debugging purposes, uncomment to visualize bounding boxes
|
|
29
|
+
*/
|
|
30
|
+
// if (this._sceneService) {
|
|
31
|
+
// const meshes = piece.getVisibleMeshesParents();
|
|
32
|
+
// const corners = meshes.map((mesh: Item | CustomMesh) => {
|
|
33
|
+
// if (mesh instanceof CustomMesh) {
|
|
34
|
+
// if (newPosition) {
|
|
35
|
+
// piece.wantsRotation = undefined;
|
|
36
|
+
// return mesh.moveBBoxCorners(newPosition);
|
|
37
|
+
// }
|
|
38
|
+
// if (newRotation) {
|
|
39
|
+
// piece.wantsRotation = newRotation;
|
|
40
|
+
// return mesh.rotateBBoxCorners(newRotation);
|
|
41
|
+
// }
|
|
42
|
+
// return mesh.getBBoxCorners();
|
|
43
|
+
// } else {
|
|
44
|
+
// return mesh.computeBBoxCorners(newPosition, newRotation);
|
|
45
|
+
// }
|
|
46
|
+
// });
|
|
47
|
+
//
|
|
48
|
+
// const points = (corners as any).flat();
|
|
49
|
+
// this._sceneService.removeObject(this.collisionMesh);
|
|
50
|
+
// const geo = new BufferGeometry().setFromPoints(points).rotateX(Math.PI / 2);
|
|
51
|
+
// // const mat = new MeshBasicMaterial({color: 'blue'});
|
|
52
|
+
// // this.collisionMesh = new Mesh(geo, mat);
|
|
53
|
+
// const material = new LineBasicMaterial({color: 'blue', linewidth: 5});
|
|
54
|
+
// // Create the final object to add to the scene
|
|
55
|
+
// this.collisionMesh = new Line(geo, material);
|
|
56
|
+
//
|
|
57
|
+
// this.collisionMesh.name = 'collision-mesh';
|
|
58
|
+
// this._sceneService.addObject(this.collisionMesh);
|
|
59
|
+
// }
|
|
60
|
+
/* end debugging */
|
|
61
|
+
const { valid, intersectsWall, obstructingObjects, noRooms } = validFloorplanPosition(newPosition, newRotation, piece, otherFurniture, floorplanRooms, orphanWalls);
|
|
62
|
+
if (valid && !obstructingObjects) {
|
|
63
|
+
return { valid };
|
|
64
|
+
}
|
|
65
|
+
else if (valid && obstructingObjects) {
|
|
66
|
+
return { valid, obstructingObjects };
|
|
67
|
+
}
|
|
68
|
+
else if (!valid && intersectsWall) {
|
|
69
|
+
if (noRooms) {
|
|
70
|
+
const groundIntersects = this._intersectionService.getIntersections(newPosition, [this._floorService.groundPlane]);
|
|
71
|
+
if (groundIntersects.length > 0) {
|
|
72
|
+
return { valid: true };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return { valid, intersectsWall };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// const wallPlanes: Mesh[] = this.model.getWallEdgePlanes();
|
|
80
|
+
this._origPosition.copy(piece.position);
|
|
81
|
+
this._origRotation.copy(piece.rotation);
|
|
82
|
+
if (newPosition) {
|
|
83
|
+
piece.position.copy(newPosition);
|
|
84
|
+
}
|
|
85
|
+
if (newRotation) {
|
|
86
|
+
piece.rotation.copy(newRotation);
|
|
87
|
+
}
|
|
88
|
+
piece.updateMatrix();
|
|
89
|
+
// const collides = rayCollides(piece, obstructingObjects, wallPlanes);
|
|
90
|
+
// const collides = deepCollides(piece, obstructingObjects, this._cachedMeshes);
|
|
91
|
+
if (newPosition) {
|
|
92
|
+
piece.position.copy(this._origPosition);
|
|
93
|
+
}
|
|
94
|
+
if (newRotation) {
|
|
95
|
+
piece.rotation.copy(this._origRotation);
|
|
96
|
+
}
|
|
97
|
+
piece.updateMatrix();
|
|
98
|
+
// TODO: Tidy up caching of positions
|
|
99
|
+
// if (!collides) {
|
|
100
|
+
// if (piece instanceof CustomMesh || piece instanceof Item) {
|
|
101
|
+
// this._cachedMeshes[piece.id] = piece.getBBoxCorners();
|
|
102
|
+
// } else {
|
|
103
|
+
// this._cachedMeshes[piece.id] = null;
|
|
104
|
+
// }
|
|
105
|
+
// }
|
|
106
|
+
//
|
|
107
|
+
// return { valid: !collides };
|
|
108
|
+
return { valid: !obstructingObjects };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
CollisionManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, deps: [{ token: i1.FloorplanService }, { token: i2.SceneService }, { token: i3.IntersectionService }, { token: i4.FloorService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
112
|
+
CollisionManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, providedIn: 'root' });
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CollisionManagerService, decorators: [{
|
|
114
|
+
type: Injectable,
|
|
115
|
+
args: [{
|
|
116
|
+
providedIn: 'root'
|
|
117
|
+
}]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.FloorplanService }, { type: i2.SceneService }, { type: i3.IntersectionService }, { type: i4.FloorService }]; } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGlzaW9uLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvY29yZTNkL2NvbGxpc2lvbi1tYW5hZ2VyL2NvbGxpc2lvbi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBUSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBV3ZFLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFDVSxpQkFBbUMsRUFDbkMsYUFBMkIsRUFDM0Isb0JBQXlDLEVBQ3pDLGFBQTJCO1FBSDNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQVg5QixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUcvQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBUXBDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsV0FBb0IsRUFDcEIsV0FBa0IsRUFDbEIsS0FBZ0IsRUFDaEIsZUFBNEIsRUFBRTtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxjQUFjLEdBQWdCLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFB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O1FBQ0osRUFBRTtRQUNGLCtCQUErQjtRQUMvQixPQUFPLEVBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLEVBQUMsQ0FBQztJQUN0QyxDQUFDOztxSEFySFUsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdWxlciwgTGluZSwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge3ZhbGlkRmxvb3JwbGFuUG9zaXRpb259IGZyb20gJy4vZmxvb3JwbGFuLWNvbGxpc2lvbi1kZXRlY3Rpb24nO1xyXG5pbXBvcnQge0Zsb29ycGxhblNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL2Zsb29ycGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7SW50ZXJzZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9pbnRlcnNlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2Zsb29yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Z1cm5pdHVyZX0gZnJvbSAnLi4vaXRlbXMvZnVybml0dXJlJztcclxuaW1wb3J0IHtDb2xsaXNpb25JbmZvfSBmcm9tICcuLi9tb2RlbC9jb2xsaXNpb24taW5mbyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsaXNpb25NYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBjaGVja0NvbGxpc2lvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBjb2xsaXNpb25NZXNoOiBMaW5lO1xyXG5cclxuICBwcml2YXRlIF9jYWNoZWRNZXNoZXM6IG9iamVjdCA9IHt9O1xyXG4gIHByaXZhdGUgX29yaWdQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XHJcbiAgcHJpdmF0ZSBfb3JpZ1JvdGF0aW9uID0gbmV3IEV1bGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmxvb3JwbGFuU2VydmljZTogRmxvb3JwbGFuU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW50ZXJzZWN0aW9uU2VydmljZTogSW50ZXJzZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yU2VydmljZTogRmxvb3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGVQb3NpdGlvbihcclxuICAgIG5ld1Bvc2l0aW9uOiBWZWN0b3IzLFxyXG4gICAgbmV3Um90YXRpb246IEV1bGVyLFxyXG4gICAgcGllY2U6IEZ1cm5pdHVyZSxcclxuICAgIGFsbEZ1cm5pdHVyZTogRnVybml0dXJlW10gPSBbXVxyXG4gICk6IENvbGxpc2lvbkluZm8ge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrQ29sbGlzaW9ucykge1xyXG4gICAgICByZXR1cm4ge3ZhbGlkOiB0cnVlfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG90aGVyRnVybml0dXJlOiBGdXJuaXR1cmVbXSA9IGFsbEZ1cm5pdHVyZS5maWx0ZXIoZiA9PiBmLnV1aWQgIT09IHBpZWNlLnV1aWQpO1xyXG4gICAgY29uc3QgZmxvb3JwbGFuUm9vbXMgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldFJvb21zKCk7XHJcbiAgICBjb25zdCBvcnBoYW5XYWxscyA9IHRoaXMuX2Zsb29ycGxhblNlcnZpY2UuZ2V0T3JwaGFuV2FsbHMoKTtcclxuXHJcbiAgICAvKlxyXG4gICAgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgdW5jb21tZW50IHRvIHZpc3VhbGl6ZSBib3VuZGluZyBib3hlc1xyXG4gICAgICovXHJcbiAgICAvLyBpZiAodGhpcy5fc2NlbmVTZXJ2aWNlKSB7XHJcbiAgICAvLyAgIGNvbnN0IG1lc2hlcyA9IHBpZWNlLmdldFZpc2libGVNZXNoZXNQYXJlbnRzKCk7XHJcbiAgICAvLyAgIGNvbnN0IGNvcm5lcnMgPSBtZXNoZXMubWFwKChtZXNoOiBJdGVtIHwgQ3VzdG9tTWVzaCkgPT4ge1xyXG4gICAgLy8gICAgIGlmIChtZXNoIGluc3RhbmNlb2YgQ3VzdG9tTWVzaCkge1xyXG4gICAgLy8gICAgICAgaWYgKG5ld1Bvc2l0aW9uKSB7XHJcbiAgICAvLyAgICAgICAgIHBpZWNlLndhbnRzUm90YXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBtZXNoLm1vdmVCQm94Q29ybmVycyhuZXdQb3NpdGlvbik7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICBpZiAobmV3Um90YXRpb24pIHtcclxuICAgIC8vICAgICAgICAgcGllY2Uud2FudHNSb3RhdGlvbiA9IG5ld1JvdGF0aW9uO1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gbWVzaC5yb3RhdGVCQm94Q29ybmVycyhuZXdSb3RhdGlvbik7XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgICByZXR1cm4gbWVzaC5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICByZXR1cm4gbWVzaC5jb21wdXRlQkJveENvcm5lcnMobmV3UG9zaXRpb24sIG5ld1JvdGF0aW9uKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy9cclxuICAgIC8vICAgY29uc3QgcG9pbnRzID0gKGNvcm5lcnMgYXMgYW55KS5mbGF0KCk7XHJcbiAgICAvLyAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QodGhpcy5jb2xsaXNpb25NZXNoKTtcclxuICAgIC8vICAgY29uc3QgZ2VvID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyhwb2ludHMpLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgLy8gICAvLyBjb25zdCBtYXQgPSBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoe2NvbG9yOiAnYmx1ZSd9KTtcclxuICAgIC8vICAgLy8gdGhpcy5jb2xsaXNpb25NZXNoID0gbmV3IE1lc2goZ2VvLCBtYXQpO1xyXG4gICAgLy8gICBjb25zdCBtYXRlcmlhbCA9IG5ldyBMaW5lQmFzaWNNYXRlcmlhbCh7Y29sb3I6ICdibHVlJywgbGluZXdpZHRoOiA1fSk7XHJcbiAgICAvLyAgIC8vIENyZWF0ZSB0aGUgZmluYWwgb2JqZWN0IHRvIGFkZCB0byB0aGUgc2NlbmVcclxuICAgIC8vICAgdGhpcy5jb2xsaXNpb25NZXNoID0gbmV3IExpbmUoZ2VvLCBtYXRlcmlhbCk7XHJcbiAgICAvL1xyXG4gICAgLy8gICB0aGlzLmNvbGxpc2lvbk1lc2gubmFtZSA9ICdjb2xsaXNpb24tbWVzaCc7XHJcbiAgICAvLyAgIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QodGhpcy5jb2xsaXNpb25NZXNoKTtcclxuICAgIC8vIH1cclxuICAgIC8qIGVuZCBkZWJ1Z2dpbmcgICAgICovXHJcblxyXG4gICAgY29uc3Qge3ZhbGlkLCBpbnRlcnNlY3RzV2FsbCwgb2JzdHJ1Y3RpbmdPYmplY3RzLCBub1Jvb21zfSA9IHZhbGlkRmxvb3JwbGFuUG9zaXRpb24oXHJcbiAgICAgIG5ld1Bvc2l0aW9uLCBuZXdSb3RhdGlvbiwgcGllY2UsIG90aGVyRnVybml0dXJlLCBmbG9vcnBsYW5Sb29tcywgb3JwaGFuV2FsbHNcclxuICAgICk7XHJcbiAgICBpZiAodmFsaWQgJiYgIW9ic3RydWN0aW5nT2JqZWN0cykge1xyXG4gICAgICByZXR1cm4ge3ZhbGlkfTtcclxuICAgIH0gZWxzZSBpZiAodmFsaWQgJiYgb2JzdHJ1Y3RpbmdPYmplY3RzKSB7XHJcbiAgICAgIHJldHVybiB7dmFsaWQsIG9ic3RydWN0aW5nT2JqZWN0c307XHJcbiAgICB9IGVsc2UgaWYgKCF2YWxpZCAmJiBpbnRlcnNlY3RzV2FsbCkge1xyXG4gICAgICBpZiAobm9Sb29tcykge1xyXG4gICAgICAgIGNvbnN0IGdyb3VuZEludGVyc2VjdHMgPSB0aGlzLl9pbnRlcnNlY3Rpb25TZXJ2aWNlLmdldEludGVyc2VjdGlvbnMobmV3UG9zaXRpb24sIFt0aGlzLl9mbG9vclNlcnZpY2UuZ3JvdW5kUGxhbmVdKTtcclxuICAgICAgICBpZiAoZ3JvdW5kSW50ZXJzZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4ge3ZhbGlkOiB0cnVlfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHt2YWxpZCwgaW50ZXJzZWN0c1dhbGx9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc3Qgd2FsbFBsYW5lczogTWVzaFtdID0gdGhpcy5tb2RlbC5nZXRXYWxsRWRnZVBsYW5lcygpO1xyXG4gICAgdGhpcy5fb3JpZ1Bvc2l0aW9uLmNvcHkocGllY2UucG9zaXRpb24pO1xyXG4gICAgdGhpcy5fb3JpZ1JvdGF0aW9uLmNvcHkocGllY2Uucm90YXRpb24pO1xyXG5cclxuICAgIGlmIChuZXdQb3NpdGlvbikge1xyXG4gICAgICBwaWVjZS5wb3NpdGlvbi5jb3B5KG5ld1Bvc2l0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChuZXdSb3RhdGlvbikge1xyXG4gICAgICBwaWVjZS5yb3RhdGlvbi5jb3B5KG5ld1JvdGF0aW9uKTtcclxuICAgIH1cclxuICAgIHBpZWNlLnVwZGF0ZU1hdHJpeCgpO1xyXG5cclxuICAgIC8vIGNvbnN0IGNvbGxpZGVzID0gcmF5Q29sbGlkZXMocGllY2UsIG9ic3RydWN0aW5nT2JqZWN0cywgd2FsbFBsYW5lcyk7XHJcbiAgICAvLyBjb25zdCBjb2xsaWRlcyA9IGRlZXBDb2xsaWRlcyhwaWVjZSwgb2JzdHJ1Y3RpbmdPYmplY3RzLCB0aGlzLl9jYWNoZWRNZXNoZXMpO1xyXG5cclxuICAgIGlmIChuZXdQb3NpdGlvbikge1xyXG4gICAgICBwaWVjZS5wb3NpdGlvbi5jb3B5KHRoaXMuX29yaWdQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3Um90YXRpb24pIHtcclxuICAgICAgcGllY2Uucm90YXRpb24uY29weSh0aGlzLl9vcmlnUm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgcGllY2UudXBkYXRlTWF0cml4KCk7XHJcblxyXG4gICAgLy8gVE9ETzogVGlkeSB1cCBjYWNoaW5nIG9mIHBvc2l0aW9uc1xyXG4gICAgLy8gaWYgKCFjb2xsaWRlcykge1xyXG4gICAgLy8gICBpZiAocGllY2UgaW5zdGFuY2VvZiBDdXN0b21NZXNoIHx8IHBpZWNlIGluc3RhbmNlb2YgSXRlbSkge1xyXG4gICAgLy8gICAgIHRoaXMuX2NhY2hlZE1lc2hlc1twaWVjZS5pZF0gPSBwaWVjZS5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgLy8gICB9IGVsc2Uge1xyXG4gICAgLy8gICAgIHRoaXMuX2NhY2hlZE1lc2hlc1twaWVjZS5pZF0gPSBudWxsO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gcmV0dXJuIHsgdmFsaWQ6ICFjb2xsaWRlcyB9O1xyXG4gICAgcmV0dXJuIHt2YWxpZDogIW9ic3RydWN0aW5nT2JqZWN0c307XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Vector2 } from 'three';
|
|
2
|
+
import { CustomMesh } from '../items/custom-objects';
|
|
3
|
+
import { ItemGroup } from '../items/item-group';
|
|
4
|
+
import { Utils } from '../core/utils';
|
|
5
|
+
// checks if given corners of mesh are inside a room
|
|
6
|
+
function meshInRoom(corners, rooms) {
|
|
7
|
+
let insideRoom = false;
|
|
8
|
+
for (let i = 0; i < rooms.length; i++) {
|
|
9
|
+
const room = rooms[i];
|
|
10
|
+
const interiorCorners = room.getInteriorCorners();
|
|
11
|
+
if (Utils.polygonInsidePolygon(corners, interiorCorners)) {
|
|
12
|
+
insideRoom = true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return insideRoom;
|
|
16
|
+
}
|
|
17
|
+
// returns list of rooms an item defined by corners belongs to
|
|
18
|
+
function roomsContainingMesh(meshPosition, rooms) {
|
|
19
|
+
return rooms.reduce((belongsTo, room) => {
|
|
20
|
+
const interiorCorners = room.getInteriorCorners();
|
|
21
|
+
if (Utils.pointInPolygon(meshPosition.x, meshPosition.z, interiorCorners)) {
|
|
22
|
+
return belongsTo.concat(room);
|
|
23
|
+
}
|
|
24
|
+
return belongsTo;
|
|
25
|
+
}, []);
|
|
26
|
+
}
|
|
27
|
+
function edgeIsObstructingMesh(meshCorners, edge) {
|
|
28
|
+
const edgeCorners = edge.corners().map(corner => {
|
|
29
|
+
return new Vector2(corner.x, corner.y);
|
|
30
|
+
});
|
|
31
|
+
for (const mCorners of meshCorners) {
|
|
32
|
+
if (Utils.polygonPolygonIntersect(mCorners, edgeCorners)) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
function objectsObstructingMesh(meshGroup, meshCorners, objects) {
|
|
39
|
+
return objects.reduce((obstructing, object) => {
|
|
40
|
+
if (object !== meshGroup && object.obstructFloorMoves) {
|
|
41
|
+
const children = object.getVisibleMeshesParents();
|
|
42
|
+
for (let i = 0; i < children.length; i++) {
|
|
43
|
+
const child = children[i];
|
|
44
|
+
const childCorners = child.getBBoxCorners();
|
|
45
|
+
const isInside = Utils.polygonInsidePolygon(meshCorners, childCorners) ||
|
|
46
|
+
Utils.polygonInsidePolygon(childCorners, meshCorners);
|
|
47
|
+
if (isInside || Utils.polygonPolygonIntersect(meshCorners, childCorners)) {
|
|
48
|
+
obstructing.push(object);
|
|
49
|
+
break; // already found obstruction, so might as well break
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return obstructing;
|
|
54
|
+
}, []);
|
|
55
|
+
}
|
|
56
|
+
function includeItemGroupAsItems(objects) {
|
|
57
|
+
const result = [];
|
|
58
|
+
for (let i = 0; i < objects.length; i++) {
|
|
59
|
+
if (objects[i] instanceof ItemGroup) {
|
|
60
|
+
objects[i].children.forEach(child => result.push(child));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
result.push(objects[i]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
function uniqueCorners(value, index, self) {
|
|
69
|
+
return self.indexOf(value) === index;
|
|
70
|
+
}
|
|
71
|
+
export function validFloorplanPosition(newPosition, newRotation, meshGroup, objects = [], floorplanRooms, orphanWalls) {
|
|
72
|
+
// if there is no room, then there's possibly some imported room (glb)
|
|
73
|
+
if (floorplanRooms.length === 0) {
|
|
74
|
+
return { valid: false, noRooms: true };
|
|
75
|
+
}
|
|
76
|
+
const meshes = meshGroup.getVisibleMeshesParents();
|
|
77
|
+
let corners = meshes.map((mesh) => {
|
|
78
|
+
if (mesh instanceof CustomMesh) {
|
|
79
|
+
if (newPosition) {
|
|
80
|
+
meshGroup.wantsRotation = undefined;
|
|
81
|
+
return mesh.moveBBoxCorners(newPosition);
|
|
82
|
+
}
|
|
83
|
+
if (newRotation) {
|
|
84
|
+
meshGroup.wantsRotation = newRotation;
|
|
85
|
+
return mesh.rotateBBoxCorners(newRotation);
|
|
86
|
+
}
|
|
87
|
+
return mesh.getBBoxCorners();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return mesh.computeBBoxCorners(newPosition, newRotation);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// remove duplicates
|
|
94
|
+
corners = corners.filter((v, i, a) => a.findIndex(f => JSON.stringify(f) === JSON.stringify(v)) === i);
|
|
95
|
+
// ensure that every mesh is inside a room
|
|
96
|
+
let inRoom = true;
|
|
97
|
+
for (let i = 0; i < corners.length; i++) {
|
|
98
|
+
if (!meshInRoom(corners[i], floorplanRooms)) {
|
|
99
|
+
inRoom = false;
|
|
100
|
+
break; // mesh is placed out of room, get out
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (!inRoom) {
|
|
104
|
+
return { valid: false, intersectsWall: true };
|
|
105
|
+
}
|
|
106
|
+
const inRooms = meshes.reduce((rooms, mesh) => {
|
|
107
|
+
return rooms.concat(roomsContainingMesh(mesh.localAnchor(newPosition), floorplanRooms));
|
|
108
|
+
}, []);
|
|
109
|
+
// check whether mesh intersects inner rooms walls
|
|
110
|
+
const maxRoomArea = inRooms.reduce((max, room) => Math.max(max, room.area), 0);
|
|
111
|
+
const accountedRooms = floorplanRooms.filter(room => room.area <= maxRoomArea);
|
|
112
|
+
for (const room of accountedRooms) {
|
|
113
|
+
for (const meshCorners of corners) {
|
|
114
|
+
if (Utils.polygonPolygonIntersect(room.getInteriorCorners(), meshCorners)) {
|
|
115
|
+
return { valid: false, intersectsWall: true };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// check whether mesh intersects any inner walls
|
|
120
|
+
for (const wall of orphanWalls) {
|
|
121
|
+
if ((wall.frontEdge && edgeIsObstructingMesh(corners, wall.frontEdge)) ||
|
|
122
|
+
(wall.backEdge && edgeIsObstructingMesh(corners, wall.backEdge))) {
|
|
123
|
+
return { valid: false, intersectsWall: true };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// check whether other objects get in the way
|
|
127
|
+
if (typeof meshGroup.obstructFloorMoves === 'boolean' && meshGroup.obstructFloorMoves === false) {
|
|
128
|
+
objects = [];
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
objects = includeItemGroupAsItems(objects).filter((item) => item !== meshGroup && item.obstructFloorMoves);
|
|
132
|
+
}
|
|
133
|
+
if (!objects.length) {
|
|
134
|
+
return { valid: true };
|
|
135
|
+
}
|
|
136
|
+
// check whether there are any other objects obstructing mesh
|
|
137
|
+
// const obstructing = meshes.reduce((o, mesh, index) =>
|
|
138
|
+
// o.concat(objectsObstructingMesh(meshGroup, corners[index], objects)), []);
|
|
139
|
+
const obstructing = [];
|
|
140
|
+
for (let i = 0; i < corners.length; i++) {
|
|
141
|
+
const obstructingMeshes = objectsObstructingMesh(meshGroup, corners[i], objects);
|
|
142
|
+
if (obstructingMeshes.length > 0) {
|
|
143
|
+
for (let j = 0; j < obstructingMeshes.length; j++) {
|
|
144
|
+
if (obstructing.indexOf(obstructingMeshes[j]) < 0) {
|
|
145
|
+
obstructing.push(obstructingMeshes[j]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return obstructing.length
|
|
151
|
+
? (obstructing.length === 1
|
|
152
|
+
? (meshGroup.canElevate && obstructing[0].stackable ?
|
|
153
|
+
{ valid: true, obstructingObjects: obstructing } :
|
|
154
|
+
{ valid: false, obstructingObjects: obstructing })
|
|
155
|
+
: { valid: false, obstructingObjects: obstructing })
|
|
156
|
+
: { valid: true };
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvb3JwbGFuLWNvbGxpc2lvbi1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9jb2xsaXNpb24tbWFuYWdlci9mbG9vcnBsYW4tY29sbGlzaW9uLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVEsT0FBTyxFQUFVLE1BQU0sT0FBTyxDQUFDO0FBRTlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdwQyxvREFBb0Q7QUFDcEQsU0FBUyxVQUFVLENBQUMsT0FBa0IsRUFBRSxLQUFhO0lBQ25ELElBQUksVUFBVSxHQUFZLEtBQUssQ0FBQztJQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLElBQUksR0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEQsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFFO1lBQ3hELFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDbkI7S0FDRjtJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsU0FBUyxtQkFBbUIsQ0FBQyxZQUFxQixFQUFFLEtBQWE7SUFDL0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBaUIsRUFBRSxJQUFVLEVBQVUsRUFBRTtRQUM1RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENB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QUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixHQUFnQixzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlGLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pELFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLFdBQVcsQ0FBQyxNQUFNO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkQsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdWxlciwgVmVjdG9yMiwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0hhbGZFZGdlLCBSb29tLCBXYWxsfSBmcm9tICcuLi9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5pbXBvcnQge0N1c3RvbU1lc2h9IGZyb20gJy4uL2l0ZW1zL2N1c3RvbS1vYmplY3RzJztcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuLi9pdGVtcy9pdGVtJztcclxuaW1wb3J0IHtJdGVtR3JvdXB9IGZyb20gJy4uL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHtGdXJuaXR1cmV9IGZyb20gJy4uL2l0ZW1zL2Z1cm5pdHVyZSc7XHJcblxyXG4vLyBjaGVja3MgaWYgZ2l2ZW4gY29ybmVycyBvZiBtZXNoIGFyZSBpbnNpZGUgYSByb29tXHJcbmZ1bmN0aW9uIG1lc2hJblJvb20oY29ybmVyczogVmVjdG9yMltdLCByb29tczogUm9vbVtdKTogYm9vbGVhbiB7XHJcbiAgbGV0IGluc2lkZVJvb206IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvb21zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCByb29tOiBSb29tID0gcm9vbXNbaV07XHJcbiAgICBjb25zdCBpbnRlcmlvckNvcm5lcnMgPSByb29tLmdldEludGVyaW9yQ29ybmVycygpO1xyXG4gICAgaWYgKFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKGNvcm5lcnMsIGludGVyaW9yQ29ybmVycykpIHtcclxuICAgICAgaW5zaWRlUm9vbSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBpbnNpZGVSb29tO1xyXG59XHJcblxyXG4vLyByZXR1cm5zIGxpc3Qgb2Ygcm9vbXMgYW4gaXRlbSBkZWZpbmVkIGJ5IGNvcm5lcnMgYmVsb25ncyB0b1xyXG5mdW5jdGlvbiByb29tc0NvbnRhaW5pbmdNZXNoKG1lc2hQb3NpdGlvbjogVmVjdG9yMywgcm9vbXM6IFJvb21bXSk6IFJvb21bXSB7XHJcbiAgcmV0dXJuIHJvb21zLnJlZHVjZSgoYmVsb25nc1RvOiBSb29tW10sIHJvb206IFJvb20pOiBSb29tW10gPT4ge1xyXG4gICAgY29uc3QgaW50ZXJpb3JDb3JuZXJzID0gcm9vbS5nZXRJbnRlcmlvckNvcm5lcnMoKTtcclxuICAgIGlmIChVdGlscy5wb2ludEluUG9seWdvbihtZXNoUG9zaXRpb24ueCwgbWVzaFBvc2l0aW9uLnosIGludGVyaW9yQ29ybmVycykpIHtcclxuICAgICAgcmV0dXJuIGJlbG9uZ3NUby5jb25jYXQocm9vbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmVsb25nc1RvO1xyXG4gIH0sIFtdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZWRnZUlzT2JzdHJ1Y3RpbmdNZXNoKG1lc2hDb3JuZXJzOiBWZWN0b3IyW11bXSwgZWRnZTogSGFsZkVkZ2UpOiBib29sZWFuIHtcclxuICBjb25zdCBlZGdlQ29ybmVycyA9IGVkZ2UuY29ybmVycygpLm1hcChjb3JuZXIgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IyKGNvcm5lci54LCBjb3JuZXIueSk7XHJcbiAgfSk7XHJcblxyXG4gIGZvciAoY29uc3QgbUNvcm5lcnMgb2YgbWVzaENvcm5lcnMpIHtcclxuICAgIGlmIChVdGlscy5wb2x5Z29uUG9seWdvbkludGVyc2VjdChtQ29ybmVycywgZWRnZUNvcm5lcnMpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvYmplY3RzT2JzdHJ1Y3RpbmdNZXNoKG1lc2hHcm91cCwgbWVzaENvcm5lcnMsIG9iamVjdHMpOiBGdXJuaXR1cmVbXSB7XHJcbiAgcmV0dXJuIG9iamVjdHMucmVkdWNlKChvYnN0cnVjdGluZywgb2JqZWN0KSA9PiB7XHJcbiAgICBpZiAob2JqZWN0ICE9PSBtZXNoR3JvdXAgJiYgb2JqZWN0Lm9ic3RydWN0Rmxvb3JNb3Zlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG9iamVjdC5nZXRWaXNpYmxlTWVzaGVzUGFyZW50cygpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZDogSXRlbSB8IEN1c3RvbU1lc2ggPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBjb25zdCBjaGlsZENvcm5lcnMgPSBjaGlsZC5nZXRCQm94Q29ybmVycygpO1xyXG4gICAgICAgIGNvbnN0IGlzSW5zaWRlXHJcbiAgICAgICAgICA9IFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKG1lc2hDb3JuZXJzLCBjaGlsZENvcm5lcnMpIHx8XHJcbiAgICAgICAgICAgIFV0aWxzLnBvbHlnb25JbnNpZGVQb2x5Z29uKGNoaWxkQ29ybmVycywgbWVzaENvcm5lcnMpO1xyXG4gICAgICAgIGlmIChpc0luc2lkZSB8fCBVdGlscy5wb2x5Z29uUG9seWdvbkludGVyc2VjdChtZXNoQ29ybmVycywgY2hpbGRDb3JuZXJzKSkge1xyXG4gICAgICAgICAgb2JzdHJ1Y3RpbmcucHVzaChvYmplY3QpO1xyXG4gICAgICAgICAgYnJlYWs7IC8vIGFscmVhZHkgZm91bmQgb2JzdHJ1Y3Rpb24sIHNvIG1pZ2h0IGFzIHdlbGwgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvYnN0cnVjdGluZztcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluY2x1ZGVJdGVtR3JvdXBBc0l0ZW1zKG9iamVjdHMpOiBGdXJuaXR1cmVbXSB7XHJcbiAgY29uc3QgcmVzdWx0OiBGdXJuaXR1cmVbXSA9IFtdO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKG9iamVjdHNbaV0gaW5zdGFuY2VvZiBJdGVtR3JvdXApIHtcclxuICAgICAgb2JqZWN0c1tpXS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHJlc3VsdC5wdXNoKGNoaWxkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHQucHVzaChvYmplY3RzW2ldKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gdW5pcXVlQ29ybmVycyh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcclxuICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZEZsb29ycGxhblBvc2l0aW9uKFxyXG4gIG5ld1Bvc2l0aW9uOiBWZWN0b3IzLFxyXG4gIG5ld1JvdGF0aW9uOiBFdWxlcixcclxuICBtZXNoR3JvdXA6IEZ1cm5pdHVyZSxcclxuICBvYmplY3RzOiBGdXJuaXR1cmVbXSA9IFtdLFxyXG4gIGZsb29ycGxhblJvb21zOiBSb29tW10sXHJcbiAgb3JwaGFuV2FsbHM6IFdhbGxbXVxyXG4pOiB7XHJcbiAgdmFsaWQ6IGJvb2xlYW4sXHJcbiAgaW50ZXJzZWN0c1dhbGw/OiBib29sZWFuLFxyXG4gIG9ic3RydWN0aW5nT2JqZWN0cz86IEZ1cm5pdHVyZVtdLFxyXG4gIG5vUm9vbXM/OiBib29sZWFuXHJcbn0ge1xyXG4gIC8vIGlmIHRoZXJlIGlzIG5vIHJvb20sIHRoZW4gdGhlcmUncyBwb3NzaWJseSBzb21lIGltcG9ydGVkIHJvb20gKGdsYilcclxuICBpZiAoZmxvb3JwbGFuUm9vbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIG5vUm9vbXM6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1lc2hlcyA9IG1lc2hHcm91cC5nZXRWaXNpYmxlTWVzaGVzUGFyZW50cygpO1xyXG4gIGxldCBjb3JuZXJzID0gbWVzaGVzLm1hcCgobWVzaDogSXRlbSB8IEN1c3RvbU1lc2gpID0+IHtcclxuICAgIGlmIChtZXNoIGluc3RhbmNlb2YgQ3VzdG9tTWVzaCkge1xyXG4gICAgICBpZiAobmV3UG9zaXRpb24pIHtcclxuICAgICAgICBtZXNoR3JvdXAud2FudHNSb3RhdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gbWVzaC5tb3ZlQkJveENvcm5lcnMobmV3UG9zaXRpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdSb3RhdGlvbikge1xyXG4gICAgICAgIG1lc2hHcm91cC53YW50c1JvdGF0aW9uID0gbmV3Um90YXRpb247XHJcbiAgICAgICAgcmV0dXJuIG1lc2gucm90YXRlQkJveENvcm5lcnMobmV3Um90YXRpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtZXNoLmdldEJCb3hDb3JuZXJzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbWVzaC5jb21wdXRlQkJveENvcm5lcnMobmV3UG9zaXRpb24sIG5ld1JvdGF0aW9uKTtcclxuICAgIH1cclxuICB9KTtcclxuICAvLyByZW1vdmUgZHVwbGljYXRlc1xyXG4gIGNvcm5lcnMgPSBjb3JuZXJzLmZpbHRlcigodiwgaSwgYSkgPT4gYS5maW5kSW5kZXgoZiA9PiBKU09OLnN0cmluZ2lmeShmKSA9PT0gSlNPTi5zdHJpbmdpZnkodikpID09PSBpKTtcclxuXHJcbiAgLy8gZW5zdXJlIHRoYXQgZXZlcnkgbWVzaCBpcyBpbnNpZGUgYSByb29tXHJcbiAgbGV0IGluUm9vbTogYm9vbGVhbiA9IHRydWU7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3JuZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoIW1lc2hJblJvb20oY29ybmVyc1tpXSwgZmxvb3JwbGFuUm9vbXMpKSB7XHJcbiAgICAgIGluUm9vbSA9IGZhbHNlO1xyXG4gICAgICBicmVhazsgLy8gbWVzaCBpcyBwbGFjZWQgb3V0IG9mIHJvb20sIGdldCBvdXRcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKCFpblJvb20pIHtcclxuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgaW50ZXJzZWN0c1dhbGw6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGluUm9vbXMgPSBtZXNoZXMucmVkdWNlKChyb29tcywgbWVzaDogSXRlbSB8IEN1c3RvbU1lc2gpID0+IHtcclxuICAgIHJldHVybiByb29tcy5jb25jYXQoXHJcbiAgICAgIHJvb21zQ29udGFpbmluZ01lc2gobWVzaC5sb2NhbEFuY2hvcihuZXdQb3NpdGlvbiksIGZsb29ycGxhblJvb21zKVxyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIC8vIGNoZWNrIHdoZXRoZXIgbWVzaCBpbnRlcnNlY3RzIGlubmVyIHJvb21zIHdhbGxzXHJcbiAgY29uc3QgbWF4Um9vbUFyZWEgPSBpblJvb21zLnJlZHVjZSgobWF4LCByb29tKSA9PiBNYXRoLm1heChtYXgsIHJvb20uYXJlYSksIDApO1xyXG4gIGNvbnN0IGFjY291bnRlZFJvb21zID0gZmxvb3JwbGFuUm9vbXMuZmlsdGVyKHJvb20gPT4gcm9vbS5hcmVhIDw9IG1heFJvb21BcmVhKTtcclxuICBmb3IgKGNvbnN0IHJvb20gb2YgYWNjb3VudGVkUm9vbXMpIHtcclxuICAgIGZvciAoY29uc3QgbWVzaENvcm5lcnMgb2YgY29ybmVycykge1xyXG4gICAgICBpZiAoVXRpbHMucG9seWdvblBvbHlnb25JbnRlcnNlY3Qocm9vbS5nZXRJbnRlcmlvckNvcm5lcnMoKSwgbWVzaENvcm5lcnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBpbnRlcnNlY3RzV2FsbDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIG1lc2ggaW50ZXJzZWN0cyBhbnkgaW5uZXIgd2FsbHNcclxuICBmb3IgKGNvbnN0IHdhbGwgb2Ygb3JwaGFuV2FsbHMpIHtcclxuICAgIGlmIChcclxuICAgICAgKHdhbGwuZnJvbnRFZGdlICYmIGVkZ2VJc09ic3RydWN0aW5nTWVzaChjb3JuZXJzLCB3YWxsLmZyb250RWRnZSkpIHx8XHJcbiAgICAgICh3YWxsLmJhY2tFZGdlICYmIGVkZ2VJc09ic3RydWN0aW5nTWVzaChjb3JuZXJzLCB3YWxsLmJhY2tFZGdlKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGludGVyc2VjdHNXYWxsOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIG90aGVyIG9iamVjdHMgZ2V0IGluIHRoZSB3YXlcclxuICBpZiAodHlwZW9mIG1lc2hHcm91cC5vYnN0cnVjdEZsb29yTW92ZXMgPT09ICdib29sZWFuJyAmJiBtZXNoR3JvdXAub2JzdHJ1Y3RGbG9vck1vdmVzID09PSBmYWxzZSkge1xyXG4gICAgb2JqZWN0cyA9IFtdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBvYmplY3RzID0gaW5jbHVkZUl0ZW1Hcm91cEFzSXRlbXMob2JqZWN0cykuZmlsdGVyKChpdGVtOiBGdXJuaXR1cmUpID0+XHJcbiAgICAgIGl0ZW0gIT09IG1lc2hHcm91cCAmJiBpdGVtLm9ic3RydWN0Rmxvb3JNb3Zlcyk7XHJcbiAgfVxyXG4gIGlmICghb2JqZWN0cy5sZW5ndGgpIHtcclxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIgb2JqZWN0cyBvYnN0cnVjdGluZyBtZXNoXHJcbiAgLy8gY29uc3Qgb2JzdHJ1Y3RpbmcgPSBtZXNoZXMucmVkdWNlKChvLCBtZXNoLCBpbmRleCkgPT5cclxuICAvLyAgIG8uY29uY2F0KG9iamVjdHNPYnN0cnVjdGluZ01lc2gobWVzaEdyb3VwLCBjb3JuZXJzW2luZGV4XSwgb2JqZWN0cykpLCBbXSk7XHJcbiAgY29uc3Qgb2JzdHJ1Y3RpbmcgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcm5lcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IG9ic3RydWN0aW5nTWVzaGVzOiBGdXJuaXR1cmVbXSA9IG9iamVjdHNPYnN0cnVjdGluZ01lc2gobWVzaEdyb3VwLCBjb3JuZXJzW2ldLCBvYmplY3RzKTtcclxuICAgIGlmIChvYnN0cnVjdGluZ01lc2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgb2JzdHJ1Y3RpbmdNZXNoZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAob2JzdHJ1Y3RpbmcuaW5kZXhPZihvYnN0cnVjdGluZ01lc2hlc1tqXSkgPCAwKSB7XHJcbiAgICAgICAgICBvYnN0cnVjdGluZy5wdXNoKG9ic3RydWN0aW5nTWVzaGVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBvYnN0cnVjdGluZy5sZW5ndGhcclxuICAgID8gKG9ic3RydWN0aW5nLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IChtZXNoR3JvdXAuY2FuRWxldmF0ZSAmJiBvYnN0cnVjdGluZ1swXS5zdGFja2FibGUgP1xyXG4gICAgICAgIHsgdmFsaWQ6IHRydWUsIG9ic3RydWN0aW5nT2JqZWN0czogb2JzdHJ1Y3RpbmcgfSA6XHJcbiAgICAgICAgeyB2YWxpZDogZmFsc2UsIG9ic3RydWN0aW5nT2JqZWN0czogb2JzdHJ1Y3Rpbmd9KVxyXG4gICAgICA6IHsgdmFsaWQ6IGZhbHNlLCBvYnN0cnVjdGluZ09iamVjdHM6IG9ic3RydWN0aW5nIH0pXHJcbiAgICA6IHsgdmFsaWQ6IHRydWUgfTtcclxufVxyXG4iXX0=
|