@colijnit/homedecorator 262.1.4 → 262.1.6
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/app/plugins/render/render-controls/input-slider/input-slider.component.scss +117 -0
- package/app/plugins/render/render-controls/render-controls.component.scss +4 -40
- package/fesm2022/colijnit-homedecorator.mjs +529 -458
- package/fesm2022/colijnit-homedecorator.mjs.map +1 -1
- package/index.d.ts +58 -38
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Pipe, Component, Inject, Input, HostBinding, Optional, ViewChild, EventEmitter, ElementRef, Output, Directive, ChangeDetectionStrategy,
|
|
2
|
+
import { Injectable, Pipe, Component, Inject, Input, HostBinding, Optional, ViewChild, EventEmitter, ElementRef, Output, Directive, ChangeDetectionStrategy, ViewEncapsulation, HostListener, SkipSelf, Self, NgModule, NO_ERRORS_SCHEMA, forwardRef } from '@angular/core';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { Vector2, Mesh, Object3D, PointLight, Matrix4, Box3, Vector3, Euler, BoxGeometry, MeshBasicMaterial, Scene, AxesHelper, Group, BufferGeometry, Float32BufferAttribute, Line, LineBasicMaterial, CylinderGeometry, EquirectangularReflectionMapping, Material as Material$1, Texture as Texture$1, Source, EventDispatcher, Color, PerspectiveCamera, Quaternion, PlaneGeometry, DoubleSide, MeshStandardMaterial, RingGeometry, MathUtils, Raycaster, DataTexture, UnsignedByteType, LinearFilter, Shape, LinearSRGBColorSpace, SRGBColorSpace, SphereGeometry, PCFSoftShadowMap, ShadowMaterial, LightProbe, DirectionalLight, MeshPhongMaterial, BackSide, FrontSide, NoToneMapping, ReinhardToneMapping, CineonToneMapping, ACESFilmicToneMapping, CustomToneMapping, NeutralToneMapping, BasicShadowMap, PCFShadowMap, VSMShadowMap, OrthographicCamera, WebGLRenderer, TextureLoader, EllipseCurve, ArcCurve, NearestFilter, MeshPhysicalMaterial, Path, ShapeGeometry, ConeGeometry, ObjectLoader, Light, Camera as Camera$1, RepeatWrapping, SpotLight, AmbientLight, HemisphereLight, AdditiveBlending, LineSegments, EdgesGeometry, CircleGeometry, ExtrudeGeometry, InstancedMesh, Clock, AnimationMixer, AnimationClip, BufferAttribute, NoColorSpace, ArrowHelper as ArrowHelper$1, UVMapping, CubeReflectionMapping, CubeRefractionMapping, EquirectangularRefractionMapping, CubeUVReflectionMapping, NearestMipmapNearestFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipMapLinearFilter, LinearMipmapNearestFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipMapLinearFilter, AlphaFormat, RGBAFormat, DepthFormat, DepthStencilFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, ByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt248Type, ClampToEdgeWrapping, MirroredRepeatWrapping, ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstAlphaFactor, OneMinusDstAlphaFactor, DstColorFactor, OneMinusDstColorFactor, AddEquation, SubtractEquation, ReverseSubtractEquation, MinEquation, MaxEquation, NoBlending, NormalBlending, SubtractiveBlending, MultiplyBlending, CustomBlending, TangentSpaceNormalMap, ObjectSpaceNormalMap, ZeroStencilOp, KeepStencilOp, ReplaceStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp, InvertStencilOp, NeverStencilFunc, LessStencilFunc, EqualStencilFunc, LessEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc, GreaterEqualStencilFunc, AlwaysStencilFunc, SpotLightHelper, DirectionalLightHelper, HemisphereLightHelper, PointLightHelper, GridHelper, PMREMGenerator, BoxHelper } from 'three';
|
|
5
5
|
import { BehaviorSubject, Subject, Observable, throwError, ReplaySubject, combineLatest, filter as filter$1, take as take$1, from } from 'rxjs';
|
|
@@ -43,9 +43,7 @@ import { XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerM
|
|
|
43
43
|
import { RGBFormat, LinearToneMapping, AgXToneMapping, LinearFilter as LinearFilter$1, LinearSRGBColorSpace as LinearSRGBColorSpace$1, SrcAlphaSaturateFactor, FloatType as FloatType$1 } from 'three/src/constants.js';
|
|
44
44
|
import md5 from 'md5';
|
|
45
45
|
import { NodeType } from '@colijnit/configuratorapi/build/enum/node-type.enum';
|
|
46
|
-
import { ConfiguratorStatisticsEnvironment } from '@colijnit/configuratorapi/build/model/configurator-statistics-environment';
|
|
47
46
|
import { Options } from '@colijnit/ioneconnector/build/model/options';
|
|
48
|
-
import { FrozenArticle } from '@colijnit/configuratorapi/build/model/frozen-article';
|
|
49
47
|
import { SelectorWithOptions } from '@colijnit/configuratorapi/build/model/selector-with-options';
|
|
50
48
|
import { ImageUtils } from '@colijnit/configuratorapi/build/utils/image-utils';
|
|
51
49
|
import * as i1 from '@angular/common/http';
|
|
@@ -107,7 +105,7 @@ import { trigger, state, style, transition, animate, query, animateChild } from
|
|
|
107
105
|
import * as i2$2 from '@angular/common';
|
|
108
106
|
import { CommonModule } from '@angular/common';
|
|
109
107
|
import * as i5$1 from '@colijnit/corecomponents_v12';
|
|
110
|
-
import { LoaderModule as LoaderModule$1, IconModule, TooltipDirectiveModule, ListOfValuesModule, ButtonModule,
|
|
108
|
+
import { LoaderModule as LoaderModule$1, IconModule, InputTextModule, InputNumberPickerModule, TooltipDirectiveModule, ListOfValuesModule, ButtonModule, ImageModule, CoreComponentsTranslationModule } from '@colijnit/corecomponents_v12';
|
|
111
109
|
import * as i2$3 from '@angular/material/input';
|
|
112
110
|
import { MatInputModule, MatFormField } from '@angular/material/input';
|
|
113
111
|
import * as i12 from '@angular/material/select';
|
|
@@ -116,9 +114,9 @@ import * as i4 from '@angular/material/tooltip';
|
|
|
116
114
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
117
115
|
import * as i1$4 from 'ngx-color/sketch';
|
|
118
116
|
import { ColorSketchModule } from 'ngx-color/sketch';
|
|
117
|
+
import * as dat from 'dat.gui';
|
|
119
118
|
import * as i3$2 from '@angular/material/slider';
|
|
120
119
|
import { MatSliderModule } from '@angular/material/slider';
|
|
121
|
-
import * as dat from 'dat.gui';
|
|
122
120
|
import * as i14 from '@angular/flex-layout/flex';
|
|
123
121
|
import * as i2$4 from '@angular/material/progress-bar';
|
|
124
122
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
@@ -3667,7 +3665,7 @@ class HomedecoratorAppEventService {
|
|
|
3667
3665
|
this.externalOpen = new Subject();
|
|
3668
3666
|
this.searchClick = new Subject();
|
|
3669
3667
|
this.shareProject = new Subject();
|
|
3670
|
-
this.configurationFromPresetLoaded = new
|
|
3668
|
+
this.configurationFromPresetLoaded = new Subject();
|
|
3671
3669
|
}
|
|
3672
3670
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorAppEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3673
3671
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorAppEventService, providedIn: 'root' }); }
|
|
@@ -4003,6 +4001,18 @@ class HomedecoratorConnectorAdapterService {
|
|
|
4003
4001
|
// public getJsonMatchTableArticles(): Promise<void> {
|
|
4004
4002
|
// return this.connector.getJsonMatchTableArticles();
|
|
4005
4003
|
// }
|
|
4004
|
+
async prepareArticleForCart(goodId, quantity = 1, shouldGetArticleTree = false, showLoader = true, instanceId = undefined) {
|
|
4005
|
+
const response = await this.articleApi.prepareArticleForCart('Homedecorator', 'Sales', 'Homedecorator', goodId, shouldGetArticleTree, quantity, instanceId, showLoader);
|
|
4006
|
+
if (response && response.validationResult && response.validationResult.success) {
|
|
4007
|
+
if (typeof response.resultObject !== 'string') {
|
|
4008
|
+
return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject);
|
|
4009
|
+
}
|
|
4010
|
+
return response.resultObject;
|
|
4011
|
+
}
|
|
4012
|
+
else {
|
|
4013
|
+
return null;
|
|
4014
|
+
}
|
|
4015
|
+
}
|
|
4006
4016
|
async setInstanceToConfigure(id) {
|
|
4007
4017
|
try {
|
|
4008
4018
|
if (id !== null) {
|
|
@@ -6869,8 +6879,8 @@ class HomedecoratorConnectorService {
|
|
|
6869
6879
|
googleTranslateEnabled() {
|
|
6870
6880
|
return this._connector.googleTranslateEnabled();
|
|
6871
6881
|
}
|
|
6872
|
-
|
|
6873
|
-
return this._connector.
|
|
6882
|
+
prepareArticleForCart(goodId, quantity, externalSource = false, showLoader = true, instanceId) {
|
|
6883
|
+
return this._connector.prepareArticleForCart(goodId, quantity, !!externalSource, showLoader, instanceId);
|
|
6874
6884
|
}
|
|
6875
6885
|
// public getJsonMatchTableArticles(): Promise<any> {
|
|
6876
6886
|
// return this._connector.getJsonMatchTableArticles();
|
|
@@ -6903,7 +6913,7 @@ class HomedecoratorConnectorService {
|
|
|
6903
6913
|
});
|
|
6904
6914
|
this.articleReceived.next(article);
|
|
6905
6915
|
this._article = article;
|
|
6906
|
-
this._articlePrice = article.price;
|
|
6916
|
+
this._articlePrice = article ? article.price : null;
|
|
6907
6917
|
// Sometimes the sku is not returned in Article
|
|
6908
6918
|
this._article.sku = sku;
|
|
6909
6919
|
return article;
|
|
@@ -7189,23 +7199,21 @@ class HomedecoratorConnectorService {
|
|
|
7189
7199
|
});
|
|
7190
7200
|
}
|
|
7191
7201
|
async addToCart(goodId, goodType, quantity, instanceId, externalSource) {
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
|
|
7195
|
-
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
json = await this.getJsonConfiguredArticles(goodId, goodType, quantity, externalSource, true, instanceId, statistics);
|
|
7201
|
-
const frozenArticle = JSON.parse(json);
|
|
7202
|
+
const response = await this.prepareArticleForCart(goodId, quantity, externalSource, true, instanceId);
|
|
7203
|
+
let article;
|
|
7204
|
+
if (typeof response === 'string') {
|
|
7205
|
+
article = JSON.parse(response);
|
|
7206
|
+
}
|
|
7207
|
+
else {
|
|
7208
|
+
article = response;
|
|
7209
|
+
}
|
|
7202
7210
|
this._googleTagManager.sendEvent(GoogleTagManagerEvent.AddToCart, {
|
|
7203
|
-
'articleNr':
|
|
7204
|
-
'product':
|
|
7205
|
-
'composition':
|
|
7211
|
+
'articleNr': article.selectorData ? article.selectorData.articleNr : article.articleNr,
|
|
7212
|
+
'product': article.selectorData ? article.selectorData.articleName : article.name,
|
|
7213
|
+
'composition': article.selectorData ? article.selectorData.configurationText : article.configuration
|
|
7206
7214
|
});
|
|
7207
|
-
this._messageService.emit(MessageType.ArticleCreated,
|
|
7208
|
-
return
|
|
7215
|
+
this._messageService.emit(MessageType.ArticleCreated, article);
|
|
7216
|
+
return article;
|
|
7209
7217
|
}
|
|
7210
7218
|
handleAnswersReceived() {
|
|
7211
7219
|
this._preloadCachedImages(this.activeAnswers);
|
|
@@ -17279,10 +17287,9 @@ class WallItem extends Item {
|
|
|
17279
17287
|
// if elevation is higher than the wall, use maxY
|
|
17280
17288
|
// vec3.y = Math.min(this._getMaxY(wall) / 2, this.halfSize.y + this.elevation);
|
|
17281
17289
|
vec3.y = Math.min(maxY, this.halfSize.y + this.elevation);
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
//
|
|
17285
|
-
vec3.y = Math.min(this._getMaxY(wall), this.halfSize.y + this.elevation);
|
|
17290
|
+
// } else if (this.elevationAdjustable && this.onWall) { /* no idea why this is done, but it causes problems for positioning items */
|
|
17291
|
+
// // if the item is adjustable & is placed on the wall
|
|
17292
|
+
// vec3.y = Math.min(this._getMaxY(wall), this.halfSize.y + this.elevation);
|
|
17286
17293
|
}
|
|
17287
17294
|
else {
|
|
17288
17295
|
if (vec3.y < minY) {
|
|
@@ -24831,8 +24838,8 @@ class FloorTileIntersectionService {
|
|
|
24831
24838
|
floorHits: new Array(),
|
|
24832
24839
|
edgeHits: new Array()
|
|
24833
24840
|
};
|
|
24834
|
-
const bvhLeft = new MeshBVH(geometryLeft);
|
|
24835
|
-
const bvhRight = (geometryRight !== null) ? new MeshBVH(geometryRight) : null;
|
|
24841
|
+
const bvhLeft = new MeshBVH(geometryLeft, { maxLeafSize: 10 });
|
|
24842
|
+
const bvhRight = (geometryRight !== null) ? new MeshBVH(geometryRight, { maxLeafSize: 10 }) : null;
|
|
24836
24843
|
const positionReference = new Object3D();
|
|
24837
24844
|
for (const floorItem of floorPattern) {
|
|
24838
24845
|
const bvh = (floorItem.isLeft) ? bvhLeft : bvhRight;
|
|
@@ -28700,7 +28707,7 @@ class RenderService {
|
|
|
28700
28707
|
this._appEventService = _appEventService;
|
|
28701
28708
|
this._dictionaryService = _dictionaryService;
|
|
28702
28709
|
this.renderImageChanged = new BehaviorSubject('');
|
|
28703
|
-
this.renderImageError = new
|
|
28710
|
+
this.renderImageError = new Subject();
|
|
28704
28711
|
this.blenderRenderStarted = new Subject();
|
|
28705
28712
|
this.renderUpdateImageChanged = new BehaviorSubject(undefined);
|
|
28706
28713
|
this.renderRoomImageChanged = new BehaviorSubject('');
|
|
@@ -29184,7 +29191,15 @@ class RenderService {
|
|
|
29184
29191
|
};
|
|
29185
29192
|
}
|
|
29186
29193
|
}
|
|
29187
|
-
_getSceneRenderSettings(assetId) {
|
|
29194
|
+
_getSceneRenderSettings(assetId, settings) {
|
|
29195
|
+
let hdriIntensityOverwrite;
|
|
29196
|
+
if (settings && settings.hdriIntensity) {
|
|
29197
|
+
hdriIntensityOverwrite = settings.hdriIntensity;
|
|
29198
|
+
}
|
|
29199
|
+
let hdriRotationOverwrite;
|
|
29200
|
+
if (settings && settings.hdriRotation) {
|
|
29201
|
+
hdriRotationOverwrite = settings.hdriRotation;
|
|
29202
|
+
}
|
|
29188
29203
|
// Get the asset information from the BlenderRenderSettings
|
|
29189
29204
|
let renderScenes = [];
|
|
29190
29205
|
if (this._settingsService.settings.blenderSceneSettings && this._settingsService.settings.blenderSceneSettings.scenes) {
|
|
@@ -29214,16 +29229,18 @@ class RenderService {
|
|
|
29214
29229
|
compositeScene.sceneAssetId = renderScene.primarySceneName;
|
|
29215
29230
|
compositeScene.activeCameraId = 1;
|
|
29216
29231
|
compositeScene.default = true;
|
|
29217
|
-
compositeScene.hdriRotation =
|
|
29218
|
-
|
|
29232
|
+
compositeScene.hdriRotation =
|
|
29233
|
+
hdriRotationOverwrite ? this._apiServiceModule.degreesToVector3(hdriRotationOverwrite) : this._apiServiceModule.degreesToVector3(renderScene.hdriRotation);
|
|
29234
|
+
compositeScene.hdriIntensity = hdriIntensityOverwrite ? hdriIntensityOverwrite : renderScene.hdriIntensity;
|
|
29219
29235
|
compositeScene.id = 600;
|
|
29220
29236
|
if (renderScene.multiSceneRender) {
|
|
29221
29237
|
const additionalScene = new SceneSettings();
|
|
29222
29238
|
additionalScene.sceneAssetId = renderScene.secondarySceneName;
|
|
29223
29239
|
additionalScene.activeCameraId = 1;
|
|
29224
29240
|
additionalScene.default = false;
|
|
29225
|
-
additionalScene.hdriRotation =
|
|
29226
|
-
|
|
29241
|
+
additionalScene.hdriRotation =
|
|
29242
|
+
hdriRotationOverwrite ? this._apiServiceModule.degreesToVector3(hdriRotationOverwrite) : this._apiServiceModule.degreesToVector3(renderScene.hdriRotation);
|
|
29243
|
+
additionalScene.hdriIntensity = hdriIntensityOverwrite ? hdriIntensityOverwrite : renderScene.hdriIntensity;
|
|
29227
29244
|
additionalScene.id = 601;
|
|
29228
29245
|
scenes = [compositeScene, additionalScene];
|
|
29229
29246
|
}
|
|
@@ -29238,7 +29255,7 @@ class RenderService {
|
|
|
29238
29255
|
}
|
|
29239
29256
|
_getDataForRoomRender(settings) {
|
|
29240
29257
|
this._cameraService.camera.updateMatrixWorld(true);
|
|
29241
|
-
const sceneSettings = this._getSceneRenderSettings(settings.sceneAsset.name);
|
|
29258
|
+
const sceneSettings = this._getSceneRenderSettings(settings.sceneAsset.name, settings);
|
|
29242
29259
|
const options = {
|
|
29243
29260
|
width: settings.width,
|
|
29244
29261
|
height: settings.height,
|
|
@@ -31314,7 +31331,7 @@ class ConfigurationPresetLoadService {
|
|
|
31314
31331
|
if (initResponse && initResponse.validationResult && initResponse.validationResult.success) {
|
|
31315
31332
|
this._messageService.emit(MessageType.LoadConfigurationFromPreset, {
|
|
31316
31333
|
sku: this.sku,
|
|
31317
|
-
instanceId:
|
|
31334
|
+
instanceId: initResponse.resultObject,
|
|
31318
31335
|
settings: this._externalSourceOptions
|
|
31319
31336
|
});
|
|
31320
31337
|
this.reset();
|
|
@@ -33670,6 +33687,126 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
33670
33687
|
class BlenderRenderSettings {
|
|
33671
33688
|
}
|
|
33672
33689
|
|
|
33690
|
+
class InputSliderComponent {
|
|
33691
|
+
constructor(iconService) {
|
|
33692
|
+
this.iconService = iconService;
|
|
33693
|
+
// TODO we might need to change the inputs to core components ones, but then we need to change the way homedeco looks.
|
|
33694
|
+
// For now just html inputs are fine.
|
|
33695
|
+
this.icons = IconEnum;
|
|
33696
|
+
this.label = '';
|
|
33697
|
+
this.min = 0;
|
|
33698
|
+
this.max = 1000;
|
|
33699
|
+
this.step = 1;
|
|
33700
|
+
this.value = 0;
|
|
33701
|
+
this.valueChange = new EventEmitter();
|
|
33702
|
+
}
|
|
33703
|
+
onValueChange(newValue) {
|
|
33704
|
+
const numeric = +newValue;
|
|
33705
|
+
this.value = numeric;
|
|
33706
|
+
this.valueChange.emit(numeric);
|
|
33707
|
+
}
|
|
33708
|
+
increment() {
|
|
33709
|
+
this.onValueChange(this.value + this.step);
|
|
33710
|
+
}
|
|
33711
|
+
decrement() {
|
|
33712
|
+
this.onValueChange(this.value - this.step);
|
|
33713
|
+
}
|
|
33714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputSliderComponent, deps: [{ token: HomedecoratorIconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: InputSliderComponent, isStandalone: false, selector: "co-input-slider", inputs: { label: "label", min: "min", max: "max", step: "step", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
|
|
33716
|
+
<div class="setting-part-container">
|
|
33717
|
+
<div class="form-field third-width">
|
|
33718
|
+
@if (label) {
|
|
33719
|
+
<label [for]="label" class="form-field-label" [textContent]="label"></label>
|
|
33720
|
+
}
|
|
33721
|
+
|
|
33722
|
+
<input
|
|
33723
|
+
[id]="label"
|
|
33724
|
+
type="number"
|
|
33725
|
+
class="form-field-input"
|
|
33726
|
+
[min]="min"
|
|
33727
|
+
[max]="max"
|
|
33728
|
+
[step]="step"
|
|
33729
|
+
[ngModel]="value"
|
|
33730
|
+
(ngModelChange)="onValueChange($event)">
|
|
33731
|
+
</div>
|
|
33732
|
+
|
|
33733
|
+
<div class="setting-part-buttons">
|
|
33734
|
+
<button class="amount-button" (click)="decrement()">
|
|
33735
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
33736
|
+
</button>
|
|
33737
|
+
<button class="amount-button" (click)="increment()">
|
|
33738
|
+
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
33739
|
+
</button>
|
|
33740
|
+
</div>
|
|
33741
|
+
|
|
33742
|
+
<div class="setting-part-slider">
|
|
33743
|
+
<input
|
|
33744
|
+
type="range"
|
|
33745
|
+
class="value-slider"
|
|
33746
|
+
[min]="min"
|
|
33747
|
+
[max]="max"
|
|
33748
|
+
[step]="step"
|
|
33749
|
+
[ngModel]="value"
|
|
33750
|
+
(ngModelChange)="onValueChange($event)">
|
|
33751
|
+
</div>
|
|
33752
|
+
</div>
|
|
33753
|
+
`, isInline: true, styles: [".setting-part-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.setting-part-container .form-field{position:relative;display:flex;flex-direction:column}.setting-part-container .form-field-label{font-size:10px;color:#171721;margin-bottom:5px}.setting-part-container .form-field-input{border:none;border-bottom:1px solid rgba(0,0,0,.42);background:transparent;font-size:16px;padding:4px 0;outline:none;width:100%;box-sizing:border-box;transition:border-color .2s ease}.setting-part-container .form-field-input:focus{border-bottom:2px solid #da9803;margin-bottom:-1px}.setting-part-container .form-field-input::-webkit-outer-spin-button,.setting-part-container .form-field-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.setting-part-container .form-field-input[type=number]{-moz-appearance:textfield}.setting-part-container .third-width{width:32%}.setting-part-container .setting-part-buttons .amount-button{float:none;box-sizing:border-box;padding:2px;background:none;cursor:pointer;border:none;width:25px;height:25px;margin:0 5px}.setting-part-container .setting-part-buttons .amount-button co-icon{display:block;width:25px;height:25px}.setting-part-container .setting-part-buttons .amount-button co-icon svg{fill:#171721}.setting-part-container .setting-part-slider .value-slider{width:100%;appearance:none;height:2px;background:#da98034d;outline:none;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-webkit-slider-thumb{appearance:none;width:16px;height:16px;border-radius:50%;background:#da9803;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#da9803;border:none;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-moz-range-track{height:2px;background:#da98034d}\n"], dependencies: [{ kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
33754
|
+
}
|
|
33755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputSliderComponent, decorators: [{
|
|
33756
|
+
type: Component,
|
|
33757
|
+
args: [{ selector: 'co-input-slider', template: `
|
|
33758
|
+
<div class="setting-part-container">
|
|
33759
|
+
<div class="form-field third-width">
|
|
33760
|
+
@if (label) {
|
|
33761
|
+
<label [for]="label" class="form-field-label" [textContent]="label"></label>
|
|
33762
|
+
}
|
|
33763
|
+
|
|
33764
|
+
<input
|
|
33765
|
+
[id]="label"
|
|
33766
|
+
type="number"
|
|
33767
|
+
class="form-field-input"
|
|
33768
|
+
[min]="min"
|
|
33769
|
+
[max]="max"
|
|
33770
|
+
[step]="step"
|
|
33771
|
+
[ngModel]="value"
|
|
33772
|
+
(ngModelChange)="onValueChange($event)">
|
|
33773
|
+
</div>
|
|
33774
|
+
|
|
33775
|
+
<div class="setting-part-buttons">
|
|
33776
|
+
<button class="amount-button" (click)="decrement()">
|
|
33777
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
33778
|
+
</button>
|
|
33779
|
+
<button class="amount-button" (click)="increment()">
|
|
33780
|
+
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
33781
|
+
</button>
|
|
33782
|
+
</div>
|
|
33783
|
+
|
|
33784
|
+
<div class="setting-part-slider">
|
|
33785
|
+
<input
|
|
33786
|
+
type="range"
|
|
33787
|
+
class="value-slider"
|
|
33788
|
+
[min]="min"
|
|
33789
|
+
[max]="max"
|
|
33790
|
+
[step]="step"
|
|
33791
|
+
[ngModel]="value"
|
|
33792
|
+
(ngModelChange)="onValueChange($event)">
|
|
33793
|
+
</div>
|
|
33794
|
+
</div>
|
|
33795
|
+
`, standalone: false, encapsulation: ViewEncapsulation.None, styles: [".setting-part-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.setting-part-container .form-field{position:relative;display:flex;flex-direction:column}.setting-part-container .form-field-label{font-size:10px;color:#171721;margin-bottom:5px}.setting-part-container .form-field-input{border:none;border-bottom:1px solid rgba(0,0,0,.42);background:transparent;font-size:16px;padding:4px 0;outline:none;width:100%;box-sizing:border-box;transition:border-color .2s ease}.setting-part-container .form-field-input:focus{border-bottom:2px solid #da9803;margin-bottom:-1px}.setting-part-container .form-field-input::-webkit-outer-spin-button,.setting-part-container .form-field-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.setting-part-container .form-field-input[type=number]{-moz-appearance:textfield}.setting-part-container .third-width{width:32%}.setting-part-container .setting-part-buttons .amount-button{float:none;box-sizing:border-box;padding:2px;background:none;cursor:pointer;border:none;width:25px;height:25px;margin:0 5px}.setting-part-container .setting-part-buttons .amount-button co-icon{display:block;width:25px;height:25px}.setting-part-container .setting-part-buttons .amount-button co-icon svg{fill:#171721}.setting-part-container .setting-part-slider .value-slider{width:100%;appearance:none;height:2px;background:#da98034d;outline:none;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-webkit-slider-thumb{appearance:none;width:16px;height:16px;border-radius:50%;background:#da9803;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#da9803;border:none;cursor:pointer}.setting-part-container .setting-part-slider .value-slider::-moz-range-track{height:2px;background:#da98034d}\n"] }]
|
|
33796
|
+
}], ctorParameters: () => [{ type: HomedecoratorIconCacheService }], propDecorators: { label: [{
|
|
33797
|
+
type: Input
|
|
33798
|
+
}], min: [{
|
|
33799
|
+
type: Input
|
|
33800
|
+
}], max: [{
|
|
33801
|
+
type: Input
|
|
33802
|
+
}], step: [{
|
|
33803
|
+
type: Input
|
|
33804
|
+
}], value: [{
|
|
33805
|
+
type: Input
|
|
33806
|
+
}], valueChange: [{
|
|
33807
|
+
type: Output
|
|
33808
|
+
}] } });
|
|
33809
|
+
|
|
33673
33810
|
// A pipe for appending strings to other strings in view templates.
|
|
33674
33811
|
class AppendPipe {
|
|
33675
33812
|
transform(value, append) {
|
|
@@ -33984,410 +34121,326 @@ class RenderControlsComponent {
|
|
|
33984
34121
|
}
|
|
33985
34122
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderControlsComponent, deps: [{ token: MessageBusService }, { token: ViewModeService }, { token: HomedecoratorSettingsService }, { token: HomedecoratorIconCacheService }, { token: RenderService }, { token: i1$2.MatDialog }, { token: SceneService }, { token: CameraService }, { token: ConfigurationService }, { token: HomedecoratorSettingsService }, { token: UtilsService }, { token: RoomService }, { token: WallMeasurementsService }, { token: ConnectionHeathService }, { token: HomedecoratorDictionaryService }, { token: DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33986
34123
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: RenderControlsComponent, isStandalone: false, selector: "rp-render-controls", viewQueries: [{ propertyName: "renderButton", first: true, predicate: ["renderButton"], descendants: true }], ngImport: i0, template: `
|
|
33987
|
-
|
|
33988
|
-
|
|
33989
|
-
|
|
33990
|
-
|
|
33991
|
-
|
|
33992
|
-
|
|
33993
|
-
|
|
33994
|
-
|
|
33995
|
-
|
|
33996
|
-
|
|
33997
|
-
|
|
34124
|
+
<div class="render-container">
|
|
34125
|
+
@if (startUploading) {
|
|
34126
|
+
<rp-render-progress></rp-render-progress>
|
|
34127
|
+
}
|
|
34128
|
+
<!-- the Yellow render indicators -->
|
|
34129
|
+
@if (inPictureMode) {
|
|
34130
|
+
<div class="render-indicators">
|
|
34131
|
+
<div class="render-indicator-top-left"></div>
|
|
34132
|
+
<div class="render-indicator-top-right"></div>
|
|
34133
|
+
<div class="render-indicator-bottom-left"></div>
|
|
34134
|
+
<div class="render-indicator-bottom-right"></div>
|
|
34135
|
+
</div>
|
|
34136
|
+
<div class="render-popup-container">
|
|
34137
|
+
<div class="render-popup-header">
|
|
34138
|
+
<h3>
|
|
34139
|
+
<span>{{ 'PICTURE_MODE' | localize }}</span>
|
|
34140
|
+
@if (hasError) {
|
|
34141
|
+
<co-icon class="renderErrorIcon" [iconData]="iconService.getIcon(icons.TriangleExclamation)"
|
|
34142
|
+
[matTooltip]="'BLENDER_RENDER_ERROR' | localize"></co-icon>
|
|
34143
|
+
}
|
|
34144
|
+
</h3>
|
|
34145
|
+
<button
|
|
34146
|
+
class="close-popup-container"
|
|
34147
|
+
(click)="resetBlenderRenderScene()">
|
|
34148
|
+
<co-icon [iconData]="iconService.getIcon(icons.Cross)"></co-icon>
|
|
34149
|
+
</button>
|
|
34150
|
+
</div>
|
|
34151
|
+
<div class="render-popup-preview">
|
|
34152
|
+
@if (blenderPreviewRender) {
|
|
34153
|
+
<img [src]="blenderPreviewRender" alt="">
|
|
34154
|
+
}
|
|
34155
|
+
@if (!blenderPreviewRender) {
|
|
34156
|
+
<div class="render-popup-preview-placeholder">
|
|
34157
|
+
<span>{{ 'PREVIEW' | localize }}</span>
|
|
33998
34158
|
</div>
|
|
33999
|
-
|
|
34000
|
-
|
|
34001
|
-
|
|
34002
|
-
|
|
34003
|
-
|
|
34004
|
-
|
|
34005
|
-
|
|
34006
|
-
|
|
34007
|
-
|
|
34008
|
-
|
|
34009
|
-
|
|
34010
|
-
(click)="resetBlenderRenderScene()">
|
|
34011
|
-
<co-icon [iconData]="iconService.getIcon(icons.Cross)"></co-icon>
|
|
34012
|
-
</button>
|
|
34013
|
-
</div>
|
|
34014
|
-
<div class="render-popup-preview">
|
|
34015
|
-
@if (blenderPreviewRender) {
|
|
34016
|
-
<img [src]="blenderPreviewRender" alt="">
|
|
34017
|
-
}
|
|
34018
|
-
@if (!blenderPreviewRender) {
|
|
34019
|
-
<div class="render-popup-preview-placeholder">
|
|
34020
|
-
<span>{{ 'PREVIEW' | localize }}</span>
|
|
34021
|
-
</div>
|
|
34022
|
-
}
|
|
34023
|
-
<button class="render-popup-refresh-preview" (click)="createBlenderRender(true)">
|
|
34024
|
-
<co-icon [iconData]="iconService.getIcon(icons.RetryButton)"></co-icon>
|
|
34025
|
-
</button>
|
|
34026
|
-
</div>
|
|
34027
|
-
@if (renderService.blendFilesRender) {
|
|
34028
|
-
<div class="render-popup-dropdown">
|
|
34029
|
-
<div class="toggleable" (click)="toggleRenderSettings()">
|
|
34030
|
-
<p>
|
|
34031
|
-
@if (!showRenderSettings) {
|
|
34032
|
-
<span [textContent]="'RENDER_ADVANCED_SETTINGS_SHOW' | localize"></span>
|
|
34033
|
-
}
|
|
34034
|
-
@if (showRenderSettings) {
|
|
34035
|
-
<span [textContent]="'RENDER_ADVANCED_SETTINGS_HIDE' | localize"></span>
|
|
34036
|
-
}
|
|
34037
|
-
</p>
|
|
34038
|
-
<co-icon [ngClass]="{'icon-rotate': showRenderSettings}"
|
|
34039
|
-
[iconData]="iconService.getIcon(icons.ArrowPointDown)"></co-icon>
|
|
34040
|
-
</div>
|
|
34041
|
-
@if (showRenderSettings) {
|
|
34042
|
-
<div class="advanced-render-settings">
|
|
34043
|
-
<div class="setting-part-container">
|
|
34044
|
-
<mat-form-field
|
|
34045
|
-
class="face-select-form"
|
|
34046
|
-
>
|
|
34047
|
-
<mat-label>{{ "ENVIRONMENT" | localize }}</mat-label>
|
|
34048
|
-
<mat-select [(ngModel)]="selectedRenderScene" (selectionChange)="updateBlenderSceneSettings($event)">
|
|
34049
|
-
@for (scene of sceneList; track scene) {
|
|
34050
|
-
<mat-option
|
|
34051
|
-
[value]="scene">{{ scene.name }}
|
|
34052
|
-
</mat-option>
|
|
34053
|
-
}
|
|
34054
|
-
</mat-select>
|
|
34055
|
-
</mat-form-field>
|
|
34056
|
-
</div>
|
|
34057
|
-
<div class="setting-part-container">
|
|
34058
|
-
<mat-form-field class="third-width">
|
|
34059
|
-
<mat-label [textContent]="'ENVIRONMENT_LIGHT' | localize"></mat-label>
|
|
34060
|
-
<input
|
|
34061
|
-
[type]="'number'"
|
|
34062
|
-
matInput
|
|
34063
|
-
[(ngModel)]="hdriIntensity"
|
|
34064
|
-
(ngModelChange)="hdriIntensity = +$event">
|
|
34065
|
-
</mat-form-field>
|
|
34066
|
-
<div class="setting-part-buttons">
|
|
34067
|
-
<button class="amount-button" (click)="hdriIntensity = +hdriIntensity - 1">
|
|
34068
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34069
|
-
</button>
|
|
34070
|
-
<button class="amount-button" (click)="hdriIntensity = +hdriIntensity + 1">
|
|
34071
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34072
|
-
</button>
|
|
34073
|
-
</div>
|
|
34074
|
-
<div class="setting-part-slider">
|
|
34075
|
-
<mat-slider class="value" min="1" max="20" step="1" [(ngModel)]="hdriIntensity"></mat-slider>
|
|
34076
|
-
</div>
|
|
34077
|
-
</div>
|
|
34078
|
-
<div class="setting-part-container">
|
|
34079
|
-
<mat-form-field class="third-width">
|
|
34080
|
-
<mat-label [textContent]="'ROTATION' | localize"></mat-label>
|
|
34081
|
-
<input
|
|
34082
|
-
[type]="'number'"
|
|
34083
|
-
matInput
|
|
34084
|
-
[(ngModel)]="hdriRotation"
|
|
34085
|
-
(ngModelChange)="hdriRotation = +$event">
|
|
34086
|
-
</mat-form-field>
|
|
34087
|
-
<div class="setting-part-buttons">
|
|
34088
|
-
<button class="amount-button" (click)="hdriRotation = +hdriRotation - 1">
|
|
34089
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34090
|
-
</button>
|
|
34091
|
-
<button class="amount-button" (click)="hdriRotation = +hdriRotation + 1">
|
|
34092
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34093
|
-
</button>
|
|
34094
|
-
</div>
|
|
34095
|
-
<div class="setting-part-slider">
|
|
34096
|
-
<mat-slider class="value" min="0" max="360" step="1" [(ngModel)]="hdriRotation"></mat-slider>
|
|
34097
|
-
</div>
|
|
34098
|
-
</div>
|
|
34099
|
-
<div class="setting-part-container">
|
|
34100
|
-
<mat-form-field class="third-width">
|
|
34101
|
-
<mat-label [textContent]="'LIGHTS' | localize"></mat-label>
|
|
34102
|
-
<input
|
|
34103
|
-
[type]="'number'"
|
|
34104
|
-
matInput
|
|
34105
|
-
[(ngModel)]="lightingExposure"
|
|
34106
|
-
(ngModelChange)="lightingExposure = +$event">
|
|
34107
|
-
</mat-form-field>
|
|
34108
|
-
<div class="setting-part-buttons">
|
|
34109
|
-
<button class="amount-button" (click)="lightingExposure = +lightingExposure - 1">
|
|
34110
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34111
|
-
</button>
|
|
34112
|
-
<button class="amount-button" (click)="lightingExposure = +lightingExposure + 1">
|
|
34113
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34114
|
-
</button>
|
|
34115
|
-
</div>
|
|
34116
|
-
<div class="setting-part-slider">
|
|
34117
|
-
<mat-slider class="value" min="1" max="10" step="1" [(ngModel)]="lightingExposure"></mat-slider>
|
|
34118
|
-
</div>
|
|
34119
|
-
</div>
|
|
34120
|
-
</div>
|
|
34121
|
-
}
|
|
34122
|
-
</div>
|
|
34159
|
+
}
|
|
34160
|
+
<button class="render-popup-refresh-preview" (click)="createBlenderRender(true)">
|
|
34161
|
+
<co-icon [iconData]="iconService.getIcon(icons.RetryButton)"></co-icon>
|
|
34162
|
+
</button>
|
|
34163
|
+
</div>
|
|
34164
|
+
@if (renderService.blendFilesRender) {
|
|
34165
|
+
<div class="render-popup-dropdown">
|
|
34166
|
+
<div class="toggleable" (click)="toggleRenderSettings()">
|
|
34167
|
+
<p>
|
|
34168
|
+
@if (!showRenderSettings) {
|
|
34169
|
+
<span [textContent]="'RENDER_ADVANCED_SETTINGS_SHOW' | localize"></span>
|
|
34123
34170
|
}
|
|
34124
|
-
|
|
34125
|
-
|
|
34126
|
-
|
|
34127
|
-
|
|
34128
|
-
|
|
34129
|
-
|
|
34130
|
-
x{{ size.height }}
|
|
34131
|
-
</mat-option>
|
|
34132
|
-
}
|
|
34133
|
-
</mat-select>
|
|
34134
|
-
</mat-form-field>
|
|
34135
|
-
</div>
|
|
34136
|
-
<div class="render-popup-button-container">
|
|
34137
|
-
<button class="render-popup-button photo-button"
|
|
34138
|
-
(click)="createBlenderRender()"
|
|
34139
|
-
title="{{'MAKE_A_PICTURE' | localize}}"
|
|
34140
|
-
[disabled]="disablePictureButton">
|
|
34141
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleCheck)"></co-icon>
|
|
34142
|
-
{{ 'MAKE_A_PICTURE' | localize }}
|
|
34143
|
-
</button>
|
|
34144
|
-
<button
|
|
34145
|
-
class="render-popup-button cancel-button"
|
|
34146
|
-
(click)="resetBlenderRenderScene()">
|
|
34147
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34148
|
-
{{ 'CLOSE_PHOTO_MODE' | localize }}
|
|
34149
|
-
</button>
|
|
34150
|
-
</div>
|
|
34171
|
+
@if (showRenderSettings) {
|
|
34172
|
+
<span [textContent]="'RENDER_ADVANCED_SETTINGS_HIDE' | localize"></span>
|
|
34173
|
+
}
|
|
34174
|
+
</p>
|
|
34175
|
+
<co-icon [ngClass]="{'icon-rotate': showRenderSettings}"
|
|
34176
|
+
[iconData]="iconService.getIcon(icons.ArrowPointDown)"></co-icon>
|
|
34151
34177
|
</div>
|
|
34152
|
-
|
|
34153
|
-
|
|
34154
|
-
|
|
34155
|
-
|
|
34156
|
-
|
|
34157
|
-
|
|
34158
|
-
|
|
34159
|
-
|
|
34160
|
-
|
|
34161
|
-
|
|
34162
|
-
|
|
34163
|
-
|
|
34164
|
-
|
|
34165
|
-
|
|
34166
|
-
|
|
34167
|
-
(click)="showCullingErrorDialog = false">
|
|
34168
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34169
|
-
{{ 'CLOSE' | localize }}
|
|
34170
|
-
</button>
|
|
34178
|
+
@if (showRenderSettings) {
|
|
34179
|
+
<div class="advanced-render-settings">
|
|
34180
|
+
<div class="setting-part-container">
|
|
34181
|
+
<mat-form-field
|
|
34182
|
+
class="face-select-form"
|
|
34183
|
+
>
|
|
34184
|
+
<mat-label>{{ "ENVIRONMENT" | localize }}</mat-label>
|
|
34185
|
+
<mat-select [(ngModel)]="selectedRenderScene" (selectionChange)="updateBlenderSceneSettings($event)">
|
|
34186
|
+
@for (scene of sceneList; track scene) {
|
|
34187
|
+
<mat-option
|
|
34188
|
+
[value]="scene">{{ scene.name }}
|
|
34189
|
+
</mat-option>
|
|
34190
|
+
}
|
|
34191
|
+
</mat-select>
|
|
34192
|
+
</mat-form-field>
|
|
34171
34193
|
</div>
|
|
34172
|
-
|
|
34194
|
+
|
|
34195
|
+
<co-input-slider
|
|
34196
|
+
[label]="'ENVIRONMENT_LIGHT' | localize"
|
|
34197
|
+
[min]="1"
|
|
34198
|
+
[max]="20"
|
|
34199
|
+
[(value)]="hdriIntensity">
|
|
34200
|
+
</co-input-slider>
|
|
34201
|
+
|
|
34202
|
+
<co-input-slider
|
|
34203
|
+
[label]="'ROTATION' | localize"
|
|
34204
|
+
[min]="1"
|
|
34205
|
+
[max]="360"
|
|
34206
|
+
[(value)]="hdriRotation">
|
|
34207
|
+
</co-input-slider>
|
|
34208
|
+
|
|
34209
|
+
<co-input-slider
|
|
34210
|
+
[label]="'LIGHTS' | localize"
|
|
34211
|
+
[min]="1"
|
|
34212
|
+
[max]="10"
|
|
34213
|
+
[(value)]="lightingExposure">
|
|
34214
|
+
</co-input-slider>
|
|
34215
|
+
</div>
|
|
34216
|
+
}
|
|
34217
|
+
</div>
|
|
34173
34218
|
}
|
|
34174
|
-
<
|
|
34175
|
-
|
|
34176
|
-
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
[
|
|
34180
|
-
|
|
34181
|
-
|
|
34182
|
-
|
|
34183
|
-
</mat-
|
|
34184
|
-
|
|
34185
|
-
|
|
34186
|
-
`, isInline: true, styles: [".render-container{position:relative}.render-container .render-popup-container{background:#ffffffb3;padding:10px 25px 25px;border-radius:5px;box-shadow:0 1px 5px #0000001f}.render-container .render-popup-container .render-popup-header{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-header h3{display:flex;justify-content:space-between}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon{width:20px;height:20px;margin-left:20px}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg,.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg polygon{fill:#dc143c}.render-container .render-popup-container .render-popup-header .close-popup-container{cursor:pointer;border:none;background:none;float:none;height:auto;width:auto}.render-container .render-popup-container .render-popup-button-container{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-button-container .render-popup-button{float:none;width:100%;max-width:130px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-button-container .photo-button{color:#fff;background-color:#dda73f}.render-container .render-popup-container .render-popup-button-container .cancel-button{color:#fff;background-color:#5b6875}.render-container .render-popup-container .render-popup-preview{background-color:#fff;min-height:150px;min-width:275px;margin:5px 0;position:relative;width:275px;height:150px}.render-container .render-popup-container .render-popup-preview .render-popup-preview-placeholder{background-color:#fff;display:flex;justify-content:space-around;align-items:center;vertical-align:middle;min-height:150px;border:1px solid #ddd;color:#ddd;font-size:14px}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview{position:absolute;bottom:0;right:0;cursor:pointer;border-radius:0;border:none;height:30px;width:30px;background-color:#dda73f;color:#fff;margin:0}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-dropdown{margin:5px 0;width:100%}.render-container .render-popup-container .render-popup-dropdown .toggleable{cursor:pointer;display:flex;justify-content:right;align-content:center}.render-container .render-popup-container .render-popup-dropdown .toggleable p{padding:0;margin:0;font-size:12px;line-height:30px}.render-container .render-popup-container .render-popup-dropdown .toggleable .icon-rotate{transform:rotate(180deg)}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field{width:100%;font-size:14px}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-flex{background-color:#fff;color:#000;padding:3px 6px;border:1px solid #ddd}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-underline{display:none}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper{padding-bottom:0}.render-container .render-popup-container .render-popup-dropdown .setting-part-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.render-container .render-popup-container .render-popup-dropdown .setting-part-container .third-width{width:32%}.render-container .render-popup-container .render-popup-dropdown .setting-part-container .setting-part-buttons .amount-button{float:none;box-sizing:border-box;padding:2px;background:none;cursor:pointer;border:none;width:25px;height:25px;margin:0 5px}.render-container .render-popup-container .render-popup-dropdown .setting-part-container .setting-part-buttons .amount-button co-icon{display:block;width:25px;height:25px}.render-container .render-popup-container .render-popup-dropdown .setting-part-container .setting-part-buttons .amount-button co-icon ::ng-deep svg{fill:#5b6875}.render-container .render-popup-container .render-popup-dropdown .setting-part-container .setting-part-slider .mat-slider-horizontal{min-width:110px;height:28px}.render-container .render-progress{float:left;min-width:50px;border-radius:25px;line-height:50px;text-align:center;padding:0 60px 0 20px;background:#fff;color:#74b77f;font-weight:700;margin:0 -50px 0 0}.render-container .render-input-container{float:right}.render-container .render-input-container input{width:100px;height:24px;margin:5px 0;padding:0 10px;font-size:14px}.render-container button{pointer-events:all;width:50px;height:50px;float:right;border-radius:100%;position:relative;z-index:2;margin-bottom:10px}.render-container button.active{background:#74b77f;color:#fff}.render-container button>*{pointer-events:none}.render-indicators div{position:fixed;width:100px;height:100px}.render-indicators .render-indicator-top-left{left:5vw;top:10vh;border-left:10px solid #dda73f;border-top:10px solid #dda73f;border-top-left-radius:20px}.render-indicators .render-indicator-top-right{right:5vw;top:10vh;border-right:10px solid #dda73f;border-top:10px solid #dda73f;border-top-right-radius:20px}.render-indicators .render-indicator-bottom-left{left:5vw;bottom:5vh;border-left:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-left-radius:20px}.render-indicators .render-indicator-bottom-right{right:5vw;bottom:5vh;border-right:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-right-radius:20px}.render-warning{width:500px;position:fixed;top:20%;left:calc(50% - 250px);border-radius:15px;box-sizing:border-box;background-color:#fff;box-shadow:1px 0 20px #0000001f}.render-warning .render-warming-header{display:flex;justify-content:space-between;border-bottom:1px solid #c5c3c6;padding:20px 20px 10px;align-items:center}.render-warning .render-warming-header h2{padding:0;margin:0}.render-warning .render-warming-header .render-warning-close mat-icon{fill:#c5c3c6;color:#c5c3c6;cursor:pointer;transition:all .2s ease}.render-warning .render-warming-header .render-warning-close:hover mat-icon{fill:#46494c;color:#46494c}.render-warning .render-warning-body{padding:10px 20px}.render-warning .render-warning-footer{display:flex;justify-content:center;padding:0 20px 10px}.render-warning .render-warning-footer .render-popup-button{float:none;width:110px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly;color:#fff;background-color:#5b6875}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon svg path{fill:#fff}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i2$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: i3$2.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: RenderProgressComponent, selector: "rp-render-progress" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
34219
|
+
<div class="render-popup-dropdown">
|
|
34220
|
+
<mat-form-field class="face-select-form">
|
|
34221
|
+
<mat-label>{{ "IMAGE_SIZE" | localize }}</mat-label>
|
|
34222
|
+
<mat-select [(value)]="selectedImageSize">
|
|
34223
|
+
@for (size of imageSizes; track size) {
|
|
34224
|
+
<mat-option [value]="size">{{ size.name }} {{ size.width }}
|
|
34225
|
+
x{{ size.height }}
|
|
34226
|
+
</mat-option>
|
|
34227
|
+
}
|
|
34228
|
+
</mat-select>
|
|
34229
|
+
</mat-form-field>
|
|
34230
|
+
</div>
|
|
34231
|
+
<div class="render-popup-button-container">
|
|
34232
|
+
<button class="render-popup-button photo-button"
|
|
34233
|
+
(click)="createBlenderRender()"
|
|
34234
|
+
title="{{'MAKE_A_PICTURE' | localize}}"
|
|
34235
|
+
[disabled]="disablePictureButton">
|
|
34236
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleCheck)"></co-icon>
|
|
34237
|
+
{{ 'MAKE_A_PICTURE' | localize }}
|
|
34238
|
+
</button>
|
|
34239
|
+
<button
|
|
34240
|
+
class="render-popup-button cancel-button"
|
|
34241
|
+
(click)="resetBlenderRenderScene()">
|
|
34242
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34243
|
+
{{ 'CLOSE_PHOTO_MODE' | localize }}
|
|
34244
|
+
</button>
|
|
34245
|
+
</div>
|
|
34246
|
+
</div>
|
|
34247
|
+
}
|
|
34248
|
+
@if (showCullingErrorDialog) {
|
|
34249
|
+
<div class="render-warning">
|
|
34250
|
+
<div class="render-warming-header">
|
|
34251
|
+
<h2>{{ 'BLENDER_RENDER_ERROR_TITLE' | localize }}</h2>
|
|
34252
|
+
<div class="render-warning-close" (click)="showCullingErrorDialog = false">
|
|
34253
|
+
<mat-icon class="homedecorator-material-icons">cancel</mat-icon>
|
|
34254
|
+
</div>
|
|
34255
|
+
</div>
|
|
34256
|
+
<div class="render-warning-body">
|
|
34257
|
+
<p>{{ 'BLENDER_RENDER_WARNING_CULLING' | localize }}</p>
|
|
34258
|
+
</div>
|
|
34259
|
+
<div class="render-warning-footer">
|
|
34260
|
+
<button
|
|
34261
|
+
class="render-popup-button cancel-button"
|
|
34262
|
+
(click)="showCullingErrorDialog = false">
|
|
34263
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34264
|
+
{{ 'CLOSE' | localize }}
|
|
34265
|
+
</button>
|
|
34266
|
+
</div>
|
|
34267
|
+
</div>
|
|
34268
|
+
}
|
|
34269
|
+
<button
|
|
34270
|
+
#renderButton
|
|
34271
|
+
mat-raised-button
|
|
34272
|
+
matTooltip="{{'RENDER_TAKE_A_PICTURE' | localize}}"
|
|
34273
|
+
[id]="'standalone_render_picture'"
|
|
34274
|
+
[class.active]="viewModeService.viewMode === viewModes.WalkThrough"
|
|
34275
|
+
(click)="showRenderForm($event)">
|
|
34276
|
+
<mat-icon class="icon homedecorator-material-icons"
|
|
34277
|
+
aria-hidden="true">{{ 'photo_camera' }}
|
|
34278
|
+
</mat-icon>
|
|
34279
|
+
</button>
|
|
34280
|
+
</div>
|
|
34281
|
+
`, isInline: true, styles: [".render-container{position:relative;min-width:375px}.render-container .render-popup-container{box-sizing:border-box;background:#ffffffb3;padding:10px 25px 25px;border-radius:5px;box-shadow:0 1px 5px #0000001f}.render-container .render-popup-container .render-popup-header{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-header h3{display:flex;justify-content:space-between}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon{width:20px;height:20px;margin-left:20px}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg,.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg polygon{fill:#dc143c}.render-container .render-popup-container .render-popup-header .close-popup-container{cursor:pointer;border:none;background:none;float:none;height:auto;width:auto}.render-container .render-popup-container .render-popup-button-container{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-button-container .render-popup-button{float:none;width:100%;max-width:130px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-button-container .photo-button{color:#fff;background-color:#dda73f}.render-container .render-popup-container .render-popup-button-container .cancel-button{color:#fff;background-color:#5b6875}.render-container .render-popup-container .render-popup-preview{background-color:#fff;min-height:150px;min-width:275px;margin:5px auto;position:relative;width:340px;height:150px}.render-container .render-popup-container .render-popup-preview .render-popup-preview-placeholder{background-color:#fff;display:flex;justify-content:space-around;align-items:center;vertical-align:middle;min-height:150px;border:1px solid #ddd;color:#ddd;font-size:14px}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview{position:absolute;bottom:0;right:0;cursor:pointer;border-radius:0;border:none;height:30px;width:30px;background-color:#dda73f;color:#fff;margin:0}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-dropdown{margin:5px 0;width:100%}.render-container .render-popup-container .render-popup-dropdown .toggleable{cursor:pointer;display:flex;justify-content:right;align-content:center}.render-container .render-popup-container .render-popup-dropdown .toggleable p{padding:0;margin:0;font-size:12px;line-height:30px}.render-container .render-popup-container .render-popup-dropdown .toggleable .icon-rotate{transform:rotate(180deg)}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field{width:100%;font-size:14px}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-flex{background-color:#fff;color:#000;padding:3px 6px;border:1px solid #ddd}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-underline{display:none}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper{padding-bottom:0}.render-container .render-progress{float:left;min-width:50px;border-radius:25px;line-height:50px;text-align:center;padding:0 60px 0 20px;background:#fff;color:#74b77f;font-weight:700;margin:0 -50px 0 0}.render-container .render-input-container{float:right}.render-container .render-input-container input{width:100px;height:24px;margin:5px 0;padding:0 10px;font-size:14px}.render-container button{pointer-events:all;width:50px;height:50px;float:right;border-radius:100%;position:relative;z-index:2;margin-bottom:10px}.render-container button.active{background:#74b77f;color:#fff}.render-container button>*{pointer-events:none}.render-indicators div{position:fixed;width:100px;height:100px}.render-indicators .render-indicator-top-left{left:5vw;top:10vh;border-left:10px solid #dda73f;border-top:10px solid #dda73f;border-top-left-radius:20px}.render-indicators .render-indicator-top-right{right:5vw;top:10vh;border-right:10px solid #dda73f;border-top:10px solid #dda73f;border-top-right-radius:20px}.render-indicators .render-indicator-bottom-left{left:5vw;bottom:5vh;border-left:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-left-radius:20px}.render-indicators .render-indicator-bottom-right{right:5vw;bottom:5vh;border-right:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-right-radius:20px}.render-warning{width:500px;position:fixed;top:20%;left:calc(50% - 250px);border-radius:15px;box-sizing:border-box;background-color:#fff;box-shadow:1px 0 20px #0000001f}.render-warning .render-warming-header{display:flex;justify-content:space-between;border-bottom:1px solid #c5c3c6;padding:20px 20px 10px;align-items:center}.render-warning .render-warming-header h2{padding:0;margin:0}.render-warning .render-warming-header .render-warning-close mat-icon{fill:#c5c3c6;color:#c5c3c6;cursor:pointer;transition:all .2s ease}.render-warning .render-warming-header .render-warning-close:hover mat-icon{fill:#46494c;color:#46494c}.render-warning .render-warning-body{padding:10px 20px}.render-warning .render-warning-footer{display:flex;justify-content:center;padding:0 20px 10px}.render-warning .render-warning-footer .render-popup-button{float:none;width:110px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly;color:#fff;background-color:#5b6875}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon svg path{fill:#fff}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: InputSliderComponent, selector: "co-input-slider", inputs: ["label", "min", "max", "step", "value"], outputs: ["valueChange"] }, { kind: "component", type: RenderProgressComponent, selector: "rp-render-progress" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
34187
34282
|
}
|
|
34188
34283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderControlsComponent, decorators: [{
|
|
34189
34284
|
type: Component,
|
|
34190
34285
|
args: [{ selector: 'rp-render-controls', template: `
|
|
34191
|
-
|
|
34192
|
-
|
|
34193
|
-
|
|
34194
|
-
|
|
34195
|
-
|
|
34196
|
-
|
|
34197
|
-
|
|
34198
|
-
|
|
34199
|
-
|
|
34200
|
-
|
|
34201
|
-
|
|
34286
|
+
<div class="render-container">
|
|
34287
|
+
@if (startUploading) {
|
|
34288
|
+
<rp-render-progress></rp-render-progress>
|
|
34289
|
+
}
|
|
34290
|
+
<!-- the Yellow render indicators -->
|
|
34291
|
+
@if (inPictureMode) {
|
|
34292
|
+
<div class="render-indicators">
|
|
34293
|
+
<div class="render-indicator-top-left"></div>
|
|
34294
|
+
<div class="render-indicator-top-right"></div>
|
|
34295
|
+
<div class="render-indicator-bottom-left"></div>
|
|
34296
|
+
<div class="render-indicator-bottom-right"></div>
|
|
34297
|
+
</div>
|
|
34298
|
+
<div class="render-popup-container">
|
|
34299
|
+
<div class="render-popup-header">
|
|
34300
|
+
<h3>
|
|
34301
|
+
<span>{{ 'PICTURE_MODE' | localize }}</span>
|
|
34302
|
+
@if (hasError) {
|
|
34303
|
+
<co-icon class="renderErrorIcon" [iconData]="iconService.getIcon(icons.TriangleExclamation)"
|
|
34304
|
+
[matTooltip]="'BLENDER_RENDER_ERROR' | localize"></co-icon>
|
|
34305
|
+
}
|
|
34306
|
+
</h3>
|
|
34307
|
+
<button
|
|
34308
|
+
class="close-popup-container"
|
|
34309
|
+
(click)="resetBlenderRenderScene()">
|
|
34310
|
+
<co-icon [iconData]="iconService.getIcon(icons.Cross)"></co-icon>
|
|
34311
|
+
</button>
|
|
34312
|
+
</div>
|
|
34313
|
+
<div class="render-popup-preview">
|
|
34314
|
+
@if (blenderPreviewRender) {
|
|
34315
|
+
<img [src]="blenderPreviewRender" alt="">
|
|
34316
|
+
}
|
|
34317
|
+
@if (!blenderPreviewRender) {
|
|
34318
|
+
<div class="render-popup-preview-placeholder">
|
|
34319
|
+
<span>{{ 'PREVIEW' | localize }}</span>
|
|
34202
34320
|
</div>
|
|
34203
|
-
|
|
34204
|
-
|
|
34205
|
-
|
|
34206
|
-
|
|
34207
|
-
|
|
34208
|
-
|
|
34209
|
-
|
|
34210
|
-
|
|
34211
|
-
|
|
34212
|
-
|
|
34213
|
-
|
|
34214
|
-
(click)="resetBlenderRenderScene()">
|
|
34215
|
-
<co-icon [iconData]="iconService.getIcon(icons.Cross)"></co-icon>
|
|
34216
|
-
</button>
|
|
34217
|
-
</div>
|
|
34218
|
-
<div class="render-popup-preview">
|
|
34219
|
-
@if (blenderPreviewRender) {
|
|
34220
|
-
<img [src]="blenderPreviewRender" alt="">
|
|
34221
|
-
}
|
|
34222
|
-
@if (!blenderPreviewRender) {
|
|
34223
|
-
<div class="render-popup-preview-placeholder">
|
|
34224
|
-
<span>{{ 'PREVIEW' | localize }}</span>
|
|
34225
|
-
</div>
|
|
34226
|
-
}
|
|
34227
|
-
<button class="render-popup-refresh-preview" (click)="createBlenderRender(true)">
|
|
34228
|
-
<co-icon [iconData]="iconService.getIcon(icons.RetryButton)"></co-icon>
|
|
34229
|
-
</button>
|
|
34230
|
-
</div>
|
|
34231
|
-
@if (renderService.blendFilesRender) {
|
|
34232
|
-
<div class="render-popup-dropdown">
|
|
34233
|
-
<div class="toggleable" (click)="toggleRenderSettings()">
|
|
34234
|
-
<p>
|
|
34235
|
-
@if (!showRenderSettings) {
|
|
34236
|
-
<span [textContent]="'RENDER_ADVANCED_SETTINGS_SHOW' | localize"></span>
|
|
34237
|
-
}
|
|
34238
|
-
@if (showRenderSettings) {
|
|
34239
|
-
<span [textContent]="'RENDER_ADVANCED_SETTINGS_HIDE' | localize"></span>
|
|
34240
|
-
}
|
|
34241
|
-
</p>
|
|
34242
|
-
<co-icon [ngClass]="{'icon-rotate': showRenderSettings}"
|
|
34243
|
-
[iconData]="iconService.getIcon(icons.ArrowPointDown)"></co-icon>
|
|
34244
|
-
</div>
|
|
34245
|
-
@if (showRenderSettings) {
|
|
34246
|
-
<div class="advanced-render-settings">
|
|
34247
|
-
<div class="setting-part-container">
|
|
34248
|
-
<mat-form-field
|
|
34249
|
-
class="face-select-form"
|
|
34250
|
-
>
|
|
34251
|
-
<mat-label>{{ "ENVIRONMENT" | localize }}</mat-label>
|
|
34252
|
-
<mat-select [(ngModel)]="selectedRenderScene" (selectionChange)="updateBlenderSceneSettings($event)">
|
|
34253
|
-
@for (scene of sceneList; track scene) {
|
|
34254
|
-
<mat-option
|
|
34255
|
-
[value]="scene">{{ scene.name }}
|
|
34256
|
-
</mat-option>
|
|
34257
|
-
}
|
|
34258
|
-
</mat-select>
|
|
34259
|
-
</mat-form-field>
|
|
34260
|
-
</div>
|
|
34261
|
-
<div class="setting-part-container">
|
|
34262
|
-
<mat-form-field class="third-width">
|
|
34263
|
-
<mat-label [textContent]="'ENVIRONMENT_LIGHT' | localize"></mat-label>
|
|
34264
|
-
<input
|
|
34265
|
-
[type]="'number'"
|
|
34266
|
-
matInput
|
|
34267
|
-
[(ngModel)]="hdriIntensity"
|
|
34268
|
-
(ngModelChange)="hdriIntensity = +$event">
|
|
34269
|
-
</mat-form-field>
|
|
34270
|
-
<div class="setting-part-buttons">
|
|
34271
|
-
<button class="amount-button" (click)="hdriIntensity = +hdriIntensity - 1">
|
|
34272
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34273
|
-
</button>
|
|
34274
|
-
<button class="amount-button" (click)="hdriIntensity = +hdriIntensity + 1">
|
|
34275
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34276
|
-
</button>
|
|
34277
|
-
</div>
|
|
34278
|
-
<div class="setting-part-slider">
|
|
34279
|
-
<mat-slider class="value" min="1" max="20" step="1" [(ngModel)]="hdriIntensity"></mat-slider>
|
|
34280
|
-
</div>
|
|
34281
|
-
</div>
|
|
34282
|
-
<div class="setting-part-container">
|
|
34283
|
-
<mat-form-field class="third-width">
|
|
34284
|
-
<mat-label [textContent]="'ROTATION' | localize"></mat-label>
|
|
34285
|
-
<input
|
|
34286
|
-
[type]="'number'"
|
|
34287
|
-
matInput
|
|
34288
|
-
[(ngModel)]="hdriRotation"
|
|
34289
|
-
(ngModelChange)="hdriRotation = +$event">
|
|
34290
|
-
</mat-form-field>
|
|
34291
|
-
<div class="setting-part-buttons">
|
|
34292
|
-
<button class="amount-button" (click)="hdriRotation = +hdriRotation - 1">
|
|
34293
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34294
|
-
</button>
|
|
34295
|
-
<button class="amount-button" (click)="hdriRotation = +hdriRotation + 1">
|
|
34296
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34297
|
-
</button>
|
|
34298
|
-
</div>
|
|
34299
|
-
<div class="setting-part-slider">
|
|
34300
|
-
<mat-slider class="value" min="0" max="360" step="1" [(ngModel)]="hdriRotation"></mat-slider>
|
|
34301
|
-
</div>
|
|
34302
|
-
</div>
|
|
34303
|
-
<div class="setting-part-container">
|
|
34304
|
-
<mat-form-field class="third-width">
|
|
34305
|
-
<mat-label [textContent]="'LIGHTS' | localize"></mat-label>
|
|
34306
|
-
<input
|
|
34307
|
-
[type]="'number'"
|
|
34308
|
-
matInput
|
|
34309
|
-
[(ngModel)]="lightingExposure"
|
|
34310
|
-
(ngModelChange)="lightingExposure = +$event">
|
|
34311
|
-
</mat-form-field>
|
|
34312
|
-
<div class="setting-part-buttons">
|
|
34313
|
-
<button class="amount-button" (click)="lightingExposure = +lightingExposure - 1">
|
|
34314
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleMinusLight)"></co-icon>
|
|
34315
|
-
</button>
|
|
34316
|
-
<button class="amount-button" (click)="lightingExposure = +lightingExposure + 1">
|
|
34317
|
-
<co-icon [iconData]="iconService.getIcon(icons.CirclePlusLight)"></co-icon>
|
|
34318
|
-
</button>
|
|
34319
|
-
</div>
|
|
34320
|
-
<div class="setting-part-slider">
|
|
34321
|
-
<mat-slider class="value" min="1" max="10" step="1" [(ngModel)]="lightingExposure"></mat-slider>
|
|
34322
|
-
</div>
|
|
34323
|
-
</div>
|
|
34324
|
-
</div>
|
|
34325
|
-
}
|
|
34326
|
-
</div>
|
|
34321
|
+
}
|
|
34322
|
+
<button class="render-popup-refresh-preview" (click)="createBlenderRender(true)">
|
|
34323
|
+
<co-icon [iconData]="iconService.getIcon(icons.RetryButton)"></co-icon>
|
|
34324
|
+
</button>
|
|
34325
|
+
</div>
|
|
34326
|
+
@if (renderService.blendFilesRender) {
|
|
34327
|
+
<div class="render-popup-dropdown">
|
|
34328
|
+
<div class="toggleable" (click)="toggleRenderSettings()">
|
|
34329
|
+
<p>
|
|
34330
|
+
@if (!showRenderSettings) {
|
|
34331
|
+
<span [textContent]="'RENDER_ADVANCED_SETTINGS_SHOW' | localize"></span>
|
|
34327
34332
|
}
|
|
34328
|
-
|
|
34329
|
-
|
|
34330
|
-
|
|
34331
|
-
|
|
34332
|
-
|
|
34333
|
-
|
|
34334
|
-
x{{ size.height }}
|
|
34335
|
-
</mat-option>
|
|
34336
|
-
}
|
|
34337
|
-
</mat-select>
|
|
34338
|
-
</mat-form-field>
|
|
34339
|
-
</div>
|
|
34340
|
-
<div class="render-popup-button-container">
|
|
34341
|
-
<button class="render-popup-button photo-button"
|
|
34342
|
-
(click)="createBlenderRender()"
|
|
34343
|
-
title="{{'MAKE_A_PICTURE' | localize}}"
|
|
34344
|
-
[disabled]="disablePictureButton">
|
|
34345
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleCheck)"></co-icon>
|
|
34346
|
-
{{ 'MAKE_A_PICTURE' | localize }}
|
|
34347
|
-
</button>
|
|
34348
|
-
<button
|
|
34349
|
-
class="render-popup-button cancel-button"
|
|
34350
|
-
(click)="resetBlenderRenderScene()">
|
|
34351
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34352
|
-
{{ 'CLOSE_PHOTO_MODE' | localize }}
|
|
34353
|
-
</button>
|
|
34354
|
-
</div>
|
|
34333
|
+
@if (showRenderSettings) {
|
|
34334
|
+
<span [textContent]="'RENDER_ADVANCED_SETTINGS_HIDE' | localize"></span>
|
|
34335
|
+
}
|
|
34336
|
+
</p>
|
|
34337
|
+
<co-icon [ngClass]="{'icon-rotate': showRenderSettings}"
|
|
34338
|
+
[iconData]="iconService.getIcon(icons.ArrowPointDown)"></co-icon>
|
|
34355
34339
|
</div>
|
|
34356
|
-
|
|
34357
|
-
|
|
34358
|
-
|
|
34359
|
-
|
|
34360
|
-
|
|
34361
|
-
|
|
34362
|
-
|
|
34363
|
-
|
|
34364
|
-
|
|
34365
|
-
|
|
34366
|
-
|
|
34367
|
-
|
|
34368
|
-
|
|
34369
|
-
|
|
34370
|
-
|
|
34371
|
-
(click)="showCullingErrorDialog = false">
|
|
34372
|
-
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34373
|
-
{{ 'CLOSE' | localize }}
|
|
34374
|
-
</button>
|
|
34340
|
+
@if (showRenderSettings) {
|
|
34341
|
+
<div class="advanced-render-settings">
|
|
34342
|
+
<div class="setting-part-container">
|
|
34343
|
+
<mat-form-field
|
|
34344
|
+
class="face-select-form"
|
|
34345
|
+
>
|
|
34346
|
+
<mat-label>{{ "ENVIRONMENT" | localize }}</mat-label>
|
|
34347
|
+
<mat-select [(ngModel)]="selectedRenderScene" (selectionChange)="updateBlenderSceneSettings($event)">
|
|
34348
|
+
@for (scene of sceneList; track scene) {
|
|
34349
|
+
<mat-option
|
|
34350
|
+
[value]="scene">{{ scene.name }}
|
|
34351
|
+
</mat-option>
|
|
34352
|
+
}
|
|
34353
|
+
</mat-select>
|
|
34354
|
+
</mat-form-field>
|
|
34375
34355
|
</div>
|
|
34376
|
-
|
|
34356
|
+
|
|
34357
|
+
<co-input-slider
|
|
34358
|
+
[label]="'ENVIRONMENT_LIGHT' | localize"
|
|
34359
|
+
[min]="1"
|
|
34360
|
+
[max]="20"
|
|
34361
|
+
[(value)]="hdriIntensity">
|
|
34362
|
+
</co-input-slider>
|
|
34363
|
+
|
|
34364
|
+
<co-input-slider
|
|
34365
|
+
[label]="'ROTATION' | localize"
|
|
34366
|
+
[min]="1"
|
|
34367
|
+
[max]="360"
|
|
34368
|
+
[(value)]="hdriRotation">
|
|
34369
|
+
</co-input-slider>
|
|
34370
|
+
|
|
34371
|
+
<co-input-slider
|
|
34372
|
+
[label]="'LIGHTS' | localize"
|
|
34373
|
+
[min]="1"
|
|
34374
|
+
[max]="10"
|
|
34375
|
+
[(value)]="lightingExposure">
|
|
34376
|
+
</co-input-slider>
|
|
34377
|
+
</div>
|
|
34378
|
+
}
|
|
34379
|
+
</div>
|
|
34377
34380
|
}
|
|
34378
|
-
<
|
|
34379
|
-
|
|
34380
|
-
|
|
34381
|
-
|
|
34382
|
-
|
|
34383
|
-
[
|
|
34384
|
-
|
|
34385
|
-
|
|
34386
|
-
|
|
34387
|
-
</mat-
|
|
34388
|
-
|
|
34389
|
-
|
|
34390
|
-
|
|
34381
|
+
<div class="render-popup-dropdown">
|
|
34382
|
+
<mat-form-field class="face-select-form">
|
|
34383
|
+
<mat-label>{{ "IMAGE_SIZE" | localize }}</mat-label>
|
|
34384
|
+
<mat-select [(value)]="selectedImageSize">
|
|
34385
|
+
@for (size of imageSizes; track size) {
|
|
34386
|
+
<mat-option [value]="size">{{ size.name }} {{ size.width }}
|
|
34387
|
+
x{{ size.height }}
|
|
34388
|
+
</mat-option>
|
|
34389
|
+
}
|
|
34390
|
+
</mat-select>
|
|
34391
|
+
</mat-form-field>
|
|
34392
|
+
</div>
|
|
34393
|
+
<div class="render-popup-button-container">
|
|
34394
|
+
<button class="render-popup-button photo-button"
|
|
34395
|
+
(click)="createBlenderRender()"
|
|
34396
|
+
title="{{'MAKE_A_PICTURE' | localize}}"
|
|
34397
|
+
[disabled]="disablePictureButton">
|
|
34398
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleCheck)"></co-icon>
|
|
34399
|
+
{{ 'MAKE_A_PICTURE' | localize }}
|
|
34400
|
+
</button>
|
|
34401
|
+
<button
|
|
34402
|
+
class="render-popup-button cancel-button"
|
|
34403
|
+
(click)="resetBlenderRenderScene()">
|
|
34404
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34405
|
+
{{ 'CLOSE_PHOTO_MODE' | localize }}
|
|
34406
|
+
</button>
|
|
34407
|
+
</div>
|
|
34408
|
+
</div>
|
|
34409
|
+
}
|
|
34410
|
+
@if (showCullingErrorDialog) {
|
|
34411
|
+
<div class="render-warning">
|
|
34412
|
+
<div class="render-warming-header">
|
|
34413
|
+
<h2>{{ 'BLENDER_RENDER_ERROR_TITLE' | localize }}</h2>
|
|
34414
|
+
<div class="render-warning-close" (click)="showCullingErrorDialog = false">
|
|
34415
|
+
<mat-icon class="homedecorator-material-icons">cancel</mat-icon>
|
|
34416
|
+
</div>
|
|
34417
|
+
</div>
|
|
34418
|
+
<div class="render-warning-body">
|
|
34419
|
+
<p>{{ 'BLENDER_RENDER_WARNING_CULLING' | localize }}</p>
|
|
34420
|
+
</div>
|
|
34421
|
+
<div class="render-warning-footer">
|
|
34422
|
+
<button
|
|
34423
|
+
class="render-popup-button cancel-button"
|
|
34424
|
+
(click)="showCullingErrorDialog = false">
|
|
34425
|
+
<co-icon [iconData]="iconService.getIcon(icons.CircleXmark)"></co-icon>
|
|
34426
|
+
{{ 'CLOSE' | localize }}
|
|
34427
|
+
</button>
|
|
34428
|
+
</div>
|
|
34429
|
+
</div>
|
|
34430
|
+
}
|
|
34431
|
+
<button
|
|
34432
|
+
#renderButton
|
|
34433
|
+
mat-raised-button
|
|
34434
|
+
matTooltip="{{'RENDER_TAKE_A_PICTURE' | localize}}"
|
|
34435
|
+
[id]="'standalone_render_picture'"
|
|
34436
|
+
[class.active]="viewModeService.viewMode === viewModes.WalkThrough"
|
|
34437
|
+
(click)="showRenderForm($event)">
|
|
34438
|
+
<mat-icon class="icon homedecorator-material-icons"
|
|
34439
|
+
aria-hidden="true">{{ 'photo_camera' }}
|
|
34440
|
+
</mat-icon>
|
|
34441
|
+
</button>
|
|
34442
|
+
</div>
|
|
34443
|
+
`, standalone: false, styles: [".render-container{position:relative;min-width:375px}.render-container .render-popup-container{box-sizing:border-box;background:#ffffffb3;padding:10px 25px 25px;border-radius:5px;box-shadow:0 1px 5px #0000001f}.render-container .render-popup-container .render-popup-header{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-header h3{display:flex;justify-content:space-between}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon{width:20px;height:20px;margin-left:20px}.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg,.render-container .render-popup-container .render-popup-header h3 ::ng-deep .renderErrorIcon svg polygon{fill:#dc143c}.render-container .render-popup-container .render-popup-header .close-popup-container{cursor:pointer;border:none;background:none;float:none;height:auto;width:auto}.render-container .render-popup-container .render-popup-button-container{display:flex;justify-content:space-between;font-family:inherit}.render-container .render-popup-container .render-popup-button-container .render-popup-button{float:none;width:100%;max-width:130px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-container .render-popup-container .render-popup-button-container .render-popup-button ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-button-container .photo-button{color:#fff;background-color:#dda73f}.render-container .render-popup-container .render-popup-button-container .cancel-button{color:#fff;background-color:#5b6875}.render-container .render-popup-container .render-popup-preview{background-color:#fff;min-height:150px;min-width:275px;margin:5px auto;position:relative;width:340px;height:150px}.render-container .render-popup-container .render-popup-preview .render-popup-preview-placeholder{background-color:#fff;display:flex;justify-content:space-around;align-items:center;vertical-align:middle;min-height:150px;border:1px solid #ddd;color:#ddd;font-size:14px}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview{position:absolute;bottom:0;right:0;cursor:pointer;border-radius:0;border:none;height:30px;width:30px;background-color:#dda73f;color:#fff;margin:0}.render-container .render-popup-container .render-popup-preview .render-popup-refresh-preview ::ng-deep co-icon svg path{fill:#fff}.render-container .render-popup-container .render-popup-dropdown{margin:5px 0;width:100%}.render-container .render-popup-container .render-popup-dropdown .toggleable{cursor:pointer;display:flex;justify-content:right;align-content:center}.render-container .render-popup-container .render-popup-dropdown .toggleable p{padding:0;margin:0;font-size:12px;line-height:30px}.render-container .render-popup-container .render-popup-dropdown .toggleable .icon-rotate{transform:rotate(180deg)}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field{width:100%;font-size:14px}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-flex{background-color:#fff;color:#000;padding:3px 6px;border:1px solid #ddd}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-underline{display:none}.render-container .render-popup-container .render-popup-dropdown .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper{padding-bottom:0}.render-container .render-progress{float:left;min-width:50px;border-radius:25px;line-height:50px;text-align:center;padding:0 60px 0 20px;background:#fff;color:#74b77f;font-weight:700;margin:0 -50px 0 0}.render-container .render-input-container{float:right}.render-container .render-input-container input{width:100px;height:24px;margin:5px 0;padding:0 10px;font-size:14px}.render-container button{pointer-events:all;width:50px;height:50px;float:right;border-radius:100%;position:relative;z-index:2;margin-bottom:10px}.render-container button.active{background:#74b77f;color:#fff}.render-container button>*{pointer-events:none}.render-indicators div{position:fixed;width:100px;height:100px}.render-indicators .render-indicator-top-left{left:5vw;top:10vh;border-left:10px solid #dda73f;border-top:10px solid #dda73f;border-top-left-radius:20px}.render-indicators .render-indicator-top-right{right:5vw;top:10vh;border-right:10px solid #dda73f;border-top:10px solid #dda73f;border-top-right-radius:20px}.render-indicators .render-indicator-bottom-left{left:5vw;bottom:5vh;border-left:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-left-radius:20px}.render-indicators .render-indicator-bottom-right{right:5vw;bottom:5vh;border-right:10px solid #dda73f;border-bottom:10px solid #dda73f;border-bottom-right-radius:20px}.render-warning{width:500px;position:fixed;top:20%;left:calc(50% - 250px);border-radius:15px;box-sizing:border-box;background-color:#fff;box-shadow:1px 0 20px #0000001f}.render-warning .render-warming-header{display:flex;justify-content:space-between;border-bottom:1px solid #c5c3c6;padding:20px 20px 10px;align-items:center}.render-warning .render-warming-header h2{padding:0;margin:0}.render-warning .render-warming-header .render-warning-close mat-icon{fill:#c5c3c6;color:#c5c3c6;cursor:pointer;transition:all .2s ease}.render-warning .render-warming-header .render-warning-close:hover mat-icon{fill:#46494c;color:#46494c}.render-warning .render-warning-body{padding:10px 20px}.render-warning .render-warning-footer{display:flex;justify-content:center;padding:0 20px 10px}.render-warning .render-warning-footer .render-popup-button{float:none;width:110px;border-radius:3px;cursor:pointer;border:none;display:flex;height:40px;align-items:center;justify-content:space-evenly;color:#fff;background-color:#5b6875}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon{display:inline-block;height:18px;width:18px}.render-warning .render-warning-footer .render-popup-button ::ng-deep co-icon svg path{fill:#fff}\n"] }]
|
|
34391
34444
|
}], ctorParameters: () => [{ type: MessageBusService }, { type: ViewModeService }, { type: HomedecoratorSettingsService }, { type: HomedecoratorIconCacheService }, { type: RenderService }, { type: i1$2.MatDialog }, { type: SceneService }, { type: CameraService }, { type: ConfigurationService }, { type: HomedecoratorSettingsService }, { type: UtilsService }, { type: RoomService }, { type: WallMeasurementsService }, { type: ConnectionHeathService }, { type: HomedecoratorDictionaryService }, { type: DialogService }], propDecorators: { renderButton: [{
|
|
34392
34445
|
type: ViewChild,
|
|
34393
34446
|
args: ['renderButton']
|
|
@@ -42579,30 +42632,18 @@ class ConfigurationPresetLoaderComponent {
|
|
|
42579
42632
|
showClass() {
|
|
42580
42633
|
return true;
|
|
42581
42634
|
}
|
|
42582
|
-
constructor(configurationPresetService, iconService
|
|
42635
|
+
constructor(configurationPresetService, iconService) {
|
|
42583
42636
|
this.configurationPresetService = configurationPresetService;
|
|
42584
42637
|
this.iconService = iconService;
|
|
42585
|
-
this._homedecoratorConnectorService = _homedecoratorConnectorService;
|
|
42586
|
-
this._messageService = _messageService;
|
|
42587
42638
|
this.icon = IconEnum;
|
|
42588
42639
|
}
|
|
42589
|
-
ngOnInit() {
|
|
42590
|
-
// TODO REMOVE MOCK
|
|
42591
|
-
// Own source, good ol' instanbull
|
|
42592
|
-
// this.configurationPresetService.sku = '1000610952';
|
|
42593
|
-
// this.configurationPresetService.instanceId = '67483';
|
|
42594
|
-
// IMG extern
|
|
42595
|
-
// this.configurationPresetService.sku = '70000107';
|
|
42596
|
-
// this.configurationPresetService.instanceId = '354490';
|
|
42597
|
-
// this.configurationPresetService.externalSourceId = 171;
|
|
42598
|
-
}
|
|
42599
42640
|
handleCloseClick() {
|
|
42600
42641
|
this.configurationPresetService.reset();
|
|
42601
42642
|
}
|
|
42602
42643
|
handleLoadPreset() {
|
|
42603
42644
|
this.configurationPresetService.LoadPreset();
|
|
42604
42645
|
}
|
|
42605
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigurationPresetLoaderComponent, deps: [{ token: ConfigurationPresetLoadService }, { token: HomedecoratorIconCacheService }
|
|
42646
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigurationPresetLoaderComponent, deps: [{ token: ConfigurationPresetLoadService }, { token: HomedecoratorIconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42606
42647
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ConfigurationPresetLoaderComponent, isStandalone: false, selector: "co-configurator-preset-loader", host: { properties: { "class.co-configurator-preset-loader": "this.showClass" } }, ngImport: i0, template: `
|
|
42607
42648
|
|
|
42608
42649
|
@if (configurationPresetService.showConfigurationLoad) {
|
|
@@ -42652,7 +42693,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
42652
42693
|
}
|
|
42653
42694
|
|
|
42654
42695
|
`, standalone: false, encapsulation: ViewEncapsulation.None, styles: [".co-configurator-preset-loader .configurator-preset-loader-container{position:fixed;background:#fff;right:50px;bottom:50px;width:100%;max-width:400px;min-height:40px;box-sizing:border-box;padding:15px 5px;display:flex;justify-content:space-between;align-items:center;border-radius:15px;box-shadow:1px 1px 4px #0003;pointer-events:all;z-index:102}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-icon{background:#4e9b7e;border-radius:50%;width:30px;height:30px}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-icon .co-icon svg polygon{fill:#fff}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-info .preset-head{text-transform:uppercase;font-size:12px}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-info .preset-sku{font-size:18px;font-weight:700;margin:5px 0 15px}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-info .preset-text-link{font-size:14px;cursor:pointer;color:#4e9b7e;text-align:center}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-info .preset-text-link:hover{text-decoration:underline}.co-configurator-preset-loader .configurator-preset-loader-container .configurator-preset-close .co-button{background:none}\n"] }]
|
|
42655
|
-
}], ctorParameters: () => [{ type: ConfigurationPresetLoadService }, { type: HomedecoratorIconCacheService }
|
|
42696
|
+
}], ctorParameters: () => [{ type: ConfigurationPresetLoadService }, { type: HomedecoratorIconCacheService }], propDecorators: { showClass: [{
|
|
42656
42697
|
type: HostBinding,
|
|
42657
42698
|
args: ['class.co-configurator-preset-loader']
|
|
42658
42699
|
}] } });
|
|
@@ -43305,10 +43346,10 @@ class RoomPlannerComponent {
|
|
|
43305
43346
|
if (object.metadata) {
|
|
43306
43347
|
this.showContextMenu = false;
|
|
43307
43348
|
await this._connectorAdapterService.initConnector(object.metadata.externalSettings ? object.metadata.externalSettings.settings : this.settingsService.settings, object.metadata.externalSettings ? object.metadata.externalSettings.name : undefined, false, object.metadata.externalSettings && object.metadata.externalSettings.externalSourceId ? object.metadata.externalSettings.externalSourceId : null);
|
|
43308
|
-
const
|
|
43349
|
+
const article = await this._connectorService.addToCart(+object.metadata.goodId, object.metadata.goodType, 1, object.metadata.itemId, !!(object.metadata.externalSettings && object.metadata.externalSettings.externalSourceId));
|
|
43309
43350
|
if (object.metadata.externalSettings) {
|
|
43310
43351
|
const externalSource = {
|
|
43311
|
-
article:
|
|
43352
|
+
article: article,
|
|
43312
43353
|
quantity: 1,
|
|
43313
43354
|
catalogDefinition: object.metadata.externalSettings.catalogDefinition,
|
|
43314
43355
|
externalSource: this._connectorAdapterService.getExternalSourceFromId(object.metadata.externalSettings.externalSourceId)
|
|
@@ -43316,7 +43357,7 @@ class RoomPlannerComponent {
|
|
|
43316
43357
|
this._appEventService.addExternalSourceToCart.next(externalSource);
|
|
43317
43358
|
}
|
|
43318
43359
|
else {
|
|
43319
|
-
this._appEventService.addToCart.next({ article:
|
|
43360
|
+
this._appEventService.addToCart.next({ article: article, quantity: 1 });
|
|
43320
43361
|
}
|
|
43321
43362
|
}
|
|
43322
43363
|
}
|
|
@@ -49699,7 +49740,7 @@ class HomedecoratorComponent {
|
|
|
49699
49740
|
return this._settings;
|
|
49700
49741
|
}
|
|
49701
49742
|
constructor(appService, // don't remove this, needs to be created on a high level
|
|
49702
|
-
controllerService, appState, presetsService, screenAnalysis, _iconRegistry, _domSanitizer, _messageService, _homedecoratorService, _parentEventService, _ownEventService, _integrationService, _sceneService, _webWorkerService, _configurationPresetLoadService) {
|
|
49743
|
+
controllerService, appState, presetsService, screenAnalysis, _iconRegistry, _domSanitizer, _messageService, _homedecoratorService, _parentEventService, _ownEventService, _integrationService, _sceneService, _webWorkerService, _configurationPresetLoadService, _injector) {
|
|
49703
49744
|
this.appService = appService;
|
|
49704
49745
|
this.controllerService = controllerService;
|
|
49705
49746
|
this.appState = appState;
|
|
@@ -49715,6 +49756,7 @@ class HomedecoratorComponent {
|
|
|
49715
49756
|
this._sceneService = _sceneService;
|
|
49716
49757
|
this._webWorkerService = _webWorkerService;
|
|
49717
49758
|
this._configurationPresetLoadService = _configurationPresetLoadService;
|
|
49759
|
+
this._injector = _injector;
|
|
49718
49760
|
this.generalFilterOrders = [
|
|
49719
49761
|
{ name: 'CATEGORY', order: 1 },
|
|
49720
49762
|
{ name: 'TURNOVER_GROUP', order: 2 },
|
|
@@ -49801,6 +49843,7 @@ class HomedecoratorComponent {
|
|
|
49801
49843
|
// };
|
|
49802
49844
|
this._subs = [];
|
|
49803
49845
|
this._initCommunication = false;
|
|
49846
|
+
ServiceLocator.injector = this._injector;
|
|
49804
49847
|
this._eventService = _parentEventService || _ownEventService;
|
|
49805
49848
|
this._webWorkerService.initWorkers();
|
|
49806
49849
|
}
|
|
@@ -49931,7 +49974,7 @@ class HomedecoratorComponent {
|
|
|
49931
49974
|
_initConnection() {
|
|
49932
49975
|
this._homedecoratorService.init(this._settings);
|
|
49933
49976
|
}
|
|
49934
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorComponent, deps: [{ token: HomedecoratorAppService }, { token: HomedecoratorConnectorService }, { token: AppStateService }, { token: PresetsService }, { token: ScreenSizeAnalysisService }, { token: i5.MatIconRegistry }, { token: i1$1.DomSanitizer }, { token: MessageBusService }, { token: HomedecoratorService }, { token: HomedecoratorAppEventService, optional: true, skipSelf: true }, { token: HomedecoratorAppEventService, optional: true, self: true }, { token: IntegrationService }, { token: SceneService }, { token: WebWorkerService }, { token: ConfigurationPresetLoadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49977
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorComponent, deps: [{ token: HomedecoratorAppService }, { token: HomedecoratorConnectorService }, { token: AppStateService }, { token: PresetsService }, { token: ScreenSizeAnalysisService }, { token: i5.MatIconRegistry }, { token: i1$1.DomSanitizer }, { token: MessageBusService }, { token: HomedecoratorService }, { token: HomedecoratorAppEventService, optional: true, skipSelf: true }, { token: HomedecoratorAppEventService, optional: true, self: true }, { token: IntegrationService }, { token: SceneService }, { token: WebWorkerService }, { token: ConfigurationPresetLoadService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49935
49978
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: HomedecoratorComponent, isStandalone: false, selector: "co-homedecorator", inputs: { generalFilterOrders: "generalFilterOrders", purchaseFilterOrders: "purchaseFilterOrders", logisticsFilterOrders: "logisticsFilterOrders", initCommunication: "initCommunication", projectToLoad: "projectToLoad", shareButton: "shareButton", loadWithConfigurationPreset: "loadWithConfigurationPreset", settings: "settings" }, host: { listeners: { "document:keyup": "keyup($event)" }, properties: { "class.co-homedecorator": "this.showClass" } }, providers: [
|
|
49936
49979
|
APPLICATION_SERVICES_PROVIDERS
|
|
49937
49980
|
], ngImport: i0, template: `
|
|
@@ -50033,7 +50076,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
50033
50076
|
type: Optional
|
|
50034
50077
|
}, {
|
|
50035
50078
|
type: Self
|
|
50036
|
-
}] }, { type: IntegrationService }, { type: SceneService }, { type: WebWorkerService }, { type: ConfigurationPresetLoadService }], propDecorators: { generalFilterOrders: [{
|
|
50079
|
+
}] }, { type: IntegrationService }, { type: SceneService }, { type: WebWorkerService }, { type: ConfigurationPresetLoadService }, { type: i0.Injector }], propDecorators: { generalFilterOrders: [{
|
|
50037
50080
|
type: Input
|
|
50038
50081
|
}], purchaseFilterOrders: [{
|
|
50039
50082
|
type: Input
|
|
@@ -50579,6 +50622,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
50579
50622
|
}]
|
|
50580
50623
|
}] });
|
|
50581
50624
|
|
|
50625
|
+
class InputSliderModule {
|
|
50626
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
50627
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: InputSliderModule, declarations: [InputSliderComponent], imports: [FormsModule,
|
|
50628
|
+
IconModule,
|
|
50629
|
+
InputTextModule,
|
|
50630
|
+
InputNumberPickerModule], exports: [InputSliderComponent] }); }
|
|
50631
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputSliderModule, imports: [FormsModule,
|
|
50632
|
+
IconModule,
|
|
50633
|
+
InputTextModule,
|
|
50634
|
+
InputNumberPickerModule] }); }
|
|
50635
|
+
}
|
|
50636
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputSliderModule, decorators: [{
|
|
50637
|
+
type: NgModule,
|
|
50638
|
+
args: [{
|
|
50639
|
+
imports: [
|
|
50640
|
+
FormsModule,
|
|
50641
|
+
IconModule,
|
|
50642
|
+
InputTextModule,
|
|
50643
|
+
InputNumberPickerModule
|
|
50644
|
+
],
|
|
50645
|
+
exports: [
|
|
50646
|
+
InputSliderComponent
|
|
50647
|
+
],
|
|
50648
|
+
declarations: [
|
|
50649
|
+
InputSliderComponent
|
|
50650
|
+
]
|
|
50651
|
+
}]
|
|
50652
|
+
}] });
|
|
50653
|
+
|
|
50582
50654
|
class RenderModule {
|
|
50583
50655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
50584
50656
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: RenderModule, declarations: [RenderControlsComponent,
|
|
@@ -50597,7 +50669,8 @@ class RenderModule {
|
|
|
50597
50669
|
IconModule,
|
|
50598
50670
|
MatSliderModule,
|
|
50599
50671
|
TooltipDirectiveModule,
|
|
50600
|
-
ProgressBarModule
|
|
50672
|
+
ProgressBarModule,
|
|
50673
|
+
InputSliderModule], exports: [RenderControlsComponent,
|
|
50601
50674
|
RenderProgressComponent] }); }
|
|
50602
50675
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderModule, providers: [
|
|
50603
50676
|
HomedecoratorIconCacheService
|
|
@@ -50616,7 +50689,8 @@ class RenderModule {
|
|
|
50616
50689
|
IconModule,
|
|
50617
50690
|
MatSliderModule,
|
|
50618
50691
|
TooltipDirectiveModule,
|
|
50619
|
-
ProgressBarModule
|
|
50692
|
+
ProgressBarModule,
|
|
50693
|
+
InputSliderModule] }); }
|
|
50620
50694
|
}
|
|
50621
50695
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderModule, decorators: [{
|
|
50622
50696
|
type: NgModule,
|
|
@@ -50637,7 +50711,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
50637
50711
|
IconModule,
|
|
50638
50712
|
MatSliderModule,
|
|
50639
50713
|
TooltipDirectiveModule,
|
|
50640
|
-
ProgressBarModule
|
|
50714
|
+
ProgressBarModule,
|
|
50715
|
+
InputSliderModule
|
|
50641
50716
|
],
|
|
50642
50717
|
declarations: [
|
|
50643
50718
|
RenderControlsComponent,
|
|
@@ -52703,11 +52778,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
52703
52778
|
}] });
|
|
52704
52779
|
|
|
52705
52780
|
class HomedecoratorModule {
|
|
52706
|
-
|
|
52707
|
-
this._injector = _injector;
|
|
52708
|
-
ServiceLocator.injector = this._injector;
|
|
52709
|
-
}
|
|
52710
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
52781
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
52711
52782
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorModule, bootstrap: [HomedecoratorComponent], declarations: [HomedecoratorComponent], imports: [CommonModule,
|
|
52712
52783
|
ProgressBarModule,
|
|
52713
52784
|
LoadingOverlayModule,
|
|
@@ -52756,7 +52827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
52756
52827
|
],
|
|
52757
52828
|
bootstrap: [HomedecoratorComponent]
|
|
52758
52829
|
}]
|
|
52759
|
-
}]
|
|
52830
|
+
}] });
|
|
52760
52831
|
|
|
52761
52832
|
class MaterialBuilderComponent {
|
|
52762
52833
|
set settings(value) {
|