@colijnit/homedecorator 262.1.1 → 262.1.2

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.
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Pipe, Component, Inject, Input, HostBinding, Optional, ViewChild, EventEmitter, ElementRef, Output, Directive, ChangeDetectionStrategy, HostListener, ViewEncapsulation, 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
- import { BehaviorSubject, Subject, Observable, throwError, ReplaySubject, combineLatest, from } from 'rxjs';
5
+ import { BehaviorSubject, Subject, Observable, throwError, ReplaySubject, combineLatest, filter as filter$1, take as take$1, from } from 'rxjs';
6
6
  import * as TWEEN from '@tweenjs/tween.js';
7
7
  import { Selection } from '@colijnit/configuratorapi/build/model/selection';
8
8
  import { HdecoPositioning } from '@colijnit/configuratorapi/build/enum/hdeco-positioning.enum';
@@ -41,7 +41,7 @@ import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';
41
41
  import { FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';
42
42
  import { XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerModelFactory.js';
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
- import * as md5 from 'md5';
44
+ import md5 from 'md5';
45
45
  import { NodeType } from '@colijnit/configuratorapi/build/enum/node-type.enum';
46
46
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/configuratorapi/build/model/configurator-statistics-environment';
47
47
  import { Options } from '@colijnit/ioneconnector/build/model/options';
@@ -103,30 +103,28 @@ import { MatIconModule, MatIcon } from '@angular/material/icon';
103
103
  import Delaunator from 'delaunator';
104
104
  import { VertexNormalsHelper } from 'three/examples/jsm/helpers/VertexNormalsHelper.js';
105
105
  import { FileUtils as FileUtils$1 } from '@colijnit/mainapi/build/utils/file-utils';
106
- import { trigger, state, transition, style, animate, query, animateChild } from '@angular/animations';
106
+ import { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';
107
107
  import * as i2$2 from '@angular/common';
108
108
  import { CommonModule } from '@angular/common';
109
109
  import * as i5 from '@colijnit/corecomponents_v12';
110
110
  import { LoaderModule as LoaderModule$1, IconModule, TooltipDirectiveModule, ListOfValuesModule, ButtonModule, InputTextModule, ImageModule, CoreComponentsTranslationModule } from '@colijnit/corecomponents_v12';
111
- import * as i2$3 from '@angular/material/form-field';
112
- import { MatFormFieldModule } from '@angular/material/form-field';
113
- import * as i9 from '@angular/material/select';
111
+ import * as i2$3 from '@angular/material/input';
112
+ import { MatInputModule, MatFormField } from '@angular/material/input';
113
+ import * as i12 from '@angular/material/select';
114
114
  import { MatSelectModule, MatSelect, MatOption } from '@angular/material/select';
115
115
  import * as i4 from '@angular/material/tooltip';
116
116
  import { MatTooltipModule } from '@angular/material/tooltip';
117
117
  import * as i1$4 from 'ngx-color/sketch';
118
118
  import { ColorSketchModule } from 'ngx-color/sketch';
119
- import * as i3$3 from '@angular/material/input';
120
- import { MatInputModule, MatFormField } from '@angular/material/input';
121
- import * as i4$1 from '@angular/material/slider';
119
+ import * as i3$3 from '@angular/material/slider';
122
120
  import { MatSliderModule } from '@angular/material/slider';
123
121
  import * as dat from 'dat.gui';
124
- import * as i6 from '@angular/flex-layout/flex';
122
+ import * as i14 from '@angular/flex-layout/flex';
125
123
  import * as i2$4 from '@angular/material/progress-bar';
126
124
  import { MatProgressBarModule } from '@angular/material/progress-bar';
127
125
  import * as i10 from '@angular/material/button-toggle';
128
126
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
129
- import * as i6$1 from '@angular/cdk/drag-drop';
127
+ import * as i6 from '@angular/cdk/drag-drop';
130
128
  import { DragDropModule } from '@angular/cdk/drag-drop';
131
129
  import * as i31 from '@colijnit/modelcreation';
132
130
  import { ModelCreationPageModule } from '@colijnit/modelcreation';
@@ -134,13 +132,13 @@ import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
134
132
  import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
135
133
  import { TDSLoader } from 'three/examples/jsm/loaders/TDSLoader.js';
136
134
  import { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';
137
- import * as i11 from '@angular/material/slide-toggle';
135
+ import * as i10$1 from '@angular/material/slide-toggle';
138
136
  import { MatSlideToggleModule, MatSlideToggle } from '@angular/material/slide-toggle';
139
137
  import * as i7$1 from '@angular/flex-layout/extended';
140
138
  import * as i3$4 from '@angular/material/grid-list';
141
139
  import { MatGridListModule } from '@angular/material/grid-list';
142
140
  import imageCompression from 'browser-image-compression';
143
- import * as i4$2 from '@angular/material/tabs';
141
+ import * as i4$1 from '@angular/material/tabs';
144
142
  import { MatTabsModule } from '@angular/material/tabs';
145
143
  import * as i1$5 from 'ngx-color/chrome';
146
144
  import { ColorChromeModule } from 'ngx-color/chrome';
@@ -153,7 +151,7 @@ import * as i27 from '@colijnit/configurator';
153
151
  import { ConfigurationResultObject, ProductConfiguratorModule, ConfiguratorModule, LiteSelectorModule } from '@colijnit/configurator';
154
152
  import * as i31$1 from '@angular/cdk/portal';
155
153
  import { TemplatePortal, PortalModule } from '@angular/cdk/portal';
156
- import * as i4$3 from 'ng2-pdf-viewer';
154
+ import * as i4$2 from 'ng2-pdf-viewer';
157
155
  import { PdfViewerComponent, PdfViewerModule } from 'ng2-pdf-viewer';
158
156
  import html2canvas from 'html2canvas';
159
157
  import * as i23 from '@angular/material/toolbar';
@@ -168,6 +166,7 @@ import * as i33 from '@angular/material/badge';
168
166
  import { MatBadgeModule } from '@angular/material/badge';
169
167
  import { ExternalCatalogStartupInfoRequest } from '@colijnit/articleapi/build/model/external-catalog-startup-info-request';
170
168
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
169
+ import { MatFormFieldModule } from '@angular/material/form-field';
171
170
  import { FlexLayoutModule } from '@angular/flex-layout';
172
171
  import { MatOptionModule } from '@angular/material/core';
173
172
  import { MatDividerModule } from '@angular/material/divider';
@@ -3300,7 +3299,9 @@ class HomedecoratorSettingsOptions {
3300
3299
  this.useAnimations = true;
3301
3300
  this.useThreedScene = true;
3302
3301
  this.showSlowConnectionWarning = false;
3303
- this.useExternalOpenSave = false;
3302
+ this.useExternalSave = false;
3303
+ this.useExternalOpen = false;
3304
+ this.shadowSaveToCloud = false;
3304
3305
  this.floorFadeStart = 2.0;
3305
3306
  this.floorFadeEnd = 6.0;
3306
3307
  }
@@ -3658,7 +3659,8 @@ class HomedecoratorAppEventService {
3658
3659
  this.glbCreated = new Subject();
3659
3660
  this.dirty = new Subject();
3660
3661
  this.floorCreated = new BehaviorSubject(undefined);
3661
- this.externalSave = new BehaviorSubject(undefined);
3662
+ this.externalSave = new Subject();
3663
+ this.externalOpen = new Subject();
3662
3664
  this.searchClick = new Subject();
3663
3665
  this.shareProject = new Subject();
3664
3666
  }
@@ -12652,6 +12654,24 @@ class PresetsService {
12652
12654
  this.stateCreated.next();
12653
12655
  return output;
12654
12656
  }
12657
+ saveToCloud(asNew = false) {
12658
+ return new Promise(async (resolve, reject) => {
12659
+ await Promise.all(this.plugins.map(async (plugin) => await plugin.copySceneInstance(asNew)));
12660
+ const schema = await this.createState(true);
12661
+ if (schema.length > this._permanentStoreService.maxSchemaSize) {
12662
+ return reject('Your project has gotten too large to be stored in the cloud. Please select "Download a copy" to store your project locally.');
12663
+ }
12664
+ this._messageService.emit(MessageType.SavePreset);
12665
+ const sub = this._permanentStoreService.save(schema, asNew).subscribe(code => {
12666
+ window.localStorage.setItem('lastPlanId', code);
12667
+ sub.unsubscribe();
12668
+ return resolve(code);
12669
+ }, error => {
12670
+ reject('Error occured while saving the plan. Please check your connection and try again later.');
12671
+ sub.unsubscribe();
12672
+ });
12673
+ });
12674
+ }
12655
12675
  _loadSavedRoomFromPreset(preset) {
12656
12676
  this._loadRoomPlan(!!preset.model, async () => {
12657
12677
  if (!preset.model) {
@@ -12659,7 +12679,10 @@ class PresetsService {
12659
12679
  const json = await this._jsonUtils.readJsonFile(path, false);
12660
12680
  preset.model = JSON.stringify(json);
12661
12681
  }
12662
- const modelObj = JSON.parse(preset.model);
12682
+ let modelObj = JSON.parse(preset.model);
12683
+ if (typeof modelObj === 'string') { // multiple escapes...?
12684
+ modelObj = JSON.parse(modelObj);
12685
+ }
12663
12686
  if (!modelObj.hasOwnProperty('version')) {
12664
12687
  modelObj.version = 1.0;
12665
12688
  }
@@ -13764,6 +13787,10 @@ class FloorService {
13764
13787
  _updateFloorMaterial(floor, floorMaterial, texture) {
13765
13788
  ObjectUtils.DisposeMaterial(floor.getMaterial());
13766
13789
  floor.floorMaterial = floorMaterial;
13790
+ if (texture) {
13791
+ // Update the texture as well
13792
+ floor.floorTexture = texture;
13793
+ }
13767
13794
  this._sceneService.needsRender = true;
13768
13795
  this._sceneService.updatePathTracer();
13769
13796
  }
@@ -26916,8 +26943,8 @@ class LightPresetsService {
26916
26943
  this._lightsService.removeAllLights();
26917
26944
  if (lightPreset.hdri) {
26918
26945
  ObjectUtils.LoadHDRI(this._settingsService.settings.assetPath + lightPreset.hdri, this._sceneService.scene).then(() => {
26919
- this._sceneService.scene.environmentIntensity = lightPreset.hdriIntensity || 1;
26920
- this._sceneService.scene.backgroundIntensity = lightPreset.hdriIntensity || 1;
26946
+ this._sceneService.scene.environmentIntensity = lightPreset.hdriIntensity !== null && lightPreset.hdriIntensity !== undefined ? lightPreset.hdriIntensity : 1;
26947
+ this._sceneService.scene.backgroundIntensity = lightPreset.hdriIntensity !== null && lightPreset.hdriIntensity !== undefined ? lightPreset.hdriIntensity : 1;
26921
26948
  });
26922
26949
  }
26923
26950
  this._sceneService.renderer.toneMapping = toneMappingMap.get(lightPreset.toneMapping || ToneMappingLocal.ACESFilmicToneMapping);
@@ -27188,7 +27215,7 @@ class LoadFurnitureBaseService {
27188
27215
  }
27189
27216
  }
27190
27217
  addToList(list, item) {
27191
- if (!item || (!item.instanceId && !item.metaData.objectUUID)) {
27218
+ if (!item || (!item.metaData || (!item.instanceId && !item.metaData.objectUUID))) {
27192
27219
  return;
27193
27220
  }
27194
27221
  if ((item.instanceId && !list.find(l => l.instanceId === item.instanceId)) ||
@@ -27377,7 +27404,7 @@ class DimensionsService {
27377
27404
  this._itemService = _itemService;
27378
27405
  this._sceneService = _sceneService;
27379
27406
  this._fontService = _fontService;
27380
- this._offSet = 0.05;
27407
+ this._offSet = 0;
27381
27408
  this._labelOffSet = 0.05;
27382
27409
  this._nameHeightArrow = 'height_arrow';
27383
27410
  this._nameWidthArrow = 'width_arrow';
@@ -27432,6 +27459,8 @@ class DimensionsService {
27432
27459
  if (!object.hasOwnProperty('halfSize')) {
27433
27460
  return;
27434
27461
  }
27462
+ const yFlipped = Math.abs(object.rotation.y % (2 * Math.PI) - Math.PI) < 0.001;
27463
+ const direction = yFlipped ? -1 : 1;
27435
27464
  const height = object.getHeight();
27436
27465
  const halfHeight = height / 2;
27437
27466
  const width = object.getWidth();
@@ -27443,7 +27472,7 @@ class DimensionsService {
27443
27472
  const heightArrow = dimensionObject.getObjectByName(this._nameHeightArrow);
27444
27473
  if (heightArrow) {
27445
27474
  ObjectUtils.UpdateArrowLength(heightArrow, height, new Vector3(0, 1, 0), this._headLength, this._headWidth, true);
27446
- heightArrow.position.set(-(halfWidth + this._offSet), 0, -(halfDepth + this._offSet));
27475
+ heightArrow.position.set(-direction * ((halfWidth + this._offSet)), 0, -direction * (halfDepth + this._offSet));
27447
27476
  }
27448
27477
  const heightLabel = dimensionObject.getObjectByName('height_label');
27449
27478
  if (heightLabel) {
@@ -27453,33 +27482,36 @@ class DimensionsService {
27453
27482
  // newHeightLabel.geometry.rotateX(object.rotation.x);
27454
27483
  // newHeightLabel.geometry.rotateY(-object.rotation.y);
27455
27484
  // newHeightLabel.geometry.rotateZ(object.rotation.z);
27456
- newHeightLabel.position.set(-(halfWidth + this._offSet), 0, -(halfDepth + this._offSet));
27485
+ const size = this._getBoxSize(newHeightLabel);
27486
+ newHeightLabel.position.set(-direction * (halfWidth + (this._labelOffSet + size.x)), 0, -direction * (halfDepth + this._labelOffSet));
27457
27487
  dimensionObject.add(newHeightLabel);
27458
27488
  }
27459
27489
  const widthArrow = dimensionObject.getObjectByName(this._nameWidthArrow);
27460
27490
  if (widthArrow) {
27461
27491
  ObjectUtils.UpdateArrowLength(widthArrow, width, new Vector3(1, 0, 0), this._headLength, this._headWidth, true);
27462
- widthArrow.position.set(0, halfHeight + this._offSet, halfDepth + this._offSet);
27492
+ widthArrow.position.set(0, halfHeight + this._offSet, direction * (-halfDepth + this._offSet));
27463
27493
  }
27464
27494
  const widthLabel = dimensionObject.getObjectByName('width_label');
27465
27495
  if (widthLabel) {
27466
27496
  dimensionObject.remove(widthLabel);
27467
27497
  const newWidthLabel = this._createLabel(Dimensioning.mToMeasure(width), 'width_label', object.rotation);
27468
27498
  // newWidthLabel.rotation.set(-object.rotation.x, -object.rotation.y, -object.rotation.z);
27469
- newWidthLabel.position.set(0, halfHeight + this._offSet, (halfDepth + this._offSet));
27499
+ const size = this._getBoxSize(newWidthLabel);
27500
+ newWidthLabel.position.set(-direction * (size.x / 2), halfHeight + this._labelOffSet, direction * (-halfDepth + this._labelOffSet));
27470
27501
  dimensionObject.add(newWidthLabel);
27471
27502
  }
27472
27503
  const depthArrow = dimensionObject.getObjectByName(this._nameDepthArrow);
27473
27504
  if (depthArrow) {
27474
27505
  ObjectUtils.UpdateArrowLength(depthArrow, depth, new Vector3(0, 0, 1), this._headLength, this._headWidth, true);
27475
- depthArrow.position.set(-(halfWidth + this._offSet), halfHeight + this._offSet, 0);
27506
+ depthArrow.position.set(-direction * (halfWidth + this._offSet), -halfHeight + this._offSet, 0);
27476
27507
  }
27477
27508
  const depthLabel = dimensionObject.getObjectByName('depth_label');
27478
27509
  if (depthLabel) {
27479
27510
  dimensionObject.remove(depthLabel);
27480
27511
  const newDepthLabel = this._createLabel(Dimensioning.mToMeasure(depth), 'depth_label', object.rotation);
27481
27512
  // newDepthLabel.rotation.set(-object.rotation.x, -object.rotation.y, -object.rotation.z);
27482
- newDepthLabel.position.set(-(halfWidth + this._offSet), halfHeight + this._offSet, 0);
27513
+ const size = this._getBoxSize(newDepthLabel);
27514
+ newDepthLabel.position.set(-direction * (halfWidth + this._labelOffSet + size.x), -halfHeight + this._labelOffSet, 0);
27483
27515
  dimensionObject.add(newDepthLabel);
27484
27516
  }
27485
27517
  }
@@ -27526,6 +27558,12 @@ class DimensionsService {
27526
27558
  // label.quaternion.copy(new Quaternion().fromArray(new Vector4().setAxisAngleFromQuaternion(this._cameraService.camera.quaternion).negate().toArray()));
27527
27559
  return label;
27528
27560
  }
27561
+ _getBoxSize(mesh) {
27562
+ const box = new Box3().setFromObject(mesh);
27563
+ const size = new Vector3();
27564
+ box.getSize(size);
27565
+ return size;
27566
+ }
27529
27567
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DimensionsService, deps: [{ token: ItemService }, { token: SceneService }, { token: FontService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27530
27568
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DimensionsService }); }
27531
27569
  }
@@ -32411,7 +32449,7 @@ class SelectedChildMaterialTextureComponent {
32411
32449
  </div>
32412
32450
  }
32413
32451
  <input #inputFile [accept]="'image/*'" (change)="handleFileChange($event)" type="file" hidden/>
32414
- `, isInline: true, styles: [".map-title-wrapper{display:flex;flex-direction:row;justify-content:space-between;height:30px}.map-title-wrapper .map-title{display:flex;align-items:center;font-size:12px}.map-title-wrapper .map-title img{height:30px;width:30px}.map-title-wrapper .collapse-wrapper{display:flex;flex-direction:row;column-gap:10px}.map-title-wrapper .collapse-wrapper .collapse-handle.expanded{transition:all .2s}.map-title-wrapper .collapse-wrapper .collapse-handle.expanded .collapse-handle-icon{transform:rotate(180deg)}.map-title-wrapper img{height:30px;width:30px}.map-title-wrapper .color-image,.map-title-wrapper .no-image,.map-title-wrapper img{cursor:pointer;display:flex;height:30px;width:30px;border:1px solid;position:relative;border-radius:5px}.map-title-wrapper .no-image:before,.map-title-wrapper .no-image:after,.map-title-wrapper img:before,.map-title-wrapper img:after{content:\"\";position:absolute;width:42px;height:42px}.map-title-wrapper .no-image:after,.map-title-wrapper img:after{border-bottom:1px solid;transform:rotate(135deg);top:8px;left:9px}.map-title-wrapper .no-image:before,.map-title-wrapper img:before{border-top:1px solid;transform:rotate(45deg);top:8px;left:-21px}.map-content{display:grid;grid-template-areas:\"label value\";grid-template-columns:175px 1fr;margin-left:10px;font-size:12px}.map-content .label{grid-area:label;grid-row:auto;display:flex;align-items:center;border-bottom:1px solid #d3d3d3}.map-content .value{grid-area:value;grid-row:auto;display:flex;height:35px;align-items:center;border-bottom:1px solid #d3d3d3}.map-content .value>*{display:flex;flex-basis:auto;flex-grow:1;flex-shrink:1;width:100%}.map-content .no-image,.map-content img{height:50px;width:50px;border:1px solid}.large-image-viewer{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:999}.large-image-viewer .large-image-viewer-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-height:100vh;max-width:100vw}.large-image-viewer .large-image-viewer-content img{border:1px solid white}.large-image-viewer .large-image-viewer-content .large-image-viewer-close{cursor:pointer;position:absolute;top:0;right:0;background:#ffffff80}.child-material-color-picker{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000}\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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][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: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ColorPickerDialogComponent, selector: "color-picker-dialog", inputs: ["color"], outputs: ["colorSelected"] }], animations: [
32452
+ `, isInline: true, styles: [".map-title-wrapper{display:flex;flex-direction:row;justify-content:space-between;height:30px}.map-title-wrapper .map-title{display:flex;align-items:center;font-size:12px}.map-title-wrapper .map-title img{height:30px;width:30px}.map-title-wrapper .collapse-wrapper{display:flex;flex-direction:row;column-gap:10px}.map-title-wrapper .collapse-wrapper .collapse-handle.expanded{transition:all .2s}.map-title-wrapper .collapse-wrapper .collapse-handle.expanded .collapse-handle-icon{transform:rotate(180deg)}.map-title-wrapper img{height:30px;width:30px}.map-title-wrapper .color-image,.map-title-wrapper .no-image,.map-title-wrapper img{cursor:pointer;display:flex;height:30px;width:30px;border:1px solid;position:relative;border-radius:5px}.map-title-wrapper .no-image:before,.map-title-wrapper .no-image:after,.map-title-wrapper img:before,.map-title-wrapper img:after{content:\"\";position:absolute;width:42px;height:42px}.map-title-wrapper .no-image:after,.map-title-wrapper img:after{border-bottom:1px solid;transform:rotate(135deg);top:8px;left:9px}.map-title-wrapper .no-image:before,.map-title-wrapper img:before{border-top:1px solid;transform:rotate(45deg);top:8px;left:-21px}.map-content{display:grid;grid-template-areas:\"label value\";grid-template-columns:175px 1fr;margin-left:10px;font-size:12px}.map-content .label{grid-area:label;grid-row:auto;display:flex;align-items:center;border-bottom:1px solid #d3d3d3}.map-content .value{grid-area:value;grid-row:auto;display:flex;height:35px;align-items:center;border-bottom:1px solid #d3d3d3}.map-content .value>*{display:flex;flex-basis:auto;flex-grow:1;flex-shrink:1;width:100%}.map-content .no-image,.map-content img{height:50px;width:50px;border:1px solid}.large-image-viewer{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:999}.large-image-viewer .large-image-viewer-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-height:100vh;max-width:100vw}.large-image-viewer .large-image-viewer-content img{border:1px solid white}.large-image-viewer .large-image-viewer-content .large-image-viewer-close{cursor:pointer;position:absolute;top:0;right:0;background:#ffffff80}.child-material-color-picker{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000}\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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][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: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ColorPickerDialogComponent, selector: "color-picker-dialog", inputs: ["color"], outputs: ["colorSelected"] }], animations: [
32415
32453
  trigger('showHideMapContent', [
32416
32454
  state('void', style({ 'height': '0', opacity: 0 })),
32417
32455
  state('*', style({ 'height': '*', opacity: 1 })),
@@ -33173,7 +33211,7 @@ class SelectedChildMaterialComponent {
33173
33211
  </div>
33174
33212
  </div>
33175
33213
  }
33176
- `, isInline: true, styles: [".development-selected-child-material-wrapper{font-size:12px;position:fixed;right:0;top:65px;width:400px;height:100%;background:#fff;box-shadow:0 0 4px #01010180;z-index:10}.development-selected-child-material-wrapper .material-map-wrapper{padding:10px;height:calc(100% - 85px);overflow-y:auto;overflow-x:hidden}.development-selected-child-material-wrapper .selected-child-material-content{display:grid;grid-template-areas:\"label value\";grid-template-columns:175px 1fr}.development-selected-child-material-wrapper .title{font-size:14px;font-weight:700;margin-bottom:10px}.development-selected-child-material-wrapper .label{grid-area:label;grid-row:auto;display:flex;align-items:center;height:30px;border-bottom:1px solid #9bb0d0;background-color:#e4edf4}.development-selected-child-material-wrapper .value{grid-area:value;grid-row:auto;display:flex;align-items:center;height:30px;border-bottom:1px solid #9bb0d0;background-color:#e4edf4}\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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][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: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: SelectedChildMaterialTexturesComponent, selector: "selected-child-material-textures", inputs: ["material"], outputs: ["mapChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
33214
+ `, isInline: true, styles: [".development-selected-child-material-wrapper{font-size:12px;position:fixed;right:0;top:65px;width:400px;height:100%;background:#fff;box-shadow:0 0 4px #01010180;z-index:10}.development-selected-child-material-wrapper .material-map-wrapper{padding:10px;height:calc(100% - 85px);overflow-y:auto;overflow-x:hidden}.development-selected-child-material-wrapper .selected-child-material-content{display:grid;grid-template-areas:\"label value\";grid-template-columns:175px 1fr}.development-selected-child-material-wrapper .title{font-size:14px;font-weight:700;margin-bottom:10px}.development-selected-child-material-wrapper .label{grid-area:label;grid-row:auto;display:flex;align-items:center;height:30px;border-bottom:1px solid #9bb0d0;background-color:#e4edf4}.development-selected-child-material-wrapper .value{grid-area:value;grid-row:auto;display:flex;align-items:center;height:30px;border-bottom:1px solid #9bb0d0;background-color:#e4edf4}\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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][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: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: SelectedChildMaterialTexturesComponent, selector: "selected-child-material-textures", inputs: ["material"], outputs: ["mapChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
33177
33215
  }
33178
33216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedChildMaterialComponent, decorators: [{
33179
33217
  type: Component,
@@ -34342,7 +34380,7 @@ class RenderControlsComponent {
34342
34380
  </div>
34343
34381
  }
34344
34382
 
34345
- `, 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: i3$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: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.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: i9.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.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: RenderProgressComponent, selector: "rp-render-progress", inputs: ["show", "title"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
34383
+ `, 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: i3$2.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.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: RenderProgressComponent, selector: "rp-render-progress", inputs: ["show", "title"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
34346
34384
  }
34347
34385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RenderControlsComponent, decorators: [{
34348
34386
  type: Component,
@@ -34892,11 +34930,11 @@ class SliderInputComponent {
34892
34930
  this.onChange = new EventEmitter();
34893
34931
  }
34894
34932
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SliderInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34895
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SliderInputComponent, isStandalone: false, selector: "rp-slider-input", inputs: { title: "title", min: "min", max: "max", step: "step", value: "value" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"slider-group\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <mat-form-field class=\"slider-group-form-field\" fxFlex=\"20%\">\r\n <input\r\n matInput\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n type=\"number\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange.emit($event.target.value)\"\r\n >\r\n </mat-form-field>\r\n <mat-slider\r\n class=\"slider-group-slider\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n thumbLabel\r\n fxFlex=\"grow\" #ngSlider>\r\n <input matSliderThumb [value]=\"value\" (input)=\"onChange.emit({source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value}.value)\" #ngSliderThumb=\"matSliderThumb\" />\r\n </mat-slider>\r\n</div>\r\n", styles: [".slider-group{padding:0 1em;box-sizing:border-box}.slider-group input{text-align:right;font-size:14px}.slider-group .mat-mdc-form-field-infix{width:auto}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label{transform:translateY(-1.34369em) scale(.75)}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label span{font-size:12px;color:#000}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{padding:5px 0}\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.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: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$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: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i4$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] }); }
34933
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SliderInputComponent, isStandalone: false, selector: "rp-slider-input", inputs: { title: "title", min: "min", max: "max", step: "step", value: "value" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"slider-group\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <mat-form-field class=\"slider-group-form-field\" fxFlex=\"20%\">\r\n <mat-label [textContent]=\"title\"></mat-label>\r\n <input\r\n matInput\r\n type=\"number\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange.emit($event.target.value)\"\r\n >\r\n </mat-form-field>\r\n <mat-slider\r\n class=\"slider-group-slider\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n thumbLabel\r\n fxFlex=\"grow\" #ngSlider>\r\n <input matSliderThumb [value]=\"value\" (input)=\"onChange.emit({source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value}.value)\" #ngSliderThumb=\"matSliderThumb\" />\r\n </mat-slider>\r\n</div>\r\n", styles: [".slider-group{padding:0 1em;box-sizing:border-box}.slider-group input{text-align:right;font-size:14px}.slider-group .mat-mdc-form-field-infix{width:auto}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label{transform:translateY(-1.34369em) scale(.75)}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label span{font-size:12px;color:#000}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{padding:5px 0}\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.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: 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: "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: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] }); }
34896
34934
  }
34897
34935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SliderInputComponent, decorators: [{
34898
34936
  type: Component,
34899
- args: [{ selector: 'rp-slider-input', standalone: false, template: "<div class=\"slider-group\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <mat-form-field class=\"slider-group-form-field\" fxFlex=\"20%\">\r\n <input\r\n matInput\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n type=\"number\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange.emit($event.target.value)\"\r\n >\r\n </mat-form-field>\r\n <mat-slider\r\n class=\"slider-group-slider\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n thumbLabel\r\n fxFlex=\"grow\" #ngSlider>\r\n <input matSliderThumb [value]=\"value\" (input)=\"onChange.emit({source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value}.value)\" #ngSliderThumb=\"matSliderThumb\" />\r\n </mat-slider>\r\n</div>\r\n", styles: [".slider-group{padding:0 1em;box-sizing:border-box}.slider-group input{text-align:right;font-size:14px}.slider-group .mat-mdc-form-field-infix{width:auto}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label{transform:translateY(-1.34369em) scale(.75)}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label span{font-size:12px;color:#000}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{padding:5px 0}\n"] }]
34937
+ args: [{ selector: 'rp-slider-input', standalone: false, template: "<div class=\"slider-group\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <mat-form-field class=\"slider-group-form-field\" fxFlex=\"20%\">\r\n <mat-label [textContent]=\"title\"></mat-label>\r\n <input\r\n matInput\r\n type=\"number\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange.emit($event.target.value)\"\r\n >\r\n </mat-form-field>\r\n <mat-slider\r\n class=\"slider-group-slider\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n thumbLabel\r\n fxFlex=\"grow\" #ngSlider>\r\n <input matSliderThumb [value]=\"value\" (input)=\"onChange.emit({source: ngSliderThumb, parent: ngSlider, value: ngSliderThumb.value}.value)\" #ngSliderThumb=\"matSliderThumb\" />\r\n </mat-slider>\r\n</div>\r\n", styles: [".slider-group{padding:0 1em;box-sizing:border-box}.slider-group input{text-align:right;font-size:14px}.slider-group .mat-mdc-form-field-infix{width:auto}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label{transform:translateY(-1.34369em) scale(.75)}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-label-wrapper .mat-mdc-form-field-label span{font-size:12px;color:#000}.slider-group .mat-mdc-form-field ::ng-deep .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{padding:5px 0}\n"] }]
34900
34938
  }], ctorParameters: () => [], propDecorators: { title: [{
34901
34939
  type: Input
34902
34940
  }], min: [{
@@ -35091,7 +35129,7 @@ class EditLightComponent {
35091
35129
  this._helper = undefined;
35092
35130
  }
35093
35131
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditLightComponent, deps: [{ token: SceneService }, { token: LightsService }], target: i0.ɵɵFactoryTarget.Component }); }
35094
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditLightComponent, isStandalone: false, selector: "edit-light", inputs: { light: "light" }, outputs: { okClick: "okClick", cancelClick: "cancelClick" }, host: { listeners: { "document:mousemove": "moveDialog($event)", "document:mouseup": "cancelMoveDialog($event)" } }, viewQueries: [{ propertyName: "dialogElement", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"edit-popup\" #dialog @showHideDialog [style.top.px]=\"top\" [style.left.px]=\"left\">\r\n <div class=\"title-bar\">\r\n <div class=\"title-bar-move\" (mousedown)=\"handleTitleMouseMove($event)\">\r\n <div class=\"title-description\" [textContent]=\"'EDIT' | localize\"></div>\r\n </div>\r\n <button mat-icon-button class=\"hide-dialog\" (click)=\"hidePopup()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"edit-popup-wrapper\">\r\n <mat-form-field class=\"full-width\">\r\n <mat-label [textContent]=\"'NAME' | localize\"></mat-label>\r\n <input matInput [(ngModel)]=\"light.name\">\r\n </mat-form-field>\r\n <div class=\"key-value-grid\">\r\n <span class=\"key\" [textContent]=\"'VISIBLE' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.visible\" (ngModelChange)=\"render()\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n\r\n @if (light.type === 'DirectionalLight') {\r\n <span class=\"key\" [textContent]=\"'TOP-DOWN-DIRECTIONAL' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.userData.topDownDirectional\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n }\r\n\r\n @if (hasPosition && !light.userData.topDownDirectional) {\r\n <span class=\"key\" [textContent]=\"'WALL-OFFSET'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.userData.wallOffset\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.userData.wallOffset\" (ngModelChange)=\"render()\">\r\n <span class=\"key\" [textContent]=\"'ROTATION-OFFSET'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"359\" step=\"1\" [(ngModel)]=\"light.userData.rotationOffset\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.userData.rotationOffset\" (ngModelChange)=\"render()\">\r\n <span class=\"key\" [textContent]=\"'Y'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.position.y\" (ngModelChange)=\"render()\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.position.y\" (ngModelChange)=\"render()\">\r\n }\r\n\r\n @if (light.hasOwnProperty('color')) {\r\n <span class=\"key\" [textContent]=\"'COLOR' | localize\"></span>\r\n <input class=\"value\" type=\"color\" matInput [ngModel]=\"lightColor\" (ngModelChange)=\"changeLightColor($event)\">\r\n <span class=\"value-readonly\" [textContent]=\"lightColor\"></span>\r\n }\r\n @if (light.hasOwnProperty('groundColor')) {\r\n <span class=\"key\" [textContent]=\"'GROUND_COLOR' | localize\"></span>\r\n <input class=\"value\" type=\"color\" matInput [ngModel]=\"lightGroundColor\" (ngModelChange)=\"changeGroundLightColor($event)\">\r\n <span class=\"value-readonly\" [textContent]=\"lightGroundColor\"></span>\r\n }\r\n\r\n @if (light.hasOwnProperty('intensity')) {\r\n <span class=\"key\" [textContent]=\"'INTENSITY' | localize\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.intensity\" (ngModelChange)=\"render()\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.intensity\" (ngModelChange)=\"render()\">\r\n }\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('angle')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'ANGLE' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.angle\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.angle\" (ngModelChange)=\"render()\">-->\r\n <!-- </ng-container>-->\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('power')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'POWER' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.power\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.power\" (ngModelChange)=\"render()\">-->\r\n <!-- </ng-container>-->\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('decay')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'DECAY' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"4\" step=\"0.001\" [(ngModel)]=\"light.decay\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.decay\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('distance')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'DISTANCE' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.distance\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.distance\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('penumbra')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'PENUMBRA' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"1\" step=\"0.01\" [(ngModel)]=\"light.penumbra\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.penumbra\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('bias')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'BIAS' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.bias\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.bias\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('radius')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'RADIUS' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.radius\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"!light.radius ? 0 : light.radius\" [(ngModel)]=\"light.radius\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n@if (light.hasOwnProperty('castShadow')) {\r\n <span class=\"key\" [textContent]=\"'CAST_SHADOW' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.castShadow\" (ngModelChange)=\"render()\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n}\r\n\r\n@if (light.hasOwnProperty('shadow')) {\r\n <span class=\"key\" [textContent]=\"'NEAR' | localize\"></span>\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.shadow.near\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.near\" [(ngModel)]=\"light.shadow.near\" (ngModelChange)=\"render()\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'FAR' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.shadow.far\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.far\" [(ngModel)]=\"light.shadow.far\" (ngModelChange)=\"render()\">-->\r\n <span class=\"key\" [textContent]=\"'SHADOW_MAPSIZE' | localize\"></span>\r\n <mat-select class=\"dropdown-container\" [value]=\"light.shadow.mapSize.x\">\r\n @for (mapSize of mapSizes; track mapSize) {\r\n <mat-option [value]=\"mapSize\" (click)=\"updateShadowMapSize(mapSize)\">\r\n {{ mapSize }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n <span class=\"value-readonly\"></span>\r\n <span class=\"key\" [textContent]=\"'SHADOW_MAP_RADIUS' | localize\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"5\" step=\"0.1\" [(ngModel)]=\"light.shadow.radius\" (ngModelChange)=\"updateShadowMap()\"></mat-slider>\r\n <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.radius\" [(ngModel)]=\"light.shadow.radius\" (ngModelChange)=\"updateShadowMap()\">\r\n}\r\n\r\n@if (hasHelper) {\r\n <span class=\"key\" [textContent]=\"'HELPER' | localize\"></span>\r\n <mat-checkbox class=\"value\" [ngModel]=\"lightHelper\" (ngModelChange)=\"showHideHelper($event)\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n}\r\n</div>\r\n</div>\r\n<div class=\"button-wrapper\">\r\n <button mat-button class=\"custom-button\" (click)=\"cancel()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">cancel</mat-icon>\r\n {{ 'CANCEL' | localize}}\r\n </button>\r\n <button mat-button class=\"custom-button\" (click)=\"save()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">save</mat-icon>\r\n {{ 'SAVE' | localize}}\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [":host .edit-wrapper{display:flex;flex-direction:row;align-items:center}:host .custom-button{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .edit-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;background:#fff;min-height:400px;min-width:500px;display:flex;flex-direction:column;z-index:905}:host .edit-popup .title-bar{display:flex;justify-content:space-between;background:#3760a1;color:#fff;padding-left:10px}:host .edit-popup .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .edit-popup .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .edit-popup .title-bar mat-icon{color:#fff}:host .edit-popup .edit-popup-wrapper{padding:15px;font-size:14px;overflow-y:auto}:host .edit-popup .button-wrapper{display:flex;align-items:center;justify-content:flex-end;height:60px;padding:10px;bottom:0;right:0}:host .edit-popup .button-wrapper .custom-button:not(last-child){margin-right:10px}:host .edit-popup .full-width{width:100%}:host .edit-popup .key-value-grid{display:grid;grid-template-columns:30% 60% 10%;grid-auto-rows:30px}:host .edit-popup .key-value-grid .key,:host .edit-popup .key-value-grid .value,:host .edit-popup .key-value-grid .value-readonly{align-self:center}:host .edit-popup .key-value-grid mat-slider{height:30px}:host .edit-popup .key-value-grid ::ng-deep .mat-slider-horizontal .mat-slider-wrapper{top:50%}:host .dropdown-container{display:flex;flex-direction:column;justify-content:center}\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.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: "directive", type: i3$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: 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: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
35132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditLightComponent, isStandalone: false, selector: "edit-light", inputs: { light: "light" }, outputs: { okClick: "okClick", cancelClick: "cancelClick" }, host: { listeners: { "document:mousemove": "moveDialog($event)", "document:mouseup": "cancelMoveDialog($event)" } }, viewQueries: [{ propertyName: "dialogElement", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"edit-popup\" #dialog @showHideDialog [style.top.px]=\"top\" [style.left.px]=\"left\">\r\n <div class=\"title-bar\">\r\n <div class=\"title-bar-move\" (mousedown)=\"handleTitleMouseMove($event)\">\r\n <div class=\"title-description\" [textContent]=\"'EDIT' | localize\"></div>\r\n </div>\r\n <button mat-icon-button class=\"hide-dialog\" (click)=\"hidePopup()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"edit-popup-wrapper\">\r\n <mat-form-field class=\"full-width\">\r\n <mat-label [textContent]=\"'NAME' | localize\"></mat-label>\r\n <input matInput [(ngModel)]=\"light.name\">\r\n </mat-form-field>\r\n <div class=\"key-value-grid\">\r\n <span class=\"key\" [textContent]=\"'VISIBLE' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.visible\" (ngModelChange)=\"render()\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n\r\n @if (light.type === 'DirectionalLight') {\r\n <span class=\"key\" [textContent]=\"'TOP-DOWN-DIRECTIONAL' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.userData.topDownDirectional\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n }\r\n\r\n @if (hasPosition && !light.userData.topDownDirectional) {\r\n <span class=\"key\" [textContent]=\"'WALL-OFFSET'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.userData.wallOffset\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.userData.wallOffset\" (ngModelChange)=\"render()\">\r\n <span class=\"key\" [textContent]=\"'ROTATION-OFFSET'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"359\" step=\"1\" [(ngModel)]=\"light.userData.rotationOffset\" (ngModelChange)=\"this.updateOffsets(light)\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.userData.rotationOffset\" (ngModelChange)=\"render()\">\r\n <span class=\"key\" [textContent]=\"'Y'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.position.y\" (ngModelChange)=\"render()\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.position.y\" (ngModelChange)=\"render()\">\r\n }\r\n\r\n @if (light.hasOwnProperty('color')) {\r\n <span class=\"key\" [textContent]=\"'COLOR' | localize\"></span>\r\n <input class=\"value\" type=\"color\" matInput [ngModel]=\"lightColor\" (ngModelChange)=\"changeLightColor($event)\">\r\n <span class=\"value-readonly\" [textContent]=\"lightColor\"></span>\r\n }\r\n @if (light.hasOwnProperty('groundColor')) {\r\n <span class=\"key\" [textContent]=\"'GROUND_COLOR' | localize\"></span>\r\n <input class=\"value\" type=\"color\" matInput [ngModel]=\"lightGroundColor\" (ngModelChange)=\"changeGroundLightColor($event)\">\r\n <span class=\"value-readonly\" [textContent]=\"lightGroundColor\"></span>\r\n }\r\n\r\n @if (light.hasOwnProperty('intensity')) {\r\n <span class=\"key\" [textContent]=\"'INTENSITY' | localize\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.intensity\" (ngModelChange)=\"render()\"></mat-slider>\r\n <input matInput type=\"number\" [(ngModel)]=\"light.intensity\" (ngModelChange)=\"render()\">\r\n }\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('angle')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'ANGLE' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.angle\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.angle\" (ngModelChange)=\"render()\">-->\r\n <!-- </ng-container>-->\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('power')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'POWER' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.power\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.power\" (ngModelChange)=\"render()\">-->\r\n <!-- </ng-container>-->\r\n\r\n <!-- <ng-container *ngIf=\"light.hasOwnProperty('decay')\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'DECAY' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"4\" step=\"0.001\" [(ngModel)]=\"light.decay\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.decay\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('distance')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'DISTANCE' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.distance\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.distance\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('penumbra')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'PENUMBRA' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"1\" step=\"0.01\" [(ngModel)]=\"light.penumbra\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.penumbra\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('bias')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'BIAS' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.bias\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [(ngModel)]=\"light.bias\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n<!-- <ng-container *ngIf=\"light.hasOwnProperty('radius')\">-->\r\n<!-- <span class=\"key\" [textContent]=\"'RADIUS' | localize\"></span>-->\r\n<!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"20\" step=\"0.01\" [(ngModel)]=\"light.radius\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n<!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"!light.radius ? 0 : light.radius\" [(ngModel)]=\"light.radius\" (ngModelChange)=\"render()\">-->\r\n<!-- </ng-container>-->\r\n\r\n@if (light.hasOwnProperty('castShadow')) {\r\n <span class=\"key\" [textContent]=\"'CAST_SHADOW' | localize\"></span>\r\n <mat-checkbox class=\"value\" [(ngModel)]=\"light.castShadow\" (ngModelChange)=\"render()\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n}\r\n\r\n@if (light.hasOwnProperty('shadow')) {\r\n <span class=\"key\" [textContent]=\"'NEAR' | localize\"></span>\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.shadow.near\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.near\" [(ngModel)]=\"light.shadow.near\" (ngModelChange)=\"render()\">-->\r\n <!-- <span class=\"key\" [textContent]=\"'FAR' | localize\"></span>-->\r\n <!-- <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"50\" step=\"1\" [(ngModel)]=\"light.shadow.far\" (ngModelChange)=\"render()\"></mat-slider>-->\r\n <!-- <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.far\" [(ngModel)]=\"light.shadow.far\" (ngModelChange)=\"render()\">-->\r\n <span class=\"key\" [textContent]=\"'SHADOW_MAPSIZE' | localize\"></span>\r\n <mat-select class=\"dropdown-container\" [value]=\"light.shadow.mapSize.x\">\r\n @for (mapSize of mapSizes; track mapSize) {\r\n <mat-option [value]=\"mapSize\" (click)=\"updateShadowMapSize(mapSize)\">\r\n {{ mapSize }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n <span class=\"value-readonly\"></span>\r\n <span class=\"key\" [textContent]=\"'SHADOW_MAP_RADIUS' | localize\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"0\" max=\"5\" step=\"0.1\" [(ngModel)]=\"light.shadow.radius\" (ngModelChange)=\"updateShadowMap()\"></mat-slider>\r\n <input matInput type=\"number\" [placeholder]=\"0\" [value]=\"light.shadow.radius\" [(ngModel)]=\"light.shadow.radius\" (ngModelChange)=\"updateShadowMap()\">\r\n}\r\n\r\n@if (hasHelper) {\r\n <span class=\"key\" [textContent]=\"'HELPER' | localize\"></span>\r\n <mat-checkbox class=\"value\" [ngModel]=\"lightHelper\" (ngModelChange)=\"showHideHelper($event)\"></mat-checkbox>\r\n <span class=\"value-readonly\"></span>\r\n}\r\n</div>\r\n</div>\r\n<div class=\"button-wrapper\">\r\n <button mat-button class=\"custom-button\" (click)=\"cancel()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">cancel</mat-icon>\r\n {{ 'CANCEL' | localize}}\r\n </button>\r\n <button mat-button class=\"custom-button\" (click)=\"save()\">\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">save</mat-icon>\r\n {{ 'SAVE' | localize}}\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [":host .edit-wrapper{display:flex;flex-direction:row;align-items:center}:host .custom-button{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .edit-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;background:#fff;min-height:400px;min-width:500px;display:flex;flex-direction:column;z-index:905}:host .edit-popup .title-bar{display:flex;justify-content:space-between;background:#3760a1;color:#fff;padding-left:10px}:host .edit-popup .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .edit-popup .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .edit-popup .title-bar mat-icon{color:#fff}:host .edit-popup .edit-popup-wrapper{padding:15px;font-size:14px;overflow-y:auto}:host .edit-popup .button-wrapper{display:flex;align-items:center;justify-content:flex-end;height:60px;padding:10px;bottom:0;right:0}:host .edit-popup .button-wrapper .custom-button:not(last-child){margin-right:10px}:host .edit-popup .full-width{width:100%}:host .edit-popup .key-value-grid{display:grid;grid-template-columns:30% 60% 10%;grid-auto-rows:30px}:host .edit-popup .key-value-grid .key,:host .edit-popup .key-value-grid .value,:host .edit-popup .key-value-grid .value-readonly{align-self:center}:host .edit-popup .key-value-grid mat-slider{height:30px}:host .edit-popup .key-value-grid ::ng-deep .mat-slider-horizontal .mat-slider-wrapper{top:50%}:host .dropdown-container{display:flex;flex-direction:column;justify-content:center}\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.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: "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: 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: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { 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: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
35095
35133
  trigger('showHideDialog', [
35096
35134
  state('void', style({ opacity: 0 })),
35097
35135
  state('*', style({ opacity: 1 })),
@@ -35175,156 +35213,156 @@ class EditLightplanComponent {
35175
35213
  }
35176
35214
  }
35177
35215
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditLightplanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditLightplanComponent, isStandalone: false, selector: "edit-lightplan", inputs: { lightPreset: "lightPreset" }, outputs: { saveClick: "saveClick", cancelClick: "cancelClick" }, ngImport: i0, template: `
35179
- <div class="edit-popup">
35180
- <div class="title-bar">
35181
- <div class="title-description" [textContent]="'EDIT' | localize"></div>
35182
- </div>
35183
- <div class="edit-popup-wrapper">
35184
- <mat-form-field class="full-width">
35185
- <mat-label [textContent]="'NAME' | localize"></mat-label>
35186
- <input matInput [(ngModel)]="lightPresetClone.name">
35187
- </mat-form-field>
35188
- <mat-form-field class="full-width">
35189
- <mat-label [textContent]="'GROUP' | localize"></mat-label>
35190
- <input matInput [(ngModel)]="lightPresetClone.group">
35191
- </mat-form-field>
35192
- <div class="key-value-grid">
35193
- <span class="key" [textContent]="'NAVIGATOR_TYPE' | localize"></span>
35194
- <mat-select class="dropdown-container" [value]="lightPresetClone.navigatorType" (keydown)="handleSelectKeyDown($event, 'navigatorType')">
35195
- @for (navigatorType of navigatorTypes | keys; track navigatorType) {
35196
- <mat-option [value]="navigatorType.key" (click)="lightPresetClone.navigatorType = navigatorType.value">
35197
- {{ navigatorType.key }}
35198
- </mat-option>
35199
- }
35200
- </mat-select>
35201
- <span class="value-readonly"></span>
35202
-
35203
- <span class="key" [textContent]="'SHADOW_MAP_TYPE' | localize"></span>
35204
- <mat-select class="dropdown-container" [value]="lightPresetClone.shadowMapType">
35205
- @for (mapType of shadowMapTypes | keys; track mapType) {
35206
- <mat-option [value]="mapType.key" (click)="lightPresetClone.shadowMapType = mapType.value">
35207
- {{ mapType.key }}
35208
- </mat-option>
35209
- }
35210
- </mat-select>
35211
- <span class="value-readonly"></span>
35212
-
35213
- <span class="key" [textContent]="'OUTPUT_ENCODING' | localize"></span>
35214
- <mat-select class="dropdown-container" [value]="lightPresetClone.outputEncoding">
35215
- @for (encoding of encodings | keys; track encoding) {
35216
- <mat-option [value]="encoding.key" (click)="lightPresetClone.outputEncoding = encoding.value">
35217
- {{ encoding.key }}
35218
- </mat-option>
35219
- }
35220
- </mat-select>
35221
- <span class="value-readonly"></span>
35222
-
35223
- <span class="key" [textContent]="'TONE_MAPPING_EXPOSURE' | localize"></span>
35224
- <mat-slider class="value" thumbLabel min="0" max="3" step="0.1" [(ngModel)]="lightPresetClone.toneMappingExposure"><input matSliderThumb [value]="lightPresetClone.toneMappingExposure" /></mat-slider>
35225
- <input matInput type="number" [step]="0.1" [placeholder]="1" [value]="lightPresetClone.toneMappingExposure" [(ngModel)]="lightPresetClone.toneMappingExposure">
35226
-
35227
- <span class="key" [textContent]="'PHYSICALLY_CORRECT_LIGHTS' | localize"></span>
35228
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.physicallyCorrectLights"></mat-checkbox>
35229
- <span class="value-readonly"></span>
35230
-
35231
- <span class="key" [textContent]="'DEFAULT' | localize"></span>
35232
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.default"></mat-checkbox>
35233
- <span class="value-readonly"></span>
35234
-
35235
- <span class="key" [textContent]="'STANDALONE' | localize"></span>
35236
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.standalone"></mat-checkbox>
35237
- <span class="value-readonly"></span>
35238
- </div>
35239
- </div>
35240
- <div class="button-wrapper">
35241
- <button mat-button class="custom-button" (click)="cancel()">
35242
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">cancel</mat-icon>
35243
- {{ 'CANCEL' | localize}}
35244
- </button>
35245
- <button mat-button class="custom-button" (click)="save()">
35246
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">save</mat-icon>
35247
- {{ 'SAVE' | localize}}
35248
- </button>
35249
- </div>
35250
- </div>
35251
- `, isInline: true, styles: [":host .edit-wrapper{display:flex;flex-direction:row;align-items:center}:host .custom-button{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .edit-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;background:#fff;display:flex;flex-direction:column;z-index:905}:host .edit-popup .title-bar{display:flex;justify-content:space-between;align-items:center;height:40px;background:#3760a1;color:#fff;padding-left:10px}:host .edit-popup .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .edit-popup .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .edit-popup .title-bar mat-icon{color:#fff}:host .edit-popup .edit-popup-wrapper{padding:10px;font-size:12px;overflow-y:auto}:host .edit-popup .button-wrapper{display:flex;align-items:center;justify-content:flex-end;height:60px;padding:10px;bottom:0;right:0}:host .edit-popup .button-wrapper .custom-button:not(last-child){margin-right:10px}:host .edit-popup .full-width{width:100%}:host .edit-popup .key-value-grid{display:grid;grid-template-columns:40% 50% 10%;grid-auto-rows:30px}:host .edit-popup .key-value-grid .key,:host .edit-popup .key-value-grid .value,:host .edit-popup .key-value-grid .value-readonly{align-self:center}:host .edit-popup .key-value-grid mat-slider{height:30px}:host .edit-popup .key-value-grid ::ng-deep .mat-slider-horizontal .mat-slider-wrapper{top:50%}:host .dropdown-container{display:flex;flex-direction:column;justify-content:center}\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.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: "directive", type: i3$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: 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: "component", type: i1$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i4$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "component", type: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: KeysPipe, name: "keys" }] }); }
35216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditLightplanComponent, isStandalone: false, selector: "edit-lightplan", inputs: { lightPreset: "lightPreset" }, outputs: { saveClick: "saveClick", cancelClick: "cancelClick" }, ngImport: i0, template: `
35217
+ <div class="edit-popup">
35218
+ <div class="title-bar">
35219
+ <div class="title-description" [textContent]="'EDIT' | localize"></div>
35220
+ </div>
35221
+ <div class="edit-popup-wrapper">
35222
+ <mat-form-field class="full-width">
35223
+ <mat-label [textContent]="'NAME' | localize"></mat-label>
35224
+ <input matInput [(ngModel)]="lightPresetClone.name">
35225
+ </mat-form-field>
35226
+ <mat-form-field class="full-width">
35227
+ <mat-label [textContent]="'GROUP' | localize"></mat-label>
35228
+ <input matInput [(ngModel)]="lightPresetClone.group">
35229
+ </mat-form-field>
35230
+ <div class="key-value-grid">
35231
+ <span class="key" [textContent]="'NAVIGATOR_TYPE' | localize"></span>
35232
+ <mat-select class="dropdown-container" [value]="lightPresetClone.navigatorType" (keydown)="handleSelectKeyDown($event, 'navigatorType')">
35233
+ @for (navigatorType of navigatorTypes | keys; track navigatorType) {
35234
+ <mat-option [value]="navigatorType.key" (click)="lightPresetClone.navigatorType = navigatorType.value">
35235
+ {{ navigatorType.key }}
35236
+ </mat-option>
35237
+ }
35238
+ </mat-select>
35239
+ <span class="value-readonly"></span>
35240
+
35241
+ <span class="key" [textContent]="'SHADOW_MAP_TYPE' | localize"></span>
35242
+ <mat-select class="dropdown-container" [value]="lightPresetClone.shadowMapType">
35243
+ @for (mapType of shadowMapTypes | keys; track mapType) {
35244
+ <mat-option [value]="mapType.key" (click)="lightPresetClone.shadowMapType = mapType.value">
35245
+ {{ mapType.key }}
35246
+ </mat-option>
35247
+ }
35248
+ </mat-select>
35249
+ <span class="value-readonly"></span>
35250
+
35251
+ <span class="key" [textContent]="'OUTPUT_ENCODING' | localize"></span>
35252
+ <mat-select class="dropdown-container" [value]="lightPresetClone.outputEncoding">
35253
+ @for (encoding of encodings | keys; track encoding) {
35254
+ <mat-option [value]="encoding.key" (click)="lightPresetClone.outputEncoding = encoding.value">
35255
+ {{ encoding.key }}
35256
+ </mat-option>
35257
+ }
35258
+ </mat-select>
35259
+ <span class="value-readonly"></span>
35260
+
35261
+ <span class="key" [textContent]="'TONE_MAPPING_EXPOSURE' | localize"></span>
35262
+ <mat-slider class="value" thumbLabel min="0" max="3" step="0.1" [(ngModel)]="lightPresetClone.toneMappingExposure"><input matSliderThumb [value]="lightPresetClone.toneMappingExposure" /></mat-slider>
35263
+ <input matInput type="number" [step]="0.1" [placeholder]="1" [value]="lightPresetClone.toneMappingExposure" [(ngModel)]="lightPresetClone.toneMappingExposure">
35264
+
35265
+ <span class="key" [textContent]="'PHYSICALLY_CORRECT_LIGHTS' | localize"></span>
35266
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.physicallyCorrectLights"></mat-checkbox>
35267
+ <span class="value-readonly"></span>
35268
+
35269
+ <span class="key" [textContent]="'DEFAULT' | localize"></span>
35270
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.default"></mat-checkbox>
35271
+ <span class="value-readonly"></span>
35272
+
35273
+ <span class="key" [textContent]="'STANDALONE' | localize"></span>
35274
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.standalone"></mat-checkbox>
35275
+ <span class="value-readonly"></span>
35276
+ </div>
35277
+ </div>
35278
+ <div class="button-wrapper">
35279
+ <button mat-button class="custom-button" (click)="cancel()">
35280
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">cancel</mat-icon>
35281
+ {{ 'CANCEL' | localize}}
35282
+ </button>
35283
+ <button mat-button class="custom-button" (click)="save()">
35284
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">save</mat-icon>
35285
+ {{ 'SAVE' | localize}}
35286
+ </button>
35287
+ </div>
35288
+ </div>
35289
+ `, isInline: true, styles: [":host .edit-wrapper{display:flex;flex-direction:row;align-items:center}:host .custom-button{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .edit-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;background:#fff;display:flex;flex-direction:column;z-index:905}:host .edit-popup .title-bar{display:flex;justify-content:space-between;align-items:center;height:40px;background:#3760a1;color:#fff;padding-left:10px}:host .edit-popup .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .edit-popup .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .edit-popup .title-bar mat-icon{color:#fff}:host .edit-popup .edit-popup-wrapper{padding:10px;font-size:12px;overflow-y:auto}:host .edit-popup .button-wrapper{display:flex;align-items:center;justify-content:flex-end;height:60px;padding:10px;bottom:0;right:0}:host .edit-popup .button-wrapper .custom-button:not(last-child){margin-right:10px}:host .edit-popup .full-width{width:100%}:host .edit-popup .key-value-grid{display:grid;grid-template-columns:40% 50% 10%;grid-auto-rows:30px}:host .edit-popup .key-value-grid .key,:host .edit-popup .key-value-grid .value,:host .edit-popup .key-value-grid .value-readonly{align-self:center}:host .edit-popup .key-value-grid mat-slider{height:30px}:host .edit-popup .key-value-grid ::ng-deep .mat-slider-horizontal .mat-slider-wrapper{top:50%}:host .dropdown-container{display:flex;flex-direction:column;justify-content:center}\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.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: "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: 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: "component", type: i1$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { 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: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: KeysPipe, name: "keys" }] }); }
35252
35290
  }
35253
35291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditLightplanComponent, decorators: [{
35254
35292
  type: Component,
35255
- args: [{ selector: 'edit-lightplan', template: `
35256
- <div class="edit-popup">
35257
- <div class="title-bar">
35258
- <div class="title-description" [textContent]="'EDIT' | localize"></div>
35259
- </div>
35260
- <div class="edit-popup-wrapper">
35261
- <mat-form-field class="full-width">
35262
- <mat-label [textContent]="'NAME' | localize"></mat-label>
35263
- <input matInput [(ngModel)]="lightPresetClone.name">
35264
- </mat-form-field>
35265
- <mat-form-field class="full-width">
35266
- <mat-label [textContent]="'GROUP' | localize"></mat-label>
35267
- <input matInput [(ngModel)]="lightPresetClone.group">
35268
- </mat-form-field>
35269
- <div class="key-value-grid">
35270
- <span class="key" [textContent]="'NAVIGATOR_TYPE' | localize"></span>
35271
- <mat-select class="dropdown-container" [value]="lightPresetClone.navigatorType" (keydown)="handleSelectKeyDown($event, 'navigatorType')">
35272
- @for (navigatorType of navigatorTypes | keys; track navigatorType) {
35273
- <mat-option [value]="navigatorType.key" (click)="lightPresetClone.navigatorType = navigatorType.value">
35274
- {{ navigatorType.key }}
35275
- </mat-option>
35276
- }
35277
- </mat-select>
35278
- <span class="value-readonly"></span>
35279
-
35280
- <span class="key" [textContent]="'SHADOW_MAP_TYPE' | localize"></span>
35281
- <mat-select class="dropdown-container" [value]="lightPresetClone.shadowMapType">
35282
- @for (mapType of shadowMapTypes | keys; track mapType) {
35283
- <mat-option [value]="mapType.key" (click)="lightPresetClone.shadowMapType = mapType.value">
35284
- {{ mapType.key }}
35285
- </mat-option>
35286
- }
35287
- </mat-select>
35288
- <span class="value-readonly"></span>
35289
-
35290
- <span class="key" [textContent]="'OUTPUT_ENCODING' | localize"></span>
35291
- <mat-select class="dropdown-container" [value]="lightPresetClone.outputEncoding">
35292
- @for (encoding of encodings | keys; track encoding) {
35293
- <mat-option [value]="encoding.key" (click)="lightPresetClone.outputEncoding = encoding.value">
35294
- {{ encoding.key }}
35295
- </mat-option>
35296
- }
35297
- </mat-select>
35298
- <span class="value-readonly"></span>
35299
-
35300
- <span class="key" [textContent]="'TONE_MAPPING_EXPOSURE' | localize"></span>
35301
- <mat-slider class="value" thumbLabel min="0" max="3" step="0.1" [(ngModel)]="lightPresetClone.toneMappingExposure"><input matSliderThumb [value]="lightPresetClone.toneMappingExposure" /></mat-slider>
35302
- <input matInput type="number" [step]="0.1" [placeholder]="1" [value]="lightPresetClone.toneMappingExposure" [(ngModel)]="lightPresetClone.toneMappingExposure">
35303
-
35304
- <span class="key" [textContent]="'PHYSICALLY_CORRECT_LIGHTS' | localize"></span>
35305
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.physicallyCorrectLights"></mat-checkbox>
35306
- <span class="value-readonly"></span>
35307
-
35308
- <span class="key" [textContent]="'DEFAULT' | localize"></span>
35309
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.default"></mat-checkbox>
35310
- <span class="value-readonly"></span>
35311
-
35312
- <span class="key" [textContent]="'STANDALONE' | localize"></span>
35313
- <mat-checkbox class="value" [(ngModel)]="lightPresetClone.standalone"></mat-checkbox>
35314
- <span class="value-readonly"></span>
35315
- </div>
35316
- </div>
35317
- <div class="button-wrapper">
35318
- <button mat-button class="custom-button" (click)="cancel()">
35319
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">cancel</mat-icon>
35320
- {{ 'CANCEL' | localize}}
35321
- </button>
35322
- <button mat-button class="custom-button" (click)="save()">
35323
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">save</mat-icon>
35324
- {{ 'SAVE' | localize}}
35325
- </button>
35326
- </div>
35327
- </div>
35293
+ args: [{ selector: 'edit-lightplan', template: `
35294
+ <div class="edit-popup">
35295
+ <div class="title-bar">
35296
+ <div class="title-description" [textContent]="'EDIT' | localize"></div>
35297
+ </div>
35298
+ <div class="edit-popup-wrapper">
35299
+ <mat-form-field class="full-width">
35300
+ <mat-label [textContent]="'NAME' | localize"></mat-label>
35301
+ <input matInput [(ngModel)]="lightPresetClone.name">
35302
+ </mat-form-field>
35303
+ <mat-form-field class="full-width">
35304
+ <mat-label [textContent]="'GROUP' | localize"></mat-label>
35305
+ <input matInput [(ngModel)]="lightPresetClone.group">
35306
+ </mat-form-field>
35307
+ <div class="key-value-grid">
35308
+ <span class="key" [textContent]="'NAVIGATOR_TYPE' | localize"></span>
35309
+ <mat-select class="dropdown-container" [value]="lightPresetClone.navigatorType" (keydown)="handleSelectKeyDown($event, 'navigatorType')">
35310
+ @for (navigatorType of navigatorTypes | keys; track navigatorType) {
35311
+ <mat-option [value]="navigatorType.key" (click)="lightPresetClone.navigatorType = navigatorType.value">
35312
+ {{ navigatorType.key }}
35313
+ </mat-option>
35314
+ }
35315
+ </mat-select>
35316
+ <span class="value-readonly"></span>
35317
+
35318
+ <span class="key" [textContent]="'SHADOW_MAP_TYPE' | localize"></span>
35319
+ <mat-select class="dropdown-container" [value]="lightPresetClone.shadowMapType">
35320
+ @for (mapType of shadowMapTypes | keys; track mapType) {
35321
+ <mat-option [value]="mapType.key" (click)="lightPresetClone.shadowMapType = mapType.value">
35322
+ {{ mapType.key }}
35323
+ </mat-option>
35324
+ }
35325
+ </mat-select>
35326
+ <span class="value-readonly"></span>
35327
+
35328
+ <span class="key" [textContent]="'OUTPUT_ENCODING' | localize"></span>
35329
+ <mat-select class="dropdown-container" [value]="lightPresetClone.outputEncoding">
35330
+ @for (encoding of encodings | keys; track encoding) {
35331
+ <mat-option [value]="encoding.key" (click)="lightPresetClone.outputEncoding = encoding.value">
35332
+ {{ encoding.key }}
35333
+ </mat-option>
35334
+ }
35335
+ </mat-select>
35336
+ <span class="value-readonly"></span>
35337
+
35338
+ <span class="key" [textContent]="'TONE_MAPPING_EXPOSURE' | localize"></span>
35339
+ <mat-slider class="value" thumbLabel min="0" max="3" step="0.1" [(ngModel)]="lightPresetClone.toneMappingExposure"><input matSliderThumb [value]="lightPresetClone.toneMappingExposure" /></mat-slider>
35340
+ <input matInput type="number" [step]="0.1" [placeholder]="1" [value]="lightPresetClone.toneMappingExposure" [(ngModel)]="lightPresetClone.toneMappingExposure">
35341
+
35342
+ <span class="key" [textContent]="'PHYSICALLY_CORRECT_LIGHTS' | localize"></span>
35343
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.physicallyCorrectLights"></mat-checkbox>
35344
+ <span class="value-readonly"></span>
35345
+
35346
+ <span class="key" [textContent]="'DEFAULT' | localize"></span>
35347
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.default"></mat-checkbox>
35348
+ <span class="value-readonly"></span>
35349
+
35350
+ <span class="key" [textContent]="'STANDALONE' | localize"></span>
35351
+ <mat-checkbox class="value" [(ngModel)]="lightPresetClone.standalone"></mat-checkbox>
35352
+ <span class="value-readonly"></span>
35353
+ </div>
35354
+ </div>
35355
+ <div class="button-wrapper">
35356
+ <button mat-button class="custom-button" (click)="cancel()">
35357
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">cancel</mat-icon>
35358
+ {{ 'CANCEL' | localize}}
35359
+ </button>
35360
+ <button mat-button class="custom-button" (click)="save()">
35361
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">save</mat-icon>
35362
+ {{ 'SAVE' | localize}}
35363
+ </button>
35364
+ </div>
35365
+ </div>
35328
35366
  `, standalone: false, styles: [":host .edit-wrapper{display:flex;flex-direction:row;align-items:center}:host .custom-button{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .edit-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;background:#fff;display:flex;flex-direction:column;z-index:905}:host .edit-popup .title-bar{display:flex;justify-content:space-between;align-items:center;height:40px;background:#3760a1;color:#fff;padding-left:10px}:host .edit-popup .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .edit-popup .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .edit-popup .title-bar mat-icon{color:#fff}:host .edit-popup .edit-popup-wrapper{padding:10px;font-size:12px;overflow-y:auto}:host .edit-popup .button-wrapper{display:flex;align-items:center;justify-content:flex-end;height:60px;padding:10px;bottom:0;right:0}:host .edit-popup .button-wrapper .custom-button:not(last-child){margin-right:10px}:host .edit-popup .full-width{width:100%}:host .edit-popup .key-value-grid{display:grid;grid-template-columns:40% 50% 10%;grid-auto-rows:30px}:host .edit-popup .key-value-grid .key,:host .edit-popup .key-value-grid .value,:host .edit-popup .key-value-grid .value-readonly{align-self:center}:host .edit-popup .key-value-grid mat-slider{height:30px}:host .edit-popup .key-value-grid ::ng-deep .mat-slider-horizontal .mat-slider-wrapper{top:50%}:host .dropdown-container{display:flex;flex-direction:column;justify-content:center}\n"] }]
35329
35367
  }], ctorParameters: () => [], propDecorators: { lightPreset: [{
35330
35368
  type: Input
@@ -35634,7 +35672,7 @@ class LightplanComponent {
35634
35672
  (cancelClick)="showPlanEditPopup = false"
35635
35673
  ></edit-lightplan>
35636
35674
  }
35637
- `, isInline: true, styles: [":host.popup-showing .lightplan-wrapper{opacity:.1!important}:host.show{display:flex}:host .lightplan-wrapper{opacity:1;position:fixed;background:#fff;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;z-index:904}:host .lightplan-wrapper .scene-lights{max-height:300px;overflow-y:auto}:host .title-bar{display:flex;justify-content:flex-end;background:#3760a1}:host .title-bar mat-icon{color:#fff}:host .title-bar .title-bar-move{display:flex;flex-basis:100%}:host .content-wrapper{font-size:14px;padding:15px;background:#fff;min-height:400px;min-width:500px;display:flex;flex-direction:column;max-height:500px;overflow-y:auto}:host .section:not(last-child){margin-bottom:20px}:host .button-wrapper{display:flex;height:60px;align-items:center;justify-content:flex-end}:host .edit-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between}:host .edit-button-wrapper{display:flex}:host h4{margin:10px 0}:host .edit-lightplan-wrapper{display:flex}:host .light-preset-selection{display:flex}:host .button-row{display:flex}:host .add-light{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .add-light:not(last-child){margin-right:5px}:host .dropdown-container{align-self:center}:host .section-row{display:flex;flex-direction:row;justify-content:space-between}::ng-deep .cdk-overlay-container .mat-mdc-select-panel .mat-option-text{display:flex;justify-content:space-between;align-items:center}\n"], dependencies: [{ 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: 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: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i9.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: "directive", type: i9.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: EditLightComponent, selector: "edit-light", inputs: ["light"], outputs: ["okClick", "cancelClick"] }, { kind: "component", type: EditLightplanComponent, selector: "edit-lightplan", inputs: ["lightPreset"], outputs: ["saveClick", "cancelClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
35675
+ `, isInline: true, styles: [":host.popup-showing .lightplan-wrapper{opacity:.1!important}:host.show{display:flex}:host .lightplan-wrapper{opacity:1;position:fixed;background:#fff;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 3px 2px #0101014d;z-index:904}:host .lightplan-wrapper .scene-lights{max-height:300px;overflow-y:auto}:host .title-bar{display:flex;justify-content:flex-end;background:#3760a1}:host .title-bar mat-icon{color:#fff}:host .title-bar .title-bar-move{display:flex;flex-basis:100%}:host .content-wrapper{font-size:14px;padding:15px;background:#fff;min-height:400px;min-width:500px;display:flex;flex-direction:column;max-height:500px;overflow-y:auto}:host .section:not(last-child){margin-bottom:20px}:host .button-wrapper{display:flex;height:60px;align-items:center;justify-content:flex-end}:host .edit-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between}:host .edit-button-wrapper{display:flex}:host h4{margin:10px 0}:host .edit-lightplan-wrapper{display:flex}:host .light-preset-selection{display:flex}:host .button-row{display:flex}:host .add-light{font-size:11px;border:1px solid #3760a1;border-radius:25px}:host .add-light:not(last-child){margin-right:5px}:host .dropdown-container{align-self:center}:host .section-row{display:flex;flex-direction:row;justify-content:space-between}::ng-deep .cdk-overlay-container .mat-mdc-select-panel .mat-option-text{display:flex;justify-content:space-between;align-items:center}\n"], dependencies: [{ 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: 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: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { 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: "directive", type: i12.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: EditLightComponent, selector: "edit-light", inputs: ["light"], outputs: ["okClick", "cancelClick"] }, { kind: "component", type: EditLightplanComponent, selector: "edit-lightplan", inputs: ["lightPreset"], outputs: ["saveClick", "cancelClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
35638
35676
  trigger('showHideDialog', [
35639
35677
  state('void', style({ opacity: 0 })),
35640
35678
  state('*', style({ opacity: 1 })),
@@ -36440,7 +36478,7 @@ class WallLengthInputComponent {
36440
36478
  this._messageService.emit(MessageType.WallLengthInputValueChanged, this.length);
36441
36479
  }
36442
36480
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WallLengthInputComponent, deps: [{ token: MessageBusService }], target: i0.ɵɵFactoryTarget.Component }); }
36443
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: WallLengthInputComponent, isStandalone: false, selector: "wall-length-input", ngImport: i0, template: "@if (show) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"'LENGTH' | localize\"\r\n [inputAutofocus]=\"show\"\r\n [(ngModel)]=\"length\"\r\n (keydown.enter)=\"onOkButtonClick()\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"!length\"\r\n (click)=\"onOkButtonClick()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"!length\"\r\n (click)=\"onCancelButtonClick()\"\r\n (dragover)=\"onCancelButtonClick()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n", styles: [":host{position:absolute;top:80px;left:100px}\n"], dependencies: [{ kind: "directive", type: AutofocusDirective, selector: "[inputAutofocus]", inputs: ["inputAutofocus"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$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: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.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: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
36481
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: WallLengthInputComponent, isStandalone: false, selector: "wall-length-input", ngImport: i0, template: "@if (show) {\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"'LENGTH' | localize\"\r\n [inputAutofocus]=\"show\"\r\n [(ngModel)]=\"length\"\r\n (keydown.enter)=\"onOkButtonClick()\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"!length\"\r\n (click)=\"onOkButtonClick()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"!length\"\r\n (click)=\"onCancelButtonClick()\"\r\n (dragover)=\"onCancelButtonClick()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n", styles: [":host{position:absolute;top:80px;left:100px}\n"], dependencies: [{ kind: "directive", type: AutofocusDirective, selector: "[inputAutofocus]", inputs: ["inputAutofocus"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.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: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
36444
36482
  }
36445
36483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WallLengthInputComponent, decorators: [{
36446
36484
  type: Component,
@@ -37497,7 +37535,7 @@ class FloorplannerComponent {
37497
37535
  {{ 'TAB_ANYWHERE_TO_START' | localize }}
37498
37536
  </div>
37499
37537
  }
37500
- `, isInline: true, styles: [":host{display:flex;height:100%;width:100%;background:#fff}:host.hidden{visibility:hidden}canvas{width:inherit;height:inherit}.controls-top{pointer-events:none;position:absolute;top:80px;width:100%;display:flex;align-items:center;justify-content:center}.controls-top:not(.disable-mouse)>*{pointer-events:all;margin:0 3px}.controls-top:not(.disable-mouse)>* .mdc-floating-label,.controls-top:not(.disable-mouse)>*.dimensioning-select,.controls-top:not(.disable-mouse)>*.round-select{pointer-events:all}.controls-top .mat-mdc-floating-label.mdc-floating-label{pointer-events:none!important}.controls-top .dimensioning-select,.controls-top .round-select{pointer-events:none;height:38px;width:70px;padding:5px;border:solid 1px rgba(0,0,0,.12);border-radius:3px;background:#fff}.hint{position:absolute;bottom:20px;left:50%;margin-left:-200px;padding:10px 20px;background:#74b77f;border:1px solid #cccccc;border-radius:3px;text-align:center}.mat-button-toggle-checked{color:#fff;background-color:#da9803}.mat-button-toggle-checked co-icon ::ng-deep svg{fill:#fff}.mat-button-toggle-checked co-icon ::ng-deep [fill]{fill:#fff}.mat-button-toggle ::ng-deep .mat-button-toggle-label-content{width:48px;height:48px;display:flex;align-items:center;justify-content:center;padding:0}.mat-button-toggle ::ng-deep co-icon ::ng-deep{width:24px;height:24px}\n"], dependencies: [{ kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { 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: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: WallLengthInputComponent, selector: "wall-length-input" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
37538
+ `, isInline: true, styles: [":host{display:flex;height:100%;width:100%;background:#fff}:host.hidden{visibility:hidden}canvas{width:inherit;height:inherit}.controls-top{pointer-events:none;position:absolute;top:80px;width:100%;display:flex;align-items:center;justify-content:center}.controls-top:not(.disable-mouse)>*{pointer-events:all;margin:0 3px}.controls-top:not(.disable-mouse)>* .mdc-floating-label,.controls-top:not(.disable-mouse)>*.dimensioning-select,.controls-top:not(.disable-mouse)>*.round-select{pointer-events:all}.controls-top .mat-mdc-floating-label.mdc-floating-label{pointer-events:none!important}.controls-top .dimensioning-select,.controls-top .round-select{pointer-events:none;height:38px;width:70px;padding:5px;border:solid 1px rgba(0,0,0,.12);border-radius:3px;background:#fff}.hint{position:absolute;bottom:20px;left:50%;margin-left:-200px;padding:10px 20px;background:#74b77f;border:1px solid #cccccc;border-radius:3px;text-align:center}.mat-button-toggle-checked{color:#fff;background-color:#da9803}.mat-button-toggle-checked co-icon ::ng-deep svg{fill:#fff}.mat-button-toggle-checked co-icon ::ng-deep [fill]{fill:#fff}.mat-button-toggle ::ng-deep .mat-button-toggle-label-content{width:48px;height:48px;display:flex;align-items:center;justify-content:center;padding:0}.mat-button-toggle ::ng-deep co-icon ::ng-deep{width:24px;height:24px}\n"], dependencies: [{ kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { 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: 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: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: WallLengthInputComponent, selector: "wall-length-input" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
37501
37539
  }
37502
37540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FloorplannerComponent, decorators: [{
37503
37541
  type: Component,
@@ -37741,7 +37779,7 @@ class MaterialDialogComponent {
37741
37779
  </div>
37742
37780
  }
37743
37781
  </div>
37744
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}:host .material-textures{padding:20px 0}\n"], dependencies: [{ kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "component", type: SelectedChildMaterialTexturesComponent, selector: "selected-child-material-textures", inputs: ["material"], outputs: ["mapChange"] }, { kind: "component", type: SelectedChildMaterialColorComponent, selector: "selected-child-material-color", inputs: ["material"], outputs: ["colorChange"] }, { kind: "component", type: i5.ListOfValuesComponent, selector: "co-list-of-values", inputs: ["model", "multiselect", "showToggleAll", "largeCollection", "displayField", "optionIcon", "collection", "collectionLoadFn", "collectionLoadFnProp", "leftIconData", "searchPlaceholder", "searchDisabled", "showChips"] }, { kind: "directive", type: i6$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
37782
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}:host .material-textures{padding:20px 0}\n"], dependencies: [{ kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "component", type: SelectedChildMaterialTexturesComponent, selector: "selected-child-material-textures", inputs: ["material"], outputs: ["mapChange"] }, { kind: "component", type: SelectedChildMaterialColorComponent, selector: "selected-child-material-color", inputs: ["material"], outputs: ["colorChange"] }, { kind: "component", type: i5.ListOfValuesComponent, selector: "co-list-of-values", inputs: ["model", "multiselect", "showToggleAll", "largeCollection", "displayField", "optionIcon", "collection", "collectionLoadFn", "collectionLoadFnProp", "leftIconData", "searchPlaceholder", "searchDisabled", "showChips"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
37745
37783
  }
37746
37784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MaterialDialogComponent, decorators: [{
37747
37785
  type: Component,
@@ -38709,7 +38747,7 @@ class ModelPreviewComponent {
38709
38747
 
38710
38748
  </div>
38711
38749
  </div>
38712
- `, isInline: true, styles: [".model-preview{display:flex;flex-direction:row;font-size:14px;position:relative}.model-preview .model-preview-window .model-preview-window-bottom{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.model-preview .model-preview-window .model-preview-window-bottom .disclaimer-text-container{padding-right:20px;text-align:right;font-style:italic;font-size:12px}.model-preview .model-preview-actions{min-width:350px;box-sizing:border-box;padding:10px 20px;border-left:1px solid #5b6875}.model-preview .model-preview-actions #heightArticle{max-width:160px}.model-preview .model-preview-actions .units-select-form{width:80px;margin:0 5px}.model-preview .model-preview-actions .model-preview-info-container{margin-bottom:10px}.model-preview .model-preview-actions .model-preview-info-container .model-preview-info-left{font-weight:bolder}.model-preview .model-preview-actions .model-preview-info{margin-top:80px}.model-preview .exportButton{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:5px;display:flex;align-items:center}.model-preview .exportButton:hover{background:#da9803;color:#fff}.model-preview input{border:1px solid #5b6875;box-sizing:border-box;padding:3px 10px;border-radius:3px;line-height:30px;width:100%}.mat-radio-wrapper{margin:10px 0}mat-radio-group mat-radio-button{display:block}.base-button{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:4px 10px;line-height:30px}.base-button:hover{background:#da9803;color:#fff}.model-placement-container div{display:flex;justify-content:space-between;margin:5px 0;align-items:center}.rotation-button-container div{display:flex;justify-content:space-between;margin-bottom:5px}.rotation-button-container div p{margin:0;padding:0}.rotation-button-container div button{display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;cursor:pointer;color:#5b6875;background:#fff;border:2px solid #5b6875;border-radius:50%;box-sizing:border-box;padding:0;height:22px;width:22px;font-size:18px}.rotation-button-container div button svg [fill]{fill:#5b6875}.rotation-button-container div button:hover{background:#da9803;color:#fff}.rotation-button-container div .button-as-link{color:#da9803;border:none;width:100%;height:100%;font-size:14px;position:relative;top:-15px}.rotation-button-container div .button-as-link ::ng-deep mat-icon{width:25px;height:25px;position:relative;top:8px}.rotation-button-container div .button-as-link ::ng-deep mat-icon svg path{fill:#da9803}.rotation-button-container div .button-as-link:hover{background:none;color:#da9803}.error-container{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid #f5c6cb;border-radius:.25rem;color:#721c24;background-color:#f8d7da;max-width:190px}.exportButton,.exportButtonDark{display:inline-block!important;margin-right:10px}.exportButtonDark{background:#5b6875;border-color:#5b6875}.exportButtonDark:hover{background:#5b6875;color:#fff}.model-close-preview{text-align:right;cursor:pointer}.model-error-background{position:absolute;inset:-52px -24px -24px;z-index:99;background:#0009}.model-error-container{position:relative;background:#fff;box-sizing:border-box;padding:10px 25px;border:1px solid #5b6875;top:30%;left:50%;width:400px;margin-left:-200px}.model-error-container .model-error-header{display:flex;justify-content:space-between}:host ::ng-deep .mat-mdc-form-field-wrapper{padding-bottom:0;border:1px solid #5b6875;border-radius:4px}:host ::ng-deep .mat-mdc-form-field-appearance-legacy .mat-mdc-form-field-infix{padding:0;border:none}:host ::ng-deep .mat-select-value{padding-left:5px}:host ::ng-deep .mat-mdc-form-field-appearance-legacy .mat-mdc-form-field-underline{height:0}:host ::ng-deep .mat-select-trigger{line-height:36px}:host ::ng-deep mat-icon{width:18px;height:18px}:host ::ng-deep mat-icon svg path{fill:#5b6875}:host ::ng-deep .mat-slide-toggle-content{width:calc(100% - 36px);min-width:300px}\n"], dependencies: [{ kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoaderComponent, selector: "rp-loader", inputs: ["show"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.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: i9.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"] }], encapsulation: i0.ViewEncapsulation.None }); }
38750
+ `, isInline: true, styles: [".model-preview{display:flex;flex-direction:row;font-size:14px;position:relative}.model-preview .model-preview-window .model-preview-window-bottom{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.model-preview .model-preview-window .model-preview-window-bottom .disclaimer-text-container{padding-right:20px;text-align:right;font-style:italic;font-size:12px}.model-preview .model-preview-actions{min-width:350px;box-sizing:border-box;padding:10px 20px;border-left:1px solid #5b6875}.model-preview .model-preview-actions #heightArticle{max-width:160px}.model-preview .model-preview-actions .units-select-form{width:80px;margin:0 5px}.model-preview .model-preview-actions .model-preview-info-container{margin-bottom:10px}.model-preview .model-preview-actions .model-preview-info-container .model-preview-info-left{font-weight:bolder}.model-preview .model-preview-actions .model-preview-info{margin-top:80px}.model-preview .exportButton{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:5px;display:flex;align-items:center}.model-preview .exportButton:hover{background:#da9803;color:#fff}.model-preview input{border:1px solid #5b6875;box-sizing:border-box;padding:3px 10px;border-radius:3px;line-height:30px;width:100%}.mat-radio-wrapper{margin:10px 0}mat-radio-group mat-radio-button{display:block}.base-button{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:4px 10px;line-height:30px}.base-button:hover{background:#da9803;color:#fff}.model-placement-container div{display:flex;justify-content:space-between;margin:5px 0;align-items:center}.rotation-button-container div{display:flex;justify-content:space-between;margin-bottom:5px}.rotation-button-container div p{margin:0;padding:0}.rotation-button-container div button{display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;cursor:pointer;color:#5b6875;background:#fff;border:2px solid #5b6875;border-radius:50%;box-sizing:border-box;padding:0;height:22px;width:22px;font-size:18px}.rotation-button-container div button svg [fill]{fill:#5b6875}.rotation-button-container div button:hover{background:#da9803;color:#fff}.rotation-button-container div .button-as-link{color:#da9803;border:none;width:100%;height:100%;font-size:14px;position:relative;top:-15px}.rotation-button-container div .button-as-link ::ng-deep mat-icon{width:25px;height:25px;position:relative;top:8px}.rotation-button-container div .button-as-link ::ng-deep mat-icon svg path{fill:#da9803}.rotation-button-container div .button-as-link:hover{background:none;color:#da9803}.error-container{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid #f5c6cb;border-radius:.25rem;color:#721c24;background-color:#f8d7da;max-width:190px}.exportButton,.exportButtonDark{display:inline-block!important;margin-right:10px}.exportButtonDark{background:#5b6875;border-color:#5b6875}.exportButtonDark:hover{background:#5b6875;color:#fff}.model-close-preview{text-align:right;cursor:pointer}.model-error-background{position:absolute;inset:-52px -24px -24px;z-index:99;background:#0009}.model-error-container{position:relative;background:#fff;box-sizing:border-box;padding:10px 25px;border:1px solid #5b6875;top:30%;left:50%;width:400px;margin-left:-200px}.model-error-container .model-error-header{display:flex;justify-content:space-between}:host ::ng-deep .mat-mdc-form-field-wrapper{padding-bottom:0;border:1px solid #5b6875;border-radius:4px}:host ::ng-deep .mat-mdc-form-field-appearance-legacy .mat-mdc-form-field-infix{padding:0;border:none}:host ::ng-deep .mat-select-value{padding-left:5px}:host ::ng-deep .mat-mdc-form-field-appearance-legacy .mat-mdc-form-field-underline{height:0}:host ::ng-deep .mat-select-trigger{line-height:36px}:host ::ng-deep mat-icon{width:18px;height:18px}:host ::ng-deep mat-icon svg path{fill:#5b6875}:host ::ng-deep .mat-slide-toggle-content{width:calc(100% - 36px);min-width:300px}\n"], dependencies: [{ kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoaderComponent, selector: "rp-loader", inputs: ["show"] }, { kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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"] }], encapsulation: i0.ViewEncapsulation.None }); }
38713
38751
  }
38714
38752
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModelPreviewComponent, decorators: [{
38715
38753
  type: Component,
@@ -39702,7 +39740,7 @@ class FileDropComponent {
39702
39740
  return imageElement.src;
39703
39741
  }
39704
39742
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39705
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FileDropComponent, isStandalone: false, selector: "rp-file-drop", inputs: { showDragDrop: "showDragDrop", showRemove: "showRemove" }, outputs: { fileContentChanged: "fileContentChanged", removeClick: "removeClick" }, viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"FileDrop\" [class.small]=\"!showDragDrop\"\r\n (drop)=\"onDrop($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n fxLayout=\"column\"\r\n fxLayoutAlign=\"center center\"\r\n >\r\n @if (showDragDrop) {\r\n <mat-icon class=\"homedecorator-material-icons\">cloud_upload</mat-icon>\r\n <p>\r\n {{'DRAG_DROP_FILES_HERE' | localize}}\r\n </p>\r\n <span>{{'OR' | localize}}</span>\r\n }\r\n <button mat-button (click)=\"fileInput.click()\">{{'BROWSE_FILES' | localize}}</button>\r\n @if (showRemove) {\r\n <button mat-button (click)=\"removeClick.emit($event)\">{{'REMOVE_FILE' | localize}}</button>\r\n }\r\n <input type=\"file\" (change)=\"readPhoto($event.target.files[0])\" style=\"display: none\" #fileInput>\r\n</div>\r\n", styles: [".FileDrop{box-sizing:border-box;margin:0 auto 15px 0;position:relative}.FileDrop:not(.small){height:200px}.FileDrop:before{content:\" \";border:2px dashed rgba(78,82,89,.45);display:block;height:87%;left:50%;opacity:.75;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:95%}.FileDrop p{margin:.5em 0}.FileDrop button{color:#53c0f9;font-size:12px}\n"], dependencies: [{ 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: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
39743
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FileDropComponent, isStandalone: false, selector: "rp-file-drop", inputs: { showDragDrop: "showDragDrop", showRemove: "showRemove" }, outputs: { fileContentChanged: "fileContentChanged", removeClick: "removeClick" }, viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"FileDrop\" [class.small]=\"!showDragDrop\"\r\n (drop)=\"onDrop($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n fxLayout=\"column\"\r\n fxLayoutAlign=\"center center\"\r\n >\r\n @if (showDragDrop) {\r\n <mat-icon class=\"homedecorator-material-icons\">cloud_upload</mat-icon>\r\n <p>\r\n {{'DRAG_DROP_FILES_HERE' | localize}}\r\n </p>\r\n <span>{{'OR' | localize}}</span>\r\n }\r\n <button mat-button (click)=\"fileInput.click()\">{{'BROWSE_FILES' | localize}}</button>\r\n @if (showRemove) {\r\n <button mat-button (click)=\"removeClick.emit($event)\">{{'REMOVE_FILE' | localize}}</button>\r\n }\r\n <input type=\"file\" (change)=\"readPhoto($event.target.files[0])\" style=\"display: none\" #fileInput>\r\n</div>\r\n", styles: [".FileDrop{box-sizing:border-box;margin:0 auto 15px 0;position:relative}.FileDrop:not(.small){height:200px}.FileDrop:before{content:\" \";border:2px dashed rgba(78,82,89,.45);display:block;height:87%;left:50%;opacity:.75;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:95%}.FileDrop p{margin:.5em 0}.FileDrop button{color:#53c0f9;font-size:12px}\n"], dependencies: [{ 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: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
39706
39744
  }
39707
39745
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDropComponent, decorators: [{
39708
39746
  type: Component,
@@ -40271,7 +40309,7 @@ class TextureEditorComponent {
40271
40309
  return destCanvas;
40272
40310
  }
40273
40311
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextureEditorComponent, deps: [{ token: MessageBusService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
40274
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TextureEditorComponent, isStandalone: false, selector: "rp-texture-editor", inputs: { width: "width", height: "height", texturePlane: "texturePlane", plainTexture: "plainTexture", changedTexture: "changedTexture", tiled: "tiled", options: "options", dragNDropEnforced: "dragNDropEnforced" }, outputs: { setTexture: "setTexture", removeTexture: "removeTexture" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<rp-file-drop\r\n [showDragDrop]=\"((!changedTexture || texture?.type === textureType.Basic) && options !== Options.None) || dragNDropEnforced\"\r\n [showRemove]=\"changedTexture\"\r\n (fileContentChanged)=\"onPhotoDataChange($event)\"\r\n (removeClick)=\"handleRemoveTextureClick($event)\"\r\n >\r\n</rp-file-drop>\r\n\r\n@if (imageHasBeenResized) {\r\n <div class=\"resize-message-wrapper\">\r\n <span class=\"resize-message\" [textContent]=\"'IMAGE_RESIZED' | localize\"></span>\r\n </div>\r\n}\r\n<div class=\"picture-editor\" [hidden]=\"!texture || !changedTexture || dragNDropEnforced\">\r\n <div class=\"picture-editor-canvas\"\r\n [hidden]=\"options === Options.None || (texture?.type === textureType.Basic)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <div\r\n class=\"canvas-wrapper\"\r\n fxLayout=\"column inline\"\r\n fxLayoutAlign=\"center center\">\r\n <canvas [hidden]=\"texture && texture.stretch\" #canvas></canvas>\r\n @if (options === Options.Both) {\r\n <mat-button-toggle-group\r\n (change)=\"tiledChanged($event.value === 'texture')\"\r\n [value]=\"tiled ? 'texture' : 'stretch'\"\r\n >\r\n <mat-button-toggle\r\n value=\"stretch\"\r\n title=\"{{'PICTURE' | localize}}\"\r\n [checked]=\"!tiled\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <mat-icon class=\"homedecorator-material-icons\">photo_size_select_large</mat-icon>\r\n {{'SKIN_FULL_WALL' | localize}}\r\n </div>\r\n </mat-button-toggle>\r\n <mat-button-toggle\r\n value=\"texture\"\r\n title=\"{{'TILE' | localize}}\"\r\n [checked]=\"tiled\"\r\n >\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <mat-icon class=\"homedecorator-material-icons\">texture</mat-icon>\r\n {{'CREATE_TEXTURE' | localize}}\r\n </div>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (texture?.type === textureType.CustomPattern\r\n || ((texture?.type === textureType.Basic || texture?.type === textureType.PBR)\r\n && options === Options.None)) {\r\n <div class=\"sliders\">\r\n <rp-slider-input\r\n title=\"{{'TILE_ROTATION' | localize}}\"\r\n min=\"-180\"\r\n max=\"180\"\r\n step=\"1\"\r\n [value]=\"tileRotationDeg\"\r\n (onChange)=\"onTileRotationChange($event)\">\r\n </rp-slider-input>\r\n <rp-slider-input\r\n title=\"{{'TILE_SIZE' | localize}}\"\r\n [min]=\"tileSizeMin\"\r\n [max]=\"tileSizeMax\"\r\n step=\"0.1\"\r\n [value]=\"tileSize\"\r\n (onChange)=\"onTileSizeChange($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n\r\n @if (!isBasic(texture) && !isPBR(texture)) {\r\n <div class=\"sliders\">\r\n <rp-slider-input\r\n title=\"{{'ROTATION' | localize}}\"\r\n min=\"-180\"\r\n max=\"180\"\r\n step=\"1\"\r\n [value]=\"textureRotationDeg\"\r\n (onChange)=\"onRotationChange($event)\">\r\n </rp-slider-input>\r\n <rp-slider-input\r\n title=\"{{'ZOOM' | localize}}\"\r\n [min]=\"-zoomSliderMax\"\r\n [max]=\"zoomSliderMax\"\r\n step=\"0.1\"\r\n [value]=\"textureScaleSlider\"\r\n (onChange)=\"onScaleChange($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n\r\n <!--\r\n <footer class=\"picture-editor-footer\">\r\n <button *ngIf=\"texture?.type !== TextureType.Basic || options === Options.None\"\r\n mat-stroked-button color=\"warn\"\r\n (click)=\"resetTexture()\"\r\n >\r\n {{ 'Remove' | localize }}\r\n </button>\r\n </footer>\r\n -->\r\n</div>\r\n", styles: ["rp-texture-editor{display:block;width:100%}.picture-editor-footer{margin-bottom:16px}.picture-editor-canvas{margin-top:.75em;margin-bottom:1.5em;text-align:center}.canvas-wrapper{position:relative}.canvas-wrapper mat-button-toggle-group{text-align:center;width:320px}.canvas-wrapper mat-button-toggle{flex-basis:50%;padding:4px 0}.resize-message-wrapper{margin:10px 3px 3px;text-align:-webkit-center}.resize-message-wrapper .resize-message{color:red;font-style:italic;font-weight:700;font-size:.9em}:host ::ng-deep .mat-slider-ticks-container{background-color:transparent}:host ::ng-deep .mat-slider-track-wrapper{overflow:visible}:host ::ng-deep .mat-slider-track-background{background-color:#ccc}:host ::ng-deep .mat-slider-track-fill{background-color:#da9803}:host ::ng-deep .mat-slider-thumb-label{background-color:#da9803}:host ::ng-deep .mat-slider-thumb{background-color:#da9803}\n"], dependencies: [{ kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SliderInputComponent, selector: "rp-slider-input", inputs: ["title", "min", "max", "step", "value"], outputs: ["onChange"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: FileDropComponent, selector: "rp-file-drop", inputs: ["showDragDrop", "showRemove"], outputs: ["fileContentChanged", "removeClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
40312
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TextureEditorComponent, isStandalone: false, selector: "rp-texture-editor", inputs: { width: "width", height: "height", texturePlane: "texturePlane", plainTexture: "plainTexture", changedTexture: "changedTexture", tiled: "tiled", options: "options", dragNDropEnforced: "dragNDropEnforced" }, outputs: { setTexture: "setTexture", removeTexture: "removeTexture" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<rp-file-drop\r\n [showDragDrop]=\"((!changedTexture || texture?.type === textureType.Basic) && options !== Options.None) || dragNDropEnforced\"\r\n [showRemove]=\"changedTexture\"\r\n (fileContentChanged)=\"onPhotoDataChange($event)\"\r\n (removeClick)=\"handleRemoveTextureClick($event)\"\r\n >\r\n</rp-file-drop>\r\n\r\n@if (imageHasBeenResized) {\r\n <div class=\"resize-message-wrapper\">\r\n <span class=\"resize-message\" [textContent]=\"'IMAGE_RESIZED' | localize\"></span>\r\n </div>\r\n}\r\n<div class=\"picture-editor\" [hidden]=\"!texture || !changedTexture || dragNDropEnforced\">\r\n <div class=\"picture-editor-canvas\"\r\n [hidden]=\"options === Options.None || (texture?.type === textureType.Basic)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <div\r\n class=\"canvas-wrapper\"\r\n fxLayout=\"column inline\"\r\n fxLayoutAlign=\"center center\">\r\n <canvas [hidden]=\"texture && texture.stretch\" #canvas></canvas>\r\n @if (options === Options.Both) {\r\n <mat-button-toggle-group\r\n (change)=\"tiledChanged($event.value === 'texture')\"\r\n [value]=\"tiled ? 'texture' : 'stretch'\"\r\n >\r\n <mat-button-toggle\r\n value=\"stretch\"\r\n title=\"{{'PICTURE' | localize}}\"\r\n [checked]=\"!tiled\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <mat-icon class=\"homedecorator-material-icons\">photo_size_select_large</mat-icon>\r\n {{'SKIN_FULL_WALL' | localize}}\r\n </div>\r\n </mat-button-toggle>\r\n <mat-button-toggle\r\n value=\"texture\"\r\n title=\"{{'TILE' | localize}}\"\r\n [checked]=\"tiled\"\r\n >\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <mat-icon class=\"homedecorator-material-icons\">texture</mat-icon>\r\n {{'CREATE_TEXTURE' | localize}}\r\n </div>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (texture?.type === textureType.CustomPattern\r\n || ((texture?.type === textureType.Basic || texture?.type === textureType.PBR)\r\n && options === Options.None)) {\r\n <div class=\"sliders\">\r\n <rp-slider-input\r\n title=\"{{'TILE_ROTATION' | localize}}\"\r\n min=\"-180\"\r\n max=\"180\"\r\n step=\"1\"\r\n [value]=\"tileRotationDeg\"\r\n (onChange)=\"onTileRotationChange($event)\">\r\n </rp-slider-input>\r\n <rp-slider-input\r\n title=\"{{'TILE_SIZE' | localize}}\"\r\n [min]=\"tileSizeMin\"\r\n [max]=\"tileSizeMax\"\r\n step=\"0.1\"\r\n [value]=\"tileSize\"\r\n (onChange)=\"onTileSizeChange($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n\r\n @if (!isBasic(texture) && !isPBR(texture)) {\r\n <div class=\"sliders\">\r\n <rp-slider-input\r\n title=\"{{'ROTATION' | localize}}\"\r\n min=\"-180\"\r\n max=\"180\"\r\n step=\"1\"\r\n [value]=\"textureRotationDeg\"\r\n (onChange)=\"onRotationChange($event)\">\r\n </rp-slider-input>\r\n <rp-slider-input\r\n title=\"{{'ZOOM' | localize}}\"\r\n [min]=\"-zoomSliderMax\"\r\n [max]=\"zoomSliderMax\"\r\n step=\"0.1\"\r\n [value]=\"textureScaleSlider\"\r\n (onChange)=\"onScaleChange($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n\r\n <!--\r\n <footer class=\"picture-editor-footer\">\r\n <button *ngIf=\"texture?.type !== TextureType.Basic || options === Options.None\"\r\n mat-stroked-button color=\"warn\"\r\n (click)=\"resetTexture()\"\r\n >\r\n {{ 'Remove' | localize }}\r\n </button>\r\n </footer>\r\n -->\r\n</div>\r\n", styles: ["rp-texture-editor{display:block;width:100%}.picture-editor-footer{margin-bottom:16px}.picture-editor-canvas{margin-top:.75em;margin-bottom:1.5em;text-align:center}.canvas-wrapper{position:relative}.canvas-wrapper mat-button-toggle-group{text-align:center;width:320px}.canvas-wrapper mat-button-toggle{flex-basis:50%;padding:4px 0}.resize-message-wrapper{margin:10px 3px 3px;text-align:-webkit-center}.resize-message-wrapper .resize-message{color:red;font-style:italic;font-weight:700;font-size:.9em}:host ::ng-deep .mat-slider-ticks-container{background-color:transparent}:host ::ng-deep .mat-slider-track-wrapper{overflow:visible}:host ::ng-deep .mat-slider-track-background{background-color:#ccc}:host ::ng-deep .mat-slider-track-fill{background-color:#da9803}:host ::ng-deep .mat-slider-thumb-label{background-color:#da9803}:host ::ng-deep .mat-slider-thumb{background-color:#da9803}\n"], dependencies: [{ kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SliderInputComponent, selector: "rp-slider-input", inputs: ["title", "min", "max", "step", "value"], outputs: ["onChange"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: FileDropComponent, selector: "rp-file-drop", inputs: ["showDragDrop", "showRemove"], outputs: ["fileContentChanged", "removeClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
40275
40313
  }
40276
40314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextureEditorComponent, decorators: [{
40277
40315
  type: Component,
@@ -40476,7 +40514,7 @@ class ColorPickerComponent {
40476
40514
  this.colorSelected.emit(color);
40477
40515
  }
40478
40516
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40479
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ColorPickerComponent, isStandalone: false, selector: "rp-color-picker", inputs: { color: "color", selectedTabIndex: "selectedTabIndex" }, outputs: { colorSelected: "colorSelected" }, ngImport: i0, template: "<mat-tab-group color=\"primary\" [(selectedIndex)]=\"selectedTabIndex\" #tabGroup>\r\n <mat-tab label=\"{{'RAL_COLOR_CATALOGUE' | localize}}\">\r\n <rp-ral-color-picker\r\n [color]=\"color\"\r\n (colorSelected)=\"setColor($event)\"\r\n >\r\n </rp-ral-color-picker>\r\n </mat-tab>\r\n <mat-tab label=\"{{'RGB_VALUE' | localize}}\">\r\n <rp-rgb-color-picker\r\n [color] = \"color\"\r\n (colorSelected)=\"setColor($event)\"\r\n >\r\n </rp-rgb-color-picker>\r\n </mat-tab>\r\n</mat-tab-group>\r\n", styles: [""], dependencies: [{ kind: "component", type: i4$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: RgbColorPickerComponent, selector: "rp-rgb-color-picker", inputs: ["color"], outputs: ["colorSelected"] }, { kind: "component", type: RalColorPickerComponent, selector: "rp-ral-color-picker", inputs: ["color"], outputs: ["colorSelected"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
40517
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ColorPickerComponent, isStandalone: false, selector: "rp-color-picker", inputs: { color: "color", selectedTabIndex: "selectedTabIndex" }, outputs: { colorSelected: "colorSelected" }, ngImport: i0, template: "<mat-tab-group color=\"primary\" [(selectedIndex)]=\"selectedTabIndex\" #tabGroup>\r\n <mat-tab label=\"{{'RAL_COLOR_CATALOGUE' | localize}}\">\r\n <rp-ral-color-picker\r\n [color]=\"color\"\r\n (colorSelected)=\"setColor($event)\"\r\n >\r\n </rp-ral-color-picker>\r\n </mat-tab>\r\n <mat-tab label=\"{{'RGB_VALUE' | localize}}\">\r\n <rp-rgb-color-picker\r\n [color] = \"color\"\r\n (colorSelected)=\"setColor($event)\"\r\n >\r\n </rp-rgb-color-picker>\r\n </mat-tab>\r\n</mat-tab-group>\r\n", styles: [""], dependencies: [{ kind: "component", type: i4$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: RgbColorPickerComponent, selector: "rp-rgb-color-picker", inputs: ["color"], outputs: ["colorSelected"] }, { kind: "component", type: RalColorPickerComponent, selector: "rp-ral-color-picker", inputs: ["color"], outputs: ["colorSelected"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
40480
40518
  }
40481
40519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColorPickerComponent, decorators: [{
40482
40520
  type: Component,
@@ -40537,7 +40575,7 @@ class TexturePickerComponent {
40537
40575
  return this.textures.find((t) => t.name === currentName);
40538
40576
  }
40539
40577
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TexturePickerComponent, deps: [{ token: HomedecoratorIconCacheService }, { token: HomedecoratorAppService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
40540
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TexturePickerComponent, isStandalone: false, selector: "rp-texture-picker", inputs: { allowedTextureType: "allowedTextureType", current: "current" }, outputs: { textureSelected: "textureSelected" }, usesOnChanges: true, ngImport: i0, template: "<mat-grid-list cols=\"2\" rowHeight=\"150px\">\r\n @for (texture of textures | filter:'show':true; track texture) {\r\n <mat-grid-tile [ngClass]=\"{'is-selected': current === texture.name}\">\r\n <img [src]=\"assetPath + texture.url\" (click)=\"textureSelected.emit(texture)\">\r\n <mat-grid-tile-footer fxLayoutAlign=\"{{(current === texture.name) ? 'space-between center' : 'start center'}}\">\r\n <span class=\"texture-name\">\r\n {{texture.name | localize}}\r\n </span>\r\n @if (current === texture.name) {\r\n <co-icon [iconData]=\"iconService.getIcon(icon.CircleCheck)\"></co-icon>\r\n }\r\n </mat-grid-tile-footer>\r\n </mat-grid-tile>\r\n }\r\n</mat-grid-list>\r\n", styles: [":host ::ng-deep .mat-grid-tile{cursor:pointer}:host ::ng-deep .mat-grid-tile:after{content:\" \";border:4px solid transparent;position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;pointer-events:none;transition:all .2s ease-in}:host ::ng-deep .mat-grid-tile.is-selected:after{border:4px solid #da9803}:host ::ng-deep .mat-grid-tile.is-selected .mat-grid-tile-footer{background-color:#da98035e}:host ::ng-deep .mat-grid-tile:hover:after{border:4px solid rgba(218,152,3,.5294117647)}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer{background-color:#7880887d;padding:0 8px}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer span{overflow:hidden;padding-right:4px;text-overflow:ellipsis}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer co-icon ::ng-deep{height:20px;width:20px}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer co-icon ::ng-deep svg{fill:#fff}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3$4.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i3$4.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "component", type: i3$4.MatGridTileText, selector: "mat-grid-tile-header, mat-grid-tile-footer" }, { kind: "directive", type: i3$4.MatGridTileFooterCssMatStyler, selector: "mat-grid-tile-footer" }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: FilterPipe, name: "filter" }] }); }
40578
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TexturePickerComponent, isStandalone: false, selector: "rp-texture-picker", inputs: { allowedTextureType: "allowedTextureType", current: "current" }, outputs: { textureSelected: "textureSelected" }, usesOnChanges: true, ngImport: i0, template: "<mat-grid-list cols=\"2\" rowHeight=\"150px\">\r\n @for (texture of textures | filter:'show':true; track texture) {\r\n <mat-grid-tile [ngClass]=\"{'is-selected': current === texture.name}\">\r\n <img [src]=\"assetPath + texture.url\" (click)=\"textureSelected.emit(texture)\">\r\n <mat-grid-tile-footer fxLayoutAlign=\"{{(current === texture.name) ? 'space-between center' : 'start center'}}\">\r\n <span class=\"texture-name\">\r\n {{texture.name | localize}}\r\n </span>\r\n @if (current === texture.name) {\r\n <co-icon [iconData]=\"iconService.getIcon(icon.CircleCheck)\"></co-icon>\r\n }\r\n </mat-grid-tile-footer>\r\n </mat-grid-tile>\r\n }\r\n</mat-grid-list>\r\n", styles: [":host ::ng-deep .mat-grid-tile{cursor:pointer}:host ::ng-deep .mat-grid-tile:after{content:\" \";border:4px solid transparent;position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;pointer-events:none;transition:all .2s ease-in}:host ::ng-deep .mat-grid-tile.is-selected:after{border:4px solid #da9803}:host ::ng-deep .mat-grid-tile.is-selected .mat-grid-tile-footer{background-color:#da98035e}:host ::ng-deep .mat-grid-tile:hover:after{border:4px solid rgba(218,152,3,.5294117647)}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer{background-color:#7880887d;padding:0 8px}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer span{overflow:hidden;padding-right:4px;text-overflow:ellipsis}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer co-icon ::ng-deep{height:20px;width:20px}:host ::ng-deep .mat-grid-tile .mat-grid-tile-footer co-icon ::ng-deep svg{fill:#fff}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3$4.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i3$4.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "component", type: i3$4.MatGridTileText, selector: "mat-grid-tile-header, mat-grid-tile-footer" }, { kind: "directive", type: i3$4.MatGridTileFooterCssMatStyler, selector: "mat-grid-tile-footer" }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: FilterPipe, name: "filter" }] }); }
40541
40579
  }
40542
40580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TexturePickerComponent, decorators: [{
40543
40581
  type: Component,
@@ -41031,7 +41069,7 @@ class FloorCatalogComponent {
41031
41069
  </div>
41032
41070
  </div>
41033
41071
 
41034
- `, isInline: true, styles: [".base-button{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:4px 10px;line-height:30px;width:100%}.base-button:hover{background:#da9803;color:#fff}.floor-catalog-wrap .floor-catalog-selected-floor{background:#eee;display:flex;box-sizing:border-box;padding:15px;margin:5px 0 15px}.floor-catalog-wrap .floor-catalog-selected-floor .selected-floor-thumbnail{min-width:105px;max-width:160px;margin-right:10px;justify-content:center;align-items:center;vertical-align:middle;display:flex;height:auto}.floor-catalog-wrap .floor-catalog-selected-floor .selected-floor-thumbnail img{display:block;max-width:100%;height:max-content}.floor-catalog-wrap .selected-floor-info{display:flex;flex-direction:column;gap:10px}.floor-catalog-wrap .selected-floor-info p{margin:0;font-size:14px}.floor-catalog-wrap .floor-catalog-standard-floor{background:#eee;box-sizing:border-box;padding:15px;margin:5px 0 15px}.floor-catalog-wrap .floor-catalog-standard-floor .selected-floor-info p{margin:0;font-size:14px}.selected-floor-properties p{font-weight:700;margin:0 0 10px;padding:0;font-size:14px}.selected-floor-properties .selected-floor-scale,.selected-floor-properties .floor-installation{display:flex;gap:10px;margin-bottom:20px;align-items:center}.selected-floor-properties .selected-floor-scale .up-down-input-wrapper,.selected-floor-properties .floor-installation .up-down-input-wrapper{position:relative}.selected-floor-properties .selected-floor-scale .up-down-input-wrapper label,.selected-floor-properties .floor-installation .up-down-input-wrapper label{position:absolute;font-size:12px;padding:5px}.selected-floor-properties .selected-floor-scale .selected-floor-input,.selected-floor-properties .floor-installation .selected-floor-input{border:1px solid #9FA9B4;box-sizing:border-box;padding:15px 10px 0;border-radius:3px;line-height:30px;width:100%}.selected-floor-properties .selected-floor-scale .placement-input,.selected-floor-properties .floor-installation .placement-input{min-width:300px}.selected-floor-properties .selected-floor-scale .scale-input,.selected-floor-properties .floor-installation .scale-input{min-width:100px}.selected-floor-properties .selected-floor-scale .range-slider,.selected-floor-properties .floor-installation .range-slider{color:#da9803;min-width:180px}.selected-floor-properties .up-down-buttons{display:flex;gap:10px;align-items:center;justify-content:center}.selected-floor-properties button{margin:0;cursor:pointer;border:none;box-sizing:border-box;padding:0;height:22px;width:22px;background:transparent;border-radius:100%}.selected-floor-properties button ::ng-deep co-icon{display:block;width:22px;height:22px}.selected-floor-properties button:hover ::ng-deep co-icon svg{fill:#da9803}:host ::ng-deep mat-icon{width:18px;height:18px}:host ::ng-deep mat-icon svg path{fill:#5b6875}.placeholderimage{height:90px;width:150px;background-color:#5b6875}.floor-detail-item{display:flex;justify-content:space-between}.floor-detail-item p{font-weight:300;font-size:14px}.floor-detail-download{display:flex;justify-content:flex-end}.floor-detail-download button{max-width:150px}\n"], dependencies: [{ kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ExportPdfComponent, selector: "rp-pdf-export", inputs: ["labelPlanksLeft", "labelPlanksRight", "labelPlanksTotal", "labelPlanksAngle"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41072
+ `, isInline: true, styles: [".base-button{cursor:pointer;color:#fff;background:#da9803;border:1px solid #da9803;border-radius:3px;box-sizing:border-box;padding:4px 10px;line-height:30px;width:100%}.base-button:hover{background:#da9803;color:#fff}.floor-catalog-wrap .floor-catalog-selected-floor{background:#eee;display:flex;box-sizing:border-box;padding:15px;margin:5px 0 15px}.floor-catalog-wrap .floor-catalog-selected-floor .selected-floor-thumbnail{min-width:105px;max-width:160px;margin-right:10px;justify-content:center;align-items:center;vertical-align:middle;display:flex;height:auto}.floor-catalog-wrap .floor-catalog-selected-floor .selected-floor-thumbnail img{display:block;max-width:100%;height:max-content}.floor-catalog-wrap .selected-floor-info{display:flex;flex-direction:column;gap:10px}.floor-catalog-wrap .selected-floor-info p{margin:0;font-size:14px}.floor-catalog-wrap .floor-catalog-standard-floor{background:#eee;box-sizing:border-box;padding:15px;margin:5px 0 15px}.floor-catalog-wrap .floor-catalog-standard-floor .selected-floor-info p{margin:0;font-size:14px}.selected-floor-properties p{font-weight:700;margin:0 0 10px;padding:0;font-size:14px}.selected-floor-properties .selected-floor-scale,.selected-floor-properties .floor-installation{display:flex;gap:10px;margin-bottom:20px;align-items:center}.selected-floor-properties .selected-floor-scale .up-down-input-wrapper,.selected-floor-properties .floor-installation .up-down-input-wrapper{position:relative}.selected-floor-properties .selected-floor-scale .up-down-input-wrapper label,.selected-floor-properties .floor-installation .up-down-input-wrapper label{position:absolute;font-size:12px;padding:5px}.selected-floor-properties .selected-floor-scale .selected-floor-input,.selected-floor-properties .floor-installation .selected-floor-input{border:1px solid #9FA9B4;box-sizing:border-box;padding:15px 10px 0;border-radius:3px;line-height:30px;width:100%}.selected-floor-properties .selected-floor-scale .placement-input,.selected-floor-properties .floor-installation .placement-input{min-width:300px}.selected-floor-properties .selected-floor-scale .scale-input,.selected-floor-properties .floor-installation .scale-input{min-width:100px}.selected-floor-properties .selected-floor-scale .range-slider,.selected-floor-properties .floor-installation .range-slider{color:#da9803;min-width:180px}.selected-floor-properties .up-down-buttons{display:flex;gap:10px;align-items:center;justify-content:center}.selected-floor-properties button{margin:0;cursor:pointer;border:none;box-sizing:border-box;padding:0;height:22px;width:22px;background:transparent;border-radius:100%}.selected-floor-properties button ::ng-deep co-icon{display:block;width:22px;height:22px}.selected-floor-properties button:hover ::ng-deep co-icon svg{fill:#da9803}:host ::ng-deep mat-icon{width:18px;height:18px}:host ::ng-deep mat-icon svg path{fill:#5b6875}.placeholderimage{height:90px;width:150px;background-color:#5b6875}.floor-detail-item{display:flex;justify-content:space-between}.floor-detail-item p{font-weight:300;font-size:14px}.floor-detail-download{display:flex;justify-content:flex-end}.floor-detail-download button{max-width:150px}\n"], dependencies: [{ kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ExportPdfComponent, selector: "rp-pdf-export", inputs: ["labelPlanksLeft", "labelPlanksRight", "labelPlanksTotal", "labelPlanksAngle"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41035
41073
  }
41036
41074
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FloorCatalogComponent, decorators: [{
41037
41075
  type: Component,
@@ -41416,7 +41454,7 @@ class AppearanceSectionComponent {
41416
41454
  }
41417
41455
  }
41418
41456
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppearanceSectionComponent, deps: [{ token: HomedecoratorIconCacheService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
41419
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AppearanceSectionComponent, isStandalone: false, selector: "rp-appearance-section", inputs: { type: "type", hideTextureTab: "hideTextureTab", hideColorTab: "hideColorTab", hidePhotoTab: "hidePhotoTab", showGlassOption: "showGlassOption", texturePlane: "texturePlane", plainTexture: "plainTexture", color: "color", textureWidth: "textureWidth", textureHeight: "textureHeight", photoOptions: "photoOptions", glassMaterial: "glassMaterial" }, outputs: { setTexture: "setTexture", setColor: "setColor", setMaterial: "setMaterial" }, usesOnChanges: true, ngImport: i0, template: "<mat-tab-group\r\n mat-stretch-tabs\r\n class=\"tab tab--skin\"\r\n [selectedIndex]=\"selectedTabIndex\"\r\n (selectedIndexChange)=\"updateSelectedTabIndex($event)\"\r\n >\r\n @if (showProductTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.GridLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'PRODUCT' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n @if (type === 'floor') {\r\n <rp-floor-catalog\r\n [type]=\"type\"\r\n [currentTexture]=\"texture\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n >\r\n </rp-floor-catalog>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hideTextureTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.PaintRollerLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'TEXTURE' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n @if (texture?.type === textureType.Basic || texture?.type === textureType.PBR) {\r\n <rp-texture-editor\r\n [width]=\"textureWidth || texture?.tileSize\"\r\n [height]=\"textureHeight || texture?.tileSize\"\r\n [changedTexture]=\"texture\"\r\n (setTexture)=\"newTexture($event)\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n [options]=\"options.None\"\r\n [tiled]=\"type === 'floor'\"\r\n >\r\n </rp-texture-editor>\r\n }\r\n <rp-texture-picker\r\n (textureSelected)=\"loadBasicTexture($event)\"\r\n [allowedTextureType]=\"type\"\r\n [current]=\"texture?.name\"\r\n >\r\n </rp-texture-picker>\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hideColorTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.FillDripLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'COLOR' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n @if (!hidePhotoTab && showGlassOption) {\r\n <div class=\"sliders-wrapper\">\r\n <mat-slide-toggle\r\n [checked]=\"glassMaterial\"\r\n (change)=\"newTexture('GLASS')\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n {{ 'GLASS' | localize }}\r\n </mat-slide-toggle>\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n <div>\r\n @if (!glassMaterial) {\r\n <rp-color-picker\r\n [color]=\"texture ? null : color\"\r\n (colorSelected)=\"updateColor($event)\"\r\n [selectedTabIndex]=\"selectedTabIndex\"\r\n >\r\n </rp-color-picker>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hidePhotoTab && !glassMaterial) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ImageLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'IMAGE' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n <rp-texture-editor\r\n [width]=\"textureWidth || texture?.tileSize\"\r\n [height]=\"textureHeight || texture?.tileSize\"\r\n [changedTexture]=\"texture\"\r\n (setTexture)=\"newTexture($event)\"\r\n (removeTexture)=\"removeTexture()\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n [options]=\"photoOptions\"\r\n [tiled]=\"type === 'floor'\"\r\n ></rp-texture-editor>\r\n </div>\r\n </mat-tab>\r\n }\r\n</mat-tab-group>\r\n", styles: [":host{flex:1;overflow-y:auto}mat-tab-group mat-icon{margin-bottom:4px}mat-tab-group ::ng-deep .mat-mdc-tab-header .mat-ink-bar{background-color:#da9803}mat-tab-group ::ng-deep .mat-mdc-tab-header .mat-tab-label{height:60px;padding:0 15px;min-width:auto;opacity:1}mat-tab-group ::ng-deep .appearance-tile{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:12px}mat-tab-group ::ng-deep .appearance-tile co-icon ::ng-deep{width:20px;height:20px}\n"], dependencies: [{ kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4$2.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ColorPickerComponent, selector: "rp-color-picker", inputs: ["color", "selectedTabIndex"], outputs: ["colorSelected"] }, { kind: "component", type: TexturePickerComponent, selector: "rp-texture-picker", inputs: ["allowedTextureType", "current"], outputs: ["textureSelected"] }, { kind: "component", type: TextureEditorComponent, selector: "rp-texture-editor", inputs: ["width", "height", "texturePlane", "plainTexture", "changedTexture", "tiled", "options", "dragNDropEnforced"], outputs: ["setTexture", "removeTexture"] }, { kind: "component", type: FloorCatalogComponent, selector: "rp-floor-catalog", inputs: ["type", "currentTexture", "texturePlane", "plainTexture"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41457
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AppearanceSectionComponent, isStandalone: false, selector: "rp-appearance-section", inputs: { type: "type", hideTextureTab: "hideTextureTab", hideColorTab: "hideColorTab", hidePhotoTab: "hidePhotoTab", showGlassOption: "showGlassOption", texturePlane: "texturePlane", plainTexture: "plainTexture", color: "color", textureWidth: "textureWidth", textureHeight: "textureHeight", photoOptions: "photoOptions", glassMaterial: "glassMaterial" }, outputs: { setTexture: "setTexture", setColor: "setColor", setMaterial: "setMaterial" }, usesOnChanges: true, ngImport: i0, template: "<mat-tab-group\r\n mat-stretch-tabs\r\n class=\"tab tab--skin\"\r\n [selectedIndex]=\"selectedTabIndex\"\r\n (selectedIndexChange)=\"updateSelectedTabIndex($event)\"\r\n >\r\n @if (showProductTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.GridLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'PRODUCT' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n @if (type === 'floor') {\r\n <rp-floor-catalog\r\n [type]=\"type\"\r\n [currentTexture]=\"texture\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n >\r\n </rp-floor-catalog>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hideTextureTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.PaintRollerLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'TEXTURE' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n @if (texture?.type === textureType.Basic || texture?.type === textureType.PBR) {\r\n <rp-texture-editor\r\n [width]=\"textureWidth || texture?.tileSize\"\r\n [height]=\"textureHeight || texture?.tileSize\"\r\n [changedTexture]=\"texture\"\r\n (setTexture)=\"newTexture($event)\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n [options]=\"options.None\"\r\n [tiled]=\"type === 'floor'\"\r\n >\r\n </rp-texture-editor>\r\n }\r\n <rp-texture-picker\r\n (textureSelected)=\"loadBasicTexture($event)\"\r\n [allowedTextureType]=\"type\"\r\n [current]=\"texture?.name\"\r\n >\r\n </rp-texture-picker>\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hideColorTab) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.FillDripLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'COLOR' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n @if (!hidePhotoTab && showGlassOption) {\r\n <div class=\"sliders-wrapper\">\r\n <mat-slide-toggle\r\n [checked]=\"glassMaterial\"\r\n (change)=\"newTexture('GLASS')\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n {{ 'GLASS' | localize }}\r\n </mat-slide-toggle>\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n <div>\r\n @if (!glassMaterial) {\r\n <rp-color-picker\r\n [color]=\"texture ? null : color\"\r\n (colorSelected)=\"updateColor($event)\"\r\n [selectedTabIndex]=\"selectedTabIndex\"\r\n >\r\n </rp-color-picker>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n @if (!hidePhotoTab && !glassMaterial) {\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div class=\"appearance-tile\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ImageLight)\"></co-icon>\r\n <span class=\"appearance-label\">{{ 'IMAGE' | localize }}</span>\r\n </div>\r\n </ng-template>\r\n <div>\r\n <rp-texture-editor\r\n [width]=\"textureWidth || texture?.tileSize\"\r\n [height]=\"textureHeight || texture?.tileSize\"\r\n [changedTexture]=\"texture\"\r\n (setTexture)=\"newTexture($event)\"\r\n (removeTexture)=\"removeTexture()\"\r\n [texturePlane]=\"texturePlane\"\r\n [plainTexture]=\"plainTexture\"\r\n [options]=\"photoOptions\"\r\n [tiled]=\"type === 'floor'\"\r\n ></rp-texture-editor>\r\n </div>\r\n </mat-tab>\r\n }\r\n</mat-tab-group>\r\n", styles: [":host{flex:1;overflow-y:auto}mat-tab-group mat-icon{margin-bottom:4px}mat-tab-group ::ng-deep .mat-mdc-tab-header .mat-ink-bar{background-color:#da9803}mat-tab-group ::ng-deep .mat-mdc-tab-header .mat-tab-label{height:60px;padding:0 15px;min-width:auto;opacity:1}mat-tab-group ::ng-deep .appearance-tile{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:12px}mat-tab-group ::ng-deep .appearance-tile co-icon ::ng-deep{width:20px;height:20px}\n"], dependencies: [{ kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ColorPickerComponent, selector: "rp-color-picker", inputs: ["color", "selectedTabIndex"], outputs: ["colorSelected"] }, { kind: "component", type: TexturePickerComponent, selector: "rp-texture-picker", inputs: ["allowedTextureType", "current"], outputs: ["textureSelected"] }, { kind: "component", type: TextureEditorComponent, selector: "rp-texture-editor", inputs: ["width", "height", "texturePlane", "plainTexture", "changedTexture", "tiled", "options", "dragNDropEnforced"], outputs: ["setTexture", "removeTexture"] }, { kind: "component", type: FloorCatalogComponent, selector: "rp-floor-catalog", inputs: ["type", "currentTexture", "texturePlane", "plainTexture"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41420
41458
  }
41421
41459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppearanceSectionComponent, decorators: [{
41422
41460
  type: Component,
@@ -41494,7 +41532,7 @@ class SelectedFloorComponent {
41494
41532
  this.floorSurfaceSize = floorWidth * floorLength;
41495
41533
  }
41496
41534
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedFloorComponent, deps: [{ token: FloorService }], target: i0.ɵɵFactoryTarget.Component }); }
41497
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SelectedFloorComponent, isStandalone: false, selector: "rp-selected-floor", inputs: { floor: "floor", texturePlane: "texturePlane", color: "color" }, outputs: { setTexture: "setTexture", setColor: "setColor" }, ngImport: i0, template: "<section>\r\n <h3 class=\"mat-subtitle-1\">{{'MEASUREMENTS' | localize}}</h3>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span class=\"mat-subtitle-2\">{{'AREA' | localize}}:</span>\r\n <span class=\"mat-subtitle-2\">{{floorSurfaceSize | smToMeasure}}</span>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <h3 class=\"mat-subtitle-1\">{{'APPEARANCE' | localize}}</h3>\r\n <rp-appearance-section\r\n type=\"floor\"\r\n [texturePlane]=\"texturePlane\"\r\n [color]=\"color\"\r\n [photoOptions]=\"Options.Tiles\"\r\n (setTexture)=\"setTexture.emit($event)\"\r\n (setColor)=\"setColor.emit($event)\"\r\n >\r\n </rp-appearance-section>\r\n</section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.panel-item{height:40px;line-height:40px}.panel-item+h3{margin-top:16px}\n"], dependencies: [{ kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: SmToMeasurePipe, name: "smToMeasure" }] }); }
41535
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SelectedFloorComponent, isStandalone: false, selector: "rp-selected-floor", inputs: { floor: "floor", texturePlane: "texturePlane", color: "color" }, outputs: { setTexture: "setTexture", setColor: "setColor" }, ngImport: i0, template: "<section>\r\n <h3 class=\"mat-subtitle-1\">{{'MEASUREMENTS' | localize}}</h3>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span class=\"mat-subtitle-2\">{{'AREA' | localize}}:</span>\r\n <span class=\"mat-subtitle-2\">{{floorSurfaceSize | smToMeasure}}</span>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <h3 class=\"mat-subtitle-1\">{{'APPEARANCE' | localize}}</h3>\r\n <rp-appearance-section\r\n type=\"floor\"\r\n [texturePlane]=\"texturePlane\"\r\n [color]=\"color\"\r\n [photoOptions]=\"Options.Tiles\"\r\n (setTexture)=\"setTexture.emit($event)\"\r\n (setColor)=\"setColor.emit($event)\"\r\n >\r\n </rp-appearance-section>\r\n</section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.panel-item{height:40px;line-height:40px}.panel-item+h3{margin-top:16px}\n"], dependencies: [{ kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: SmToMeasurePipe, name: "smToMeasure" }] }); }
41498
41536
  }
41499
41537
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedFloorComponent, decorators: [{
41500
41538
  type: Component,
@@ -41552,7 +41590,7 @@ class DimensionInputComponent {
41552
41590
  }
41553
41591
  }
41554
41592
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DimensionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41555
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DimensionInputComponent, isStandalone: false, selector: "rp-dimension-input", inputs: { minValue: "minValue", maxValue: "maxValue", sourceValue: "sourceValue", title: "title" }, outputs: { dimensionChanged: "dimensionChanged", focus: "focus", blur: "blur" }, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <mat-label [textContent]=\"title\"></mat-label>\r\n <input matInput\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n type=\"number\"\r\n [ngModel]=\"dimension\"\r\n (ngModelChange)=\"handleDimensionChange($event)\"\r\n (keydown.enter)=\"handleSave()\"\r\n (focus)=\"focus.emit($event)\"\r\n (blur)=\"blur.emit($event)\"\r\n >\r\n<!--\r\n <input\r\n matInput\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n type=\"number\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"dimension\"\r\n (ngModelChange)=\"handleDimensionChange($event)\"\r\n (keydown.enter)=\"handleSave()\"\r\n (focus)=\"focus.emit($event)\"\r\n (blur)=\"blur.emit($event)\"\r\n >\r\n-->\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"!valid\"\r\n (click)=\"applyChange(dimension)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"same\"\r\n (click)=\"handleCancel()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [":host{flex:1;overflow-y:auto}mat-icon.size-16{width:16px;height:16px;line-height:16px}mat-form-field input{text-align:right}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "directive", type: i3$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: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.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: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] }); }
41593
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DimensionInputComponent, isStandalone: false, selector: "rp-dimension-input", inputs: { minValue: "minValue", maxValue: "maxValue", sourceValue: "sourceValue", title: "title" }, outputs: { dimensionChanged: "dimensionChanged", focus: "focus", blur: "blur" }, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <mat-label [textContent]=\"title\"></mat-label>\r\n <input matInput\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n type=\"number\"\r\n [ngModel]=\"dimension\"\r\n (ngModelChange)=\"handleDimensionChange($event)\"\r\n (keydown.enter)=\"handleSave()\"\r\n (focus)=\"focus.emit($event)\"\r\n (blur)=\"blur.emit($event)\"\r\n >\r\n<!--\r\n <input\r\n matInput\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n type=\"number\"\r\n [placeholder]=\"title\"\r\n [ngModel]=\"dimension\"\r\n (ngModelChange)=\"handleDimensionChange($event)\"\r\n (keydown.enter)=\"handleSave()\"\r\n (focus)=\"focus.emit($event)\"\r\n (blur)=\"blur.emit($event)\"\r\n >\r\n-->\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"!valid\"\r\n (click)=\"applyChange(dimension)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"same\"\r\n (click)=\"handleCancel()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [":host{flex:1;overflow-y:auto}mat-icon.size-16{width:16px;height:16px;line-height:16px}mat-form-field input{text-align:right}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "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: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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.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: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] }); }
41556
41594
  }
41557
41595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DimensionInputComponent, decorators: [{
41558
41596
  type: Component,
@@ -41731,7 +41769,7 @@ class SelectedObjectComponent {
41731
41769
  this._hudService.updateSelectedItemHud();
41732
41770
  }
41733
41771
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedObjectComponent, deps: [{ token: MessageBusService }, { token: SceneService }, { token: HudService }, { token: HomedecoratorIconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
41734
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedObjectComponent, isStandalone: false, selector: "rp-selected-object", inputs: { object: "object" }, outputs: { onSelectedObjectChange: "onSelectedObjectChange" }, usesOnChanges: true, ngImport: i0, template: "@if (object) {\r\n <section>\r\n <h3 class=\"mat-subheading-2\">{{object.name | localize}}</h3>\r\n @if (object.description) {\r\n <p class=\"mat-body\">{{object.description | localize}}</p>\r\n }\r\n @if (object.isCustom) {\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'MEASUREMENTS' | localize}}</h3>\r\n <rp-dimension-input\r\n [sourceValue]=\"object.getWidth() * 100\"\r\n [minValue]=\"minWidth\"\r\n title=\"{{'WIDTH' | localize}}\"\r\n (dimensionChanged)=\"applyWidth($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <rp-dimension-input\r\n [sourceValue]=\"object.getHeight() * 100\"\r\n [minValue]=\"minHeight\"\r\n title=\"{{'HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"applyHeight($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n @if (object.opening && !object.doorpost) {\r\n <div class=\"sliders-wrapper\">\r\n <h3 class=\"mat-subheading-2\">{{'OPENING_INDICATIONS' | localize}}</h3>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.show\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('show', $event)\"\r\n >\r\n {{'SHOW' | localize}}:\r\n </mat-slide-toggle>\r\n @if (object.opening.show) {\r\n <div>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.double\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('double', $event)\"\r\n >\r\n {{'DOUBLE' | localize}}:\r\n </mat-slide-toggle>\r\n </div>\r\n <div>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.invertDirection\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('invertDirection', $event)\"\r\n >\r\n {{'OPENING_DIRECTION_FRONT_BACK' | localize}}:\r\n </mat-slide-toggle>\r\n </div>\r\n @if (!object.opening.double) {\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.invertSide\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('invertSide', $event)\"\r\n >\r\n {{'OPENING_SIDE_LEFT_RIGHT' | localize}}:\r\n </mat-slide-toggle>\r\n }\r\n }\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n @if (object.scalable) {\r\n <div>\r\n <rp-slider-input\r\n title=\"{{'SCALE_PERCENTAGE' | localize}}\"\r\n min=\"50\"\r\n max=\"200\"\r\n step=\"1\"\r\n [value]=\"object.scalePercentage\"\r\n (onChange)=\"updateObjectScale($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n @if (object.isCustom) {\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'APPEARANCE' | localize}}</h3>\r\n <ng-template #color_content>\r\n <rp-appearance-section\r\n type=\"wallFloor\"\r\n [hideTextureTab]=\"true\"\r\n [hidePhotoTab]=\"true\"\r\n [color]=\"object.frameColor\"\r\n (setColor)=\"updateFrameColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </ng-template>\r\n @if (object.doorpost) {\r\n <ng-container [ngTemplateOutlet]=\"color_content\"></ng-container>\r\n } @else {\r\n <mat-tab-group mat-stretch-tabs\r\n class=\"tab tab--skin\"\r\n [selectedIndex]=\"selectedTabIndex\"\r\n (selectedIndexChange)=\"updateSelectedTabIndex($event)\"\r\n >\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ConfFrame)\"></co-icon>\r\n {{object.frameTitle | localize}}\r\n </div>\r\n </ng-template>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"color_content\"></ng-container>\r\n </div>\r\n </mat-tab>\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ConfPlane)\"></co-icon>\r\n {{object.customMeshTitle | localize}}\r\n </div>\r\n </ng-template>\r\n <div>\r\n <rp-appearance-section\r\n type=\"wallFloor\"\r\n [showGlassOption]=\"true\"\r\n [plainTexture]=\"object.texture\"\r\n [textureWidth]=\"object.getWidth() * 100\"\r\n [textureHeight]=\"object.getHeight() * 100\"\r\n [hideTextureTab]=\"true\"\r\n [hideColorTab]=\"!object.canChangeCustomMeshColor\"\r\n [color]=\"object.doorColor\"\r\n [glassMaterial]=\"object.isGlass\"\r\n [photoOptions]=\"Options.Image\"\r\n (setTexture)=\"updateTexture($event)\"\r\n (setColor)=\"updateColor($event)\"\r\n (setMaterial)=\"updateMaterial($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.sliders-wrapper{margin-bottom:8px}:host ::ng-deep .mat-mdc-slide-toggle{width:100%;height:32px;margin-bottom:8px}:host ::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-label{justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i2$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4$2.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: SliderInputComponent, selector: "rp-slider-input", inputs: ["title", "min", "max", "step", "value"], outputs: ["onChange"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41772
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedObjectComponent, isStandalone: false, selector: "rp-selected-object", inputs: { object: "object" }, outputs: { onSelectedObjectChange: "onSelectedObjectChange" }, usesOnChanges: true, ngImport: i0, template: "@if (object) {\r\n <section>\r\n <h3 class=\"mat-subheading-2\">{{object.name | localize}}</h3>\r\n @if (object.description) {\r\n <p class=\"mat-body\">{{object.description | localize}}</p>\r\n }\r\n @if (object.isCustom) {\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'MEASUREMENTS' | localize}}</h3>\r\n <rp-dimension-input\r\n [sourceValue]=\"object.getWidth() * 100\"\r\n [minValue]=\"minWidth\"\r\n title=\"{{'WIDTH' | localize}}\"\r\n (dimensionChanged)=\"applyWidth($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <rp-dimension-input\r\n [sourceValue]=\"object.getHeight() * 100\"\r\n [minValue]=\"minHeight\"\r\n title=\"{{'HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"applyHeight($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n @if (object.opening && !object.doorpost) {\r\n <div class=\"sliders-wrapper\">\r\n <h3 class=\"mat-subheading-2\">{{'OPENING_INDICATIONS' | localize}}</h3>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.show\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('show', $event)\"\r\n >\r\n {{'SHOW' | localize}}:\r\n </mat-slide-toggle>\r\n @if (object.opening.show) {\r\n <div>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.double\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('double', $event)\"\r\n >\r\n {{'DOUBLE' | localize}}:\r\n </mat-slide-toggle>\r\n </div>\r\n <div>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.invertDirection\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('invertDirection', $event)\"\r\n >\r\n {{'OPENING_DIRECTION_FRONT_BACK' | localize}}:\r\n </mat-slide-toggle>\r\n </div>\r\n @if (!object.opening.double) {\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"object.opening.invertSide\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"openingDirectionChange('invertSide', $event)\"\r\n >\r\n {{'OPENING_SIDE_LEFT_RIGHT' | localize}}:\r\n </mat-slide-toggle>\r\n }\r\n }\r\n <mat-divider></mat-divider>\r\n </div>\r\n }\r\n @if (object.scalable) {\r\n <div>\r\n <rp-slider-input\r\n title=\"{{'SCALE_PERCENTAGE' | localize}}\"\r\n min=\"50\"\r\n max=\"200\"\r\n step=\"1\"\r\n [value]=\"object.scalePercentage\"\r\n (onChange)=\"updateObjectScale($event)\">\r\n </rp-slider-input>\r\n </div>\r\n }\r\n @if (object.isCustom) {\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'APPEARANCE' | localize}}</h3>\r\n <ng-template #color_content>\r\n <rp-appearance-section\r\n type=\"wallFloor\"\r\n [hideTextureTab]=\"true\"\r\n [hidePhotoTab]=\"true\"\r\n [color]=\"object.frameColor\"\r\n (setColor)=\"updateFrameColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </ng-template>\r\n @if (object.doorpost) {\r\n <ng-container [ngTemplateOutlet]=\"color_content\"></ng-container>\r\n } @else {\r\n <mat-tab-group mat-stretch-tabs\r\n class=\"tab tab--skin\"\r\n [selectedIndex]=\"selectedTabIndex\"\r\n (selectedIndexChange)=\"updateSelectedTabIndex($event)\"\r\n >\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ConfFrame)\"></co-icon>\r\n {{object.frameTitle | localize}}\r\n </div>\r\n </ng-template>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"color_content\"></ng-container>\r\n </div>\r\n </mat-tab>\r\n <mat-tab>\r\n <ng-template mat-tab-label>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <co-icon [iconData]=\"iconService.getIcon(icon.ConfPlane)\"></co-icon>\r\n {{object.customMeshTitle | localize}}\r\n </div>\r\n </ng-template>\r\n <div>\r\n <rp-appearance-section\r\n type=\"wallFloor\"\r\n [showGlassOption]=\"true\"\r\n [plainTexture]=\"object.texture\"\r\n [textureWidth]=\"object.getWidth() * 100\"\r\n [textureHeight]=\"object.getHeight() * 100\"\r\n [hideTextureTab]=\"true\"\r\n [hideColorTab]=\"!object.canChangeCustomMeshColor\"\r\n [color]=\"object.doorColor\"\r\n [glassMaterial]=\"object.isGlass\"\r\n [photoOptions]=\"Options.Image\"\r\n (setTexture)=\"updateTexture($event)\"\r\n (setColor)=\"updateColor($event)\"\r\n (setMaterial)=\"updateMaterial($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.sliders-wrapper{margin-bottom:8px}:host ::ng-deep .mat-mdc-slide-toggle{width:100%;height:32px;margin-bottom:8px}:host ::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-label{justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i2$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: SliderInputComponent, selector: "rp-slider-input", inputs: ["title", "min", "max", "step", "value"], outputs: ["onChange"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41735
41773
  }
41736
41774
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedObjectComponent, decorators: [{
41737
41775
  type: Component,
@@ -41839,7 +41877,7 @@ class SelectedThreedObjectComponent {
41839
41877
  return degrees;
41840
41878
  }
41841
41879
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedThreedObjectComponent, deps: [{ token: MessageBusService }, { token: ItemService }, { token: SceneService }, { token: HudService }, { token: RotationService }, { token: ConfigurationService }, { token: HomedecoratorIconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
41842
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedThreedObjectComponent, isStandalone: false, selector: "rp-selected-threed-object", inputs: { object: "object", showCopy: "showCopy", showDelete: "showDelete", showLock: "showLock" }, outputs: { onSelectedObjectChange: "onSelectedObjectChange" }, ngImport: i0, template: "@if (object) {\r\n <section>\r\n <h3 class=\"mat-subheading-2\">{{object.name | localize}}</h3>\r\n @if (object.description) {\r\n <p class=\"mat-body\">{{object.description | localize}}</p>\r\n }\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'ROTATION' | localize}}</h3>\r\n @if (object.canRotateX) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'x'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationX\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationX($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationX\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationXValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationX()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (object.canRotateY) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'y'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationY\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationY($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationY\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationYValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationY()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (object.canRotateZ) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'z'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationZ\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationZ($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationZ\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationZValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationZ()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-divider></mat-divider>\r\n <div class=\"button-wrapper\">\r\n @if (showCopy) {\r\n <button mat-mini-fab primary (click)=\"copyObject()\" matTooltip=\"{{'COPY' | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\">file_copy</mat-icon>\r\n </button>\r\n }\r\n @if (showDelete) {\r\n <button mat-mini-fab (click)=\"removeObject()\" matTooltip=\"{{'REMOVE' | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\">delete</mat-icon>\r\n </button>\r\n }\r\n @if (showLock) {\r\n <button mat-mini-fab (click)=\"toggleLockObject()\" matTooltip=\"{{(object.locked ? 'UNLOCK' : 'LOCK') | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\" [textContent]=\"object.locked ? 'lock' : 'lock_open'\"></mat-icon>\r\n </button>\r\n }\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n }\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}:host .rotation-wrapper{display:flex;align-items:center}:host .rotation-wrapper mat-slider{width:72%}:host .rotation-wrapper input{width:15%}:host .rotation-wrapper button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background-color:#fff;color:#000}:host .button-wrapper{padding:0 100px;display:flex;justify-content:space-between}:host .button-wrapper button{background-color:#fff;color:#000}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i3$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: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { 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.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: "pipe", type: LocalizePipe, name: "localize" }] }); }
41880
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedThreedObjectComponent, isStandalone: false, selector: "rp-selected-threed-object", inputs: { object: "object", showCopy: "showCopy", showDelete: "showDelete", showLock: "showLock" }, outputs: { onSelectedObjectChange: "onSelectedObjectChange" }, ngImport: i0, template: "@if (object) {\r\n <section>\r\n <h3 class=\"mat-subheading-2\">{{object.name | localize}}</h3>\r\n @if (object.description) {\r\n <p class=\"mat-body\">{{object.description | localize}}</p>\r\n }\r\n <div>\r\n <h3 class=\"mat-subheading-2\">{{'ROTATION' | localize}}</h3>\r\n @if (object.canRotateX) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'x'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationX\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationX($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationX\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationXValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationX()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (object.canRotateY) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'y'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationY\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationY($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationY\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationYValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationY()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (object.canRotateZ) {\r\n <div class=\"rotation-wrapper\">\r\n <span [textContent]=\"'z'\"></span>\r\n <mat-slider class=\"value\" thumbLabel min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationZ\"\r\n [disabled]=\"object.locked\"\r\n (input)=\"handleUpdateRotationZ($event)\"></mat-slider>\r\n <input matInput type=\"number\" min=\"-180\" max=\"180\"\r\n [step]=\"step\"\r\n [ngModel]=\"rotationZ\"\r\n [disabled]=\"object.locked\"\r\n (ngModelChange)=\"handleUpdateRotationZValue($event)\">\r\n <button mat-mini-fab primary (click)=\"resetRotationZ()\" matTooltip=\"{{'RESET' | localize}}\" [disabled]=\"object.locked\">\r\n <mat-icon class=\"homedecorator-material-icons\">cached</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-divider></mat-divider>\r\n <div class=\"button-wrapper\">\r\n @if (showCopy) {\r\n <button mat-mini-fab primary (click)=\"copyObject()\" matTooltip=\"{{'COPY' | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\">file_copy</mat-icon>\r\n </button>\r\n }\r\n @if (showDelete) {\r\n <button mat-mini-fab (click)=\"removeObject()\" matTooltip=\"{{'REMOVE' | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\">delete</mat-icon>\r\n </button>\r\n }\r\n @if (showLock) {\r\n <button mat-mini-fab (click)=\"toggleLockObject()\" matTooltip=\"{{(object.locked ? 'UNLOCK' : 'LOCK') | localize}}\">\r\n <mat-icon class=\"homedecorator-material-icons\" [textContent]=\"object.locked ? 'lock' : 'lock_open'\"></mat-icon>\r\n </button>\r\n }\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n }\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}:host .rotation-wrapper{display:flex;align-items:center}:host .rotation-wrapper mat-slider{width:72%}:host .rotation-wrapper input{width:15%}:host .rotation-wrapper button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background-color:#fff;color:#000}:host .button-wrapper{padding:0 100px;display:flex;justify-content:space-between}:host .button-wrapper button{background-color:#fff;color:#000}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { 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: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { 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.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: "pipe", type: LocalizePipe, name: "localize" }] }); }
41843
41881
  }
41844
41882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedThreedObjectComponent, decorators: [{
41845
41883
  type: Component,
@@ -41899,7 +41937,7 @@ class SelectedWallComponent {
41899
41937
  this.deselectCorner();
41900
41938
  }
41901
41939
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedWallComponent, deps: [{ token: MessageBusService }, { token: ConfigurationService }, { token: ViewModeService }], target: i0.ɵɵFactoryTarget.Component }); }
41902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedWallComponent, isStandalone: false, selector: "rp-selected-wall", inputs: { wall: "wall", texturePlane: "texturePlane", color: "color", minWallHeight: "minWallHeight", maxWallHeight: "maxWallHeight", maxWallThickness: "maxWallThickness", maxWallLength: "maxWallLength", minWallLength: "minWallLength" }, outputs: { remove: "remove", setLength: "setLength", setHeight: "setHeight", setThickness: "setThickness", selectCorner: "selectCorner", setTexture: "setTexture", setColor: "setColor" }, ngImport: i0, template: "@if (wall) {\r\n <section>\r\n @if (viewModeService.viewMode === viewModes.FloorPlan2D) {\r\n <button\r\n mat-raised-button\r\n class=\"remove\"\r\n (click)=\"remove.emit(wall)\">\r\n <mat-icon class=\"homedecorator-material-icons\">delete</mat-icon>\r\n {{'REMOVE' | localize}}\r\n </button>\r\n }\r\n <h3 class=\"mat-subheading-2\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n @if (!detailedWallMeasurementsMode) {\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.innerLength * 100\"\r\n [maxValue]=\"maxWallLength\"\r\n [minValue]=\"minWallLength\"\r\n title=\"{{'LENGTH' | localize}}\"\r\n (focus)=\"markCorner()\"\r\n (blur)=\"deselectCorner()\"\r\n (dimensionChanged)=\"lengthChanged($event)\"\r\n >\r\n </rp-dimension-input>\r\n }\r\n <div class=\"wall-direction-toggle\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span class=\"mat-body-2\">{{'REVERSE_WALL_DIRECTION' | localize}}</span>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"wallDirectionReversed\"\r\n (focusout)=\"deselectCorner()\"\r\n (change)=\"reverseWallDirection($event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.height * 100\"\r\n [minValue]=\"minWallHeight\"\r\n [maxValue]=\"maxWallHeight\"\r\n title=\"{{'HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"setHeight.emit($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.thickness * 100\"\r\n [maxValue]=\"maxWallThickness\"\r\n title=\"{{'THICKNESS' | localize}}\"\r\n (dimensionChanged)=\"setThickness.emit($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n </div>\r\n @if (viewModeService.viewMode === viewModes.RoomPlan3D || viewModes.FloorPlan2D) {\r\n <div>\r\n <mat-divider></mat-divider>\r\n <h3 class=\"mat-subheading-2\">{{'APPEARANCE' | localize}}</h3>\r\n <rp-appearance-section\r\n type=\"wall\"\r\n [texturePlane]=\"texturePlane\"\r\n [color]=\"color\"\r\n [textureWidth]=\"wall.length * 100\"\r\n [textureHeight]=\"wall.height * 100\"\r\n [photoOptions]=\"editorOptions.Both\"\r\n (setTexture)=\"setTexture.emit($event)\"\r\n (setColor)=\"setColor.emit($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}h1{margin-bottom:.25em}mat-icon.size-16{width:16px;height:16px;line-height:16px}button.remove{position:absolute;top:15px;right:70px}.wall-direction-toggle{margin:5px 7px 20px 0}mat-form-field input{text-align:right}\n"], dependencies: [{ 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: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41940
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectedWallComponent, isStandalone: false, selector: "rp-selected-wall", inputs: { wall: "wall", texturePlane: "texturePlane", color: "color", minWallHeight: "minWallHeight", maxWallHeight: "maxWallHeight", maxWallThickness: "maxWallThickness", maxWallLength: "maxWallLength", minWallLength: "minWallLength" }, outputs: { remove: "remove", setLength: "setLength", setHeight: "setHeight", setThickness: "setThickness", selectCorner: "selectCorner", setTexture: "setTexture", setColor: "setColor" }, ngImport: i0, template: "@if (wall) {\r\n <section>\r\n @if (viewModeService.viewMode === viewModes.FloorPlan2D) {\r\n <button\r\n mat-raised-button\r\n class=\"remove\"\r\n (click)=\"remove.emit(wall)\">\r\n <mat-icon class=\"homedecorator-material-icons\">delete</mat-icon>\r\n {{'REMOVE' | localize}}\r\n </button>\r\n }\r\n <h3 class=\"mat-subheading-2\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n @if (!detailedWallMeasurementsMode) {\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.innerLength * 100\"\r\n [maxValue]=\"maxWallLength\"\r\n [minValue]=\"minWallLength\"\r\n title=\"{{'LENGTH' | localize}}\"\r\n (focus)=\"markCorner()\"\r\n (blur)=\"deselectCorner()\"\r\n (dimensionChanged)=\"lengthChanged($event)\"\r\n >\r\n </rp-dimension-input>\r\n }\r\n <div class=\"wall-direction-toggle\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span class=\"mat-body-2\">{{'REVERSE_WALL_DIRECTION' | localize}}</span>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"wallDirectionReversed\"\r\n (focusout)=\"deselectCorner()\"\r\n (change)=\"reverseWallDirection($event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.height * 100\"\r\n [minValue]=\"minWallHeight\"\r\n [maxValue]=\"maxWallHeight\"\r\n title=\"{{'HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"setHeight.emit($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n <rp-dimension-input\r\n [sourceValue]=\"wall.thickness * 100\"\r\n [maxValue]=\"maxWallThickness\"\r\n title=\"{{'THICKNESS' | localize}}\"\r\n (dimensionChanged)=\"setThickness.emit($event / 100)\"\r\n >\r\n </rp-dimension-input>\r\n </div>\r\n @if (viewModeService.viewMode === viewModes.RoomPlan3D || viewModes.FloorPlan2D) {\r\n <div>\r\n <mat-divider></mat-divider>\r\n <h3 class=\"mat-subheading-2\">{{'APPEARANCE' | localize}}</h3>\r\n <rp-appearance-section\r\n type=\"wall\"\r\n [texturePlane]=\"texturePlane\"\r\n [color]=\"color\"\r\n [textureWidth]=\"wall.length * 100\"\r\n [textureHeight]=\"wall.height * 100\"\r\n [photoOptions]=\"editorOptions.Both\"\r\n (setTexture)=\"setTexture.emit($event)\"\r\n (setColor)=\"setColor.emit($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}h1{margin-bottom:.25em}mat-icon.size-16{width:16px;height:16px;line-height:16px}button.remove{position:absolute;top:15px;right:70px}.wall-direction-toggle{margin:5px 7px 20px 0}mat-form-field input{text-align:right}\n"], dependencies: [{ 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: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
41903
41941
  }
41904
41942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectedWallComponent, decorators: [{
41905
41943
  type: Component,
@@ -41965,46 +42003,46 @@ class SettingsOptionsComponent {
41965
42003
  this.onclose.emit();
41966
42004
  }
41967
42005
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SettingsOptionsComponent, deps: [{ token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
41968
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SettingsOptionsComponent, isStandalone: false, selector: "settings-options", outputs: { onclose: "onclose" }, host: { listeners: { "document:mousemove": "moveDialog($event)", "document:mouseup": "cancelMoveDialog($event)" } }, viewQueries: [{ propertyName: "dialogElement", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
41969
- <div class="edit-popup" #dialog @showHideDialog [style.top.px]="top" [style.left.px]="left">
41970
- <div class="title-bar">
41971
- <div class="title-bar-move" (mousedown)="handleTitleMouseDown($event)">
41972
- <div class="title-description" [textContent]="'OPTIONS' | localize"></div>
41973
- </div>
41974
- <button mat-icon-button class="hide-dialog" (click)="hidePopup()">
41975
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">close</mat-icon>
41976
- </button>
41977
- </div>
41978
- <div class="popup-content">
41979
- <span class="section-title" [textContent]="'GENERAL' | localize"></span>
41980
- <div class="section-content">
41981
- <span class="option-label key" [textContent]="'VR_ENABLED' | localize"></span>
41982
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.vrEnabled"
41983
- (change)="settingsService.settings.options.vrEnabled = $event.checked"
41984
- ></mat-slide-toggle>
41985
- <span class="option-label key" [textContent]="'AR_ENABLED' | localize"></span>
41986
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.arEnabled"
41987
- (change)="settingsService.settings.options.arEnabled = $event.checked"
41988
- ></mat-slide-toggle>
41989
- <span class="option-label key" [textContent]="'SHOW_DOWNLOAD_BUTTON' | localize"></span>
41990
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.showDownloadButton"
41991
- (change)="settingsService.settings.options.showDownloadButton = $event.checked"
41992
- ></mat-slide-toggle>
41993
- </div>
41994
- <span class="section-title" [textContent]="'CONFIGURATOR' | localize"></span>
41995
- <div class="section-content">
41996
- <span class="option-label key" [textContent]="'INLINE_ANSWERS' | localize"></span>
41997
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.inlineAnswers"
41998
- (change)="settingsService.settings.options.inlineAnswers = $event.checked"
41999
- ></mat-slide-toggle>
42000
- <span class="option-label key" [textContent]="'INSTANT_EDIT_MENU' | localize"></span>
42001
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.instantEditMenu"
42002
- (change)="settingsService.settings.options.instantEditMenu = $event.checked"
42003
- ></mat-slide-toggle>
42004
- </div>
42005
- </div>
42006
- </div>
42007
- `, isInline: true, styles: [":host .edit-popup{position:fixed;min-height:200px;min-width:400px;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;box-shadow:0 0 5px 1px #00000080}:host .title-bar{display:flex;justify-content:space-between;background:#3760a1;color:#fff;padding-left:10px}:host .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .title-bar mat-icon{color:#fff}:host .popup-content{padding:20px}:host .section-title{font-size:12px;font-weight:700}:host .section-content{margin-top:10px;font-size:12px;display:grid;grid-template-columns:80% 20%}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
42006
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SettingsOptionsComponent, isStandalone: false, selector: "settings-options", outputs: { onclose: "onclose" }, host: { listeners: { "document:mousemove": "moveDialog($event)", "document:mouseup": "cancelMoveDialog($event)" } }, viewQueries: [{ propertyName: "dialogElement", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
42007
+ <div class="edit-popup" #dialog @showHideDialog [style.top.px]="top" [style.left.px]="left">
42008
+ <div class="title-bar">
42009
+ <div class="title-bar-move" (mousedown)="handleTitleMouseDown($event)">
42010
+ <div class="title-description" [textContent]="'OPTIONS' | localize"></div>
42011
+ </div>
42012
+ <button mat-icon-button class="hide-dialog" (click)="hidePopup()">
42013
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">close</mat-icon>
42014
+ </button>
42015
+ </div>
42016
+ <div class="popup-content">
42017
+ <span class="section-title" [textContent]="'GENERAL' | localize"></span>
42018
+ <div class="section-content">
42019
+ <span class="option-label key" [textContent]="'VR_ENABLED' | localize"></span>
42020
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.vrEnabled"
42021
+ (change)="settingsService.settings.options.vrEnabled = $event.checked"
42022
+ ></mat-slide-toggle>
42023
+ <span class="option-label key" [textContent]="'AR_ENABLED' | localize"></span>
42024
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.arEnabled"
42025
+ (change)="settingsService.settings.options.arEnabled = $event.checked"
42026
+ ></mat-slide-toggle>
42027
+ <span class="option-label key" [textContent]="'SHOW_DOWNLOAD_BUTTON' | localize"></span>
42028
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.showDownloadButton"
42029
+ (change)="settingsService.settings.options.showDownloadButton = $event.checked"
42030
+ ></mat-slide-toggle>
42031
+ </div>
42032
+ <span class="section-title" [textContent]="'CONFIGURATOR' | localize"></span>
42033
+ <div class="section-content">
42034
+ <span class="option-label key" [textContent]="'INLINE_ANSWERS' | localize"></span>
42035
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.inlineAnswers"
42036
+ (change)="settingsService.settings.options.inlineAnswers = $event.checked"
42037
+ ></mat-slide-toggle>
42038
+ <span class="option-label key" [textContent]="'INSTANT_EDIT_MENU' | localize"></span>
42039
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.instantEditMenu"
42040
+ (change)="settingsService.settings.options.instantEditMenu = $event.checked"
42041
+ ></mat-slide-toggle>
42042
+ </div>
42043
+ </div>
42044
+ </div>
42045
+ `, isInline: true, styles: [":host .edit-popup{position:fixed;min-height:200px;min-width:400px;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;box-shadow:0 0 5px 1px #00000080}:host .title-bar{display:flex;justify-content:space-between;background:#3760a1;color:#fff;padding-left:10px}:host .title-bar .title-bar-move{display:flex;flex-basis:100%;align-items:center}:host .title-bar .title-bar-move .title-description{-webkit-user-select:none;user-select:none}:host .title-bar mat-icon{color:#fff}:host .popup-content{padding:20px}:host .section-title{font-size:12px;font-weight:700}:host .section-content{margin-top:10px;font-size:12px;display:grid;grid-template-columns:80% 20%}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
42008
42046
  trigger('showHideDialog', [
42009
42047
  state('void', style({ opacity: 0 })),
42010
42048
  state('*', style({ opacity: 1 })),
@@ -42014,45 +42052,45 @@ class SettingsOptionsComponent {
42014
42052
  }
42015
42053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SettingsOptionsComponent, decorators: [{
42016
42054
  type: Component,
42017
- args: [{ selector: 'settings-options', template: `
42018
- <div class="edit-popup" #dialog @showHideDialog [style.top.px]="top" [style.left.px]="left">
42019
- <div class="title-bar">
42020
- <div class="title-bar-move" (mousedown)="handleTitleMouseDown($event)">
42021
- <div class="title-description" [textContent]="'OPTIONS' | localize"></div>
42022
- </div>
42023
- <button mat-icon-button class="hide-dialog" (click)="hidePopup()">
42024
- <mat-icon class="homedecorator-material-icons" aria-hidden="true">close</mat-icon>
42025
- </button>
42026
- </div>
42027
- <div class="popup-content">
42028
- <span class="section-title" [textContent]="'GENERAL' | localize"></span>
42029
- <div class="section-content">
42030
- <span class="option-label key" [textContent]="'VR_ENABLED' | localize"></span>
42031
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.vrEnabled"
42032
- (change)="settingsService.settings.options.vrEnabled = $event.checked"
42033
- ></mat-slide-toggle>
42034
- <span class="option-label key" [textContent]="'AR_ENABLED' | localize"></span>
42035
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.arEnabled"
42036
- (change)="settingsService.settings.options.arEnabled = $event.checked"
42037
- ></mat-slide-toggle>
42038
- <span class="option-label key" [textContent]="'SHOW_DOWNLOAD_BUTTON' | localize"></span>
42039
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.showDownloadButton"
42040
- (change)="settingsService.settings.options.showDownloadButton = $event.checked"
42041
- ></mat-slide-toggle>
42042
- </div>
42043
- <span class="section-title" [textContent]="'CONFIGURATOR' | localize"></span>
42044
- <div class="section-content">
42045
- <span class="option-label key" [textContent]="'INLINE_ANSWERS' | localize"></span>
42046
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.inlineAnswers"
42047
- (change)="settingsService.settings.options.inlineAnswers = $event.checked"
42048
- ></mat-slide-toggle>
42049
- <span class="option-label key" [textContent]="'INSTANT_EDIT_MENU' | localize"></span>
42050
- <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.instantEditMenu"
42051
- (change)="settingsService.settings.options.instantEditMenu = $event.checked"
42052
- ></mat-slide-toggle>
42053
- </div>
42054
- </div>
42055
- </div>
42055
+ args: [{ selector: 'settings-options', template: `
42056
+ <div class="edit-popup" #dialog @showHideDialog [style.top.px]="top" [style.left.px]="left">
42057
+ <div class="title-bar">
42058
+ <div class="title-bar-move" (mousedown)="handleTitleMouseDown($event)">
42059
+ <div class="title-description" [textContent]="'OPTIONS' | localize"></div>
42060
+ </div>
42061
+ <button mat-icon-button class="hide-dialog" (click)="hidePopup()">
42062
+ <mat-icon class="homedecorator-material-icons" aria-hidden="true">close</mat-icon>
42063
+ </button>
42064
+ </div>
42065
+ <div class="popup-content">
42066
+ <span class="section-title" [textContent]="'GENERAL' | localize"></span>
42067
+ <div class="section-content">
42068
+ <span class="option-label key" [textContent]="'VR_ENABLED' | localize"></span>
42069
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.vrEnabled"
42070
+ (change)="settingsService.settings.options.vrEnabled = $event.checked"
42071
+ ></mat-slide-toggle>
42072
+ <span class="option-label key" [textContent]="'AR_ENABLED' | localize"></span>
42073
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.arEnabled"
42074
+ (change)="settingsService.settings.options.arEnabled = $event.checked"
42075
+ ></mat-slide-toggle>
42076
+ <span class="option-label key" [textContent]="'SHOW_DOWNLOAD_BUTTON' | localize"></span>
42077
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.showDownloadButton"
42078
+ (change)="settingsService.settings.options.showDownloadButton = $event.checked"
42079
+ ></mat-slide-toggle>
42080
+ </div>
42081
+ <span class="section-title" [textContent]="'CONFIGURATOR' | localize"></span>
42082
+ <div class="section-content">
42083
+ <span class="option-label key" [textContent]="'INLINE_ANSWERS' | localize"></span>
42084
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.inlineAnswers"
42085
+ (change)="settingsService.settings.options.inlineAnswers = $event.checked"
42086
+ ></mat-slide-toggle>
42087
+ <span class="option-label key" [textContent]="'INSTANT_EDIT_MENU' | localize"></span>
42088
+ <mat-slide-toggle class="value" min="0" max="1" [checked]="settingsService.settings.options.instantEditMenu"
42089
+ (change)="settingsService.settings.options.instantEditMenu = $event.checked"
42090
+ ></mat-slide-toggle>
42091
+ </div>
42092
+ </div>
42093
+ </div>
42056
42094
  `, animations: [
42057
42095
  trigger('showHideDialog', [
42058
42096
  state('void', style({ opacity: 0 })),
@@ -42232,7 +42270,7 @@ class SettingsComponent {
42232
42270
  });
42233
42271
  }
42234
42272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SettingsComponent, deps: [{ token: HomedecoratorSettingsService }, { token: i2$5.MatSnackBar }, { token: MessageBusService }, { token: ConfigurationService }, { token: SceneService }, { token: ItemService }, { token: HomedecoratorAppService }, { token: FontService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
42235
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SettingsComponent, isStandalone: false, selector: "rp-settings", inputs: { minWallHeight: "minWallHeight", placeCameraDisabled: "placeCameraDisabled" }, outputs: { onWallsHeightUpdate: "onWallsHeightUpdate" }, viewQueries: [{ propertyName: "versionFieldRef", first: true, predicate: ["versionField"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_TOUCH' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"enableTouch\"\r\n (change)=\"toggle(configurationKey.EnableTouch, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'WALLS' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <rp-dimension-input\r\n [sourceValue]=\"wallHeight\"\r\n [minValue]=\"minWallHeight\"\r\n title=\"{{'DEFAULT_HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"applyNewHeight($event)\"\r\n >\r\n </rp-dimension-input>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'DEFAULT_THICKNESS' | localize }}:</b>\r\n <span class=\"mat-body-2\">{{ wallThickness }}</span>\r\n</div>\r\n@if (showDetailedWallMeasurements) {\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_DETAILED_WALL_MEASUREMENTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showDetailedWallMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowDetailedWallMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n}\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_DISTANCES_OF_WALL_ITEMS_IN_2D' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showWallItemMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowWallItemMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_SNAPPING_OF_WALLS_TO_BASIC_ANGLES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"wallSnapping\"\r\n (change)=\"toggle(configurationKey.WallSnapping, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_SNAPPING_TO_WALL_JOINTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"cornerSnapping\"\r\n (change)=\"toggle(configurationKey.CornerSnapping, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'OBJECTS' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_DISTANCES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showObjectDistances\"\r\n (change)=\"toggle(configurationKey.ShowObjectDistances, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_MEASUREMENTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showObjectMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowObjectMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_ROTATION_SNAPPING' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"rotationSnappingEnabled\"\r\n (change)=\"toggle(configurationKey.RotationSnappingEnabled, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'DISPLAY_CUSTOM_SHAPE_NAMES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"displayCustomShapeNames\"\r\n (change)=\"toggle(configurationKey.DisplayCustomShapeNames, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'UNIT_INFO' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SELECT_DIMENSION' | localize }}:</b>\r\n <mat-select [value]=\"currentDimensioning\">\r\n @for (dimensioning of dimensioningOptions; track dimensioning) {\r\n <mat-option\r\n [value]=\"dimensioning\"\r\n [textContent]=\"dimensioning\"\r\n (click)=\"handleDimensioningChoice(dimensioning)\">\r\n </mat-option>\r\n }\r\n </mat-select>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SELECT_DECIMALS' | localize }}:</b>\r\n <mat-select [value]=\"currentRoundingDecimals\">\r\n <mat-option [value]=\"0\" (click)=\"handleDecimalsChoice(0)\" [textContent]=\"'0'\"></mat-option>\r\n <mat-option [value]=\"1\" (click)=\"handleDecimalsChoice(1)\" [textContent]=\"'1'\"></mat-option>\r\n <mat-option [value]=\"2\" (click)=\"handleDecimalsChoice(2)\" [textContent]=\"'2'\"></mat-option>\r\n </mat-select>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ANGLES' | localize }}:</b>\r\n <span class=\"mat-body-2\">{{ angleUnit }}</span>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'CAMERA' | localize }}</h3>\r\n<b class=\"mat-subtitle-2\">{{ 'SET_START_POSITION_FOR_WALK_THROUGH_MODE' | localize }}</b>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n [disabled]=\"placeCameraDisabled\"\r\n class=\"place-camera\"\r\n (click)=\"placeCamera()\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">photo_camera</mat-icon>\r\n {{ 'PLACE_CAMERA' | localize }}\r\n </button>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_CAMERA_CONFIGURATION' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showCameraControls\"\r\n (change)=\"toggle(configurationKey.ShowWalkThroughCameraControls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n@if (settingsService.settings.options.development) {\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">Camera FOV</b>\r\n <mat-slider class=\"slider-group-slider\" showTickMarks discrete\r\n [min]=\"1\"\r\n [max]=\"125\"\r\n [step]=\"1\">\r\n <input matSliderThumb [value]=\"cameraFOV\" (valueChange)=\"setCameraFOV($event)\">\r\n </mat-slider>\r\n <span class=\"mat-body-2\">{{ cameraFOV }}</span>\r\n </div>\r\n}\r\n<div class=\"panel-item\" fxLayout=\"column\">\r\n <h3 class=\"mat-subtitle-1\">{{ 'CLEAR_ROOM' | localize }}</h3>\r\n <b class=\"mat-subtitle-2\">{{ 'CLEAR_ALL_FURNITURE_FROM_ROOM' | localize }}</b>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n class=\"remove-all\"\r\n (click)=\"removeAll()\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">delete_sweep</mat-icon>\r\n {{ 'CLEAR_FURNITURE' | localize }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n@if (settingsService.settings.options.development) {\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <h3 class=\"mat-subheading-2\">{{ 'LIGHTS' | localize }}</h3>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_LIGHTING_CONFIGURATION' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showLightControls\"\r\n (change)=\"toggle(configurationKey.ShowLightingControls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n (click)=\"toggle(configurationKey.ShowLightplansDialog, true)\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">wb_incandescent</mat-icon>\r\n {{ 'MANAGE_LIGHTPLANS' | localize }}\r\n </button>\r\n </div>\r\n <div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_INTERIOR_LIGHTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showInteriorLights\"\r\n (change)=\"toggle(configurationKey.ShowInteriorLights, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'INTERIOR_LIGHT_INTENSITY' | localize }}</b>\r\n <mat-slider class=\"slider-group-slider\" showTickMarks discrete\r\n [min]=\"1\"\r\n [max]=\"1600\"\r\n [step]=\"1\">\r\n <input matSliderThumb [value]=\"interiorLightIntensity\" (valueChange)=\"setInteriorLightIntensity($event)\">\r\n </mat-slider>\r\n <span class=\"mat-body-2\">{{ interiorLightIntensity }}</span>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_POST_PROCESSING_SETTINGS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showPostProcessingSettings\"\r\n (change)=\"toggle(configurationKey.ShowPostProcessingSettings, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_WALLS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showWalls\"\r\n (change)=\"toggle(configurationKey.ShowWalls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_CEILING' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showCeiling\"\r\n (change)=\"toggle(configurationKey.ShowCeiling, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button (click)=\"hideMaterials()\">{{ 'HIDE_MATERIALS' | localize }}</button>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button (click)=\"showConnectors()\">{{ 'SHOW_CONNECTORS' | localize }}</button>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n (click)=\"showSettingsOptions = true\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">settings</mat-icon>\r\n {{ 'SHOW_SETTINGS_OPTIONS' | localize }}\r\n </button>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <b class=\"mat-body-2\">{{ 'APP_VERSION' | localize }}:</b>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n #versionField\r\n type=\"text\"\r\n readonly=\"true\"\r\n [value]=\"version\"\r\n (click)=\"selectVersionFieldContent()\"\r\n />\r\n <mat-icon matSuffix (click)=\"copyToClipboard()\">file_copy</mat-icon>\r\n </mat-form-field>\r\n </div>\r\n <h3 class=\"mat-subheading-2\">{{ 'CONNECTION' | localize }}</h3>\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <b class=\"mat-body-2\">{{ 'iONE backend url' | localize }}:</b>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n #ioneBackendUrl\r\n type=\"text\"\r\n [value]=\"settingsService.settings?.url\"\r\n (keydown)=\"handleBackendUrlChange($event)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n}\r\n<div class=\"powered-by-wrapper\">\r\n <span>MyRoomPlans is powered by</span>\r\n <span class=\"powered-logo-wrapper\">\r\n <a href=\"https://www.colijn-it.nl\" target=\"_blank\" alt=\"Colijn IT\" class=\"colijn-it-logo\"><img\r\n src=\"assets/images/colijn-logo.webp\"/></a>\r\n <a href=\"https://ione360.com\" target=\"_blank\" alt=\"iONE360\" class=\"ione-360-logo\"><img\r\n src=\"assets/images/ione360-logo.webp\"/></a>\r\n </span>\r\n <span>Copyright Colijn IT 2021</span>\r\n</div>\r\n@if (showSettingsOptions) {\r\n <settings-options (onclose)=\"showSettingsOptions = false\"></settings-options>\r\n}\r\n", styles: [":host{overflow-y:auto;overflow-x:hidden}:host .powered-by-wrapper{margin-top:20px;font-size:12px}:host .powered-by-wrapper .powered-logo-wrapper{display:flex;align-items:center;justify-content:space-between}:host .powered-by-wrapper .colijn-it-logo{margin:0 5px}:host .powered-by-wrapper .colijn-it-logo img{width:100px}:host .powered-by-wrapper .ione-360-logo{margin:5px}:host .powered-by-wrapper .ione-360-logo img{width:134px}.panel-item{min-height:40px}.panel-item+h3{margin-top:16px;font-weight:600}mat-form-field{width:100%}mat-select{width:70px}::ng-deep .mat-drawer-content{overflow-y:auto;overflow-x:hidden}\n"], dependencies: [{ 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: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3$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: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i4$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: SettingsOptionsComponent, selector: "settings-options", outputs: ["onclose"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42273
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SettingsComponent, isStandalone: false, selector: "rp-settings", inputs: { minWallHeight: "minWallHeight", placeCameraDisabled: "placeCameraDisabled" }, outputs: { onWallsHeightUpdate: "onWallsHeightUpdate" }, viewQueries: [{ propertyName: "versionFieldRef", first: true, predicate: ["versionField"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_TOUCH' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"enableTouch\"\r\n (change)=\"toggle(configurationKey.EnableTouch, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'WALLS' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <rp-dimension-input\r\n [sourceValue]=\"wallHeight\"\r\n [minValue]=\"minWallHeight\"\r\n title=\"{{'DEFAULT_HEIGHT' | localize}}\"\r\n (dimensionChanged)=\"applyNewHeight($event)\"\r\n >\r\n </rp-dimension-input>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'DEFAULT_THICKNESS' | localize }}:</b>\r\n <span class=\"mat-body-2\">{{ wallThickness }}</span>\r\n</div>\r\n@if (showDetailedWallMeasurements) {\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_DETAILED_WALL_MEASUREMENTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showDetailedWallMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowDetailedWallMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n}\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_DISTANCES_OF_WALL_ITEMS_IN_2D' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showWallItemMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowWallItemMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_SNAPPING_OF_WALLS_TO_BASIC_ANGLES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"wallSnapping\"\r\n (change)=\"toggle(configurationKey.WallSnapping, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_SNAPPING_TO_WALL_JOINTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"cornerSnapping\"\r\n (change)=\"toggle(configurationKey.CornerSnapping, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'OBJECTS' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_DISTANCES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showObjectDistances\"\r\n (change)=\"toggle(configurationKey.ShowObjectDistances, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_MEASUREMENTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showObjectMeasurements\"\r\n (change)=\"toggle(configurationKey.ShowObjectMeasurements, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ENABLE_ROTATION_SNAPPING' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"rotationSnappingEnabled\"\r\n (change)=\"toggle(configurationKey.RotationSnappingEnabled, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n<div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'DISPLAY_CUSTOM_SHAPE_NAMES' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"displayCustomShapeNames\"\r\n (change)=\"toggle(configurationKey.DisplayCustomShapeNames, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'UNIT_INFO' | localize }}</h3>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SELECT_DIMENSION' | localize }}:</b>\r\n <mat-select [value]=\"currentDimensioning\">\r\n @for (dimensioning of dimensioningOptions; track dimensioning) {\r\n <mat-option\r\n [value]=\"dimensioning\"\r\n [textContent]=\"dimensioning\"\r\n (click)=\"handleDimensioningChoice(dimensioning)\">\r\n </mat-option>\r\n }\r\n </mat-select>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SELECT_DECIMALS' | localize }}:</b>\r\n <mat-select [value]=\"currentRoundingDecimals\">\r\n <mat-option [value]=\"0\" (click)=\"handleDecimalsChoice(0)\" [textContent]=\"'0'\"></mat-option>\r\n <mat-option [value]=\"1\" (click)=\"handleDecimalsChoice(1)\" [textContent]=\"'1'\"></mat-option>\r\n <mat-option [value]=\"2\" (click)=\"handleDecimalsChoice(2)\" [textContent]=\"'2'\"></mat-option>\r\n </mat-select>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'ANGLES' | localize }}:</b>\r\n <span class=\"mat-body-2\">{{ angleUnit }}</span>\r\n</div>\r\n\r\n<h3 class=\"mat-subtitle-1\">{{ 'CAMERA' | localize }}</h3>\r\n<b class=\"mat-subtitle-2\">{{ 'SET_START_POSITION_FOR_WALK_THROUGH_MODE' | localize }}</b>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n [disabled]=\"placeCameraDisabled\"\r\n class=\"place-camera\"\r\n (click)=\"placeCamera()\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">photo_camera</mat-icon>\r\n {{ 'PLACE_CAMERA' | localize }}\r\n </button>\r\n</div>\r\n<div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-subtitle-2\">{{ 'SHOW_CAMERA_CONFIGURATION' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showCameraControls\"\r\n (change)=\"toggle(configurationKey.ShowWalkThroughCameraControls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n@if (settingsService.settings.options.development) {\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">Camera FOV</b>\r\n <mat-slider class=\"slider-group-slider\" showTickMarks discrete\r\n [min]=\"1\"\r\n [max]=\"125\"\r\n [step]=\"1\">\r\n <input matSliderThumb [value]=\"cameraFOV\" (valueChange)=\"setCameraFOV($event)\">\r\n </mat-slider>\r\n <span class=\"mat-body-2\">{{ cameraFOV }}</span>\r\n </div>\r\n}\r\n<div class=\"panel-item\" fxLayout=\"column\">\r\n <h3 class=\"mat-subtitle-1\">{{ 'CLEAR_ROOM' | localize }}</h3>\r\n <b class=\"mat-subtitle-2\">{{ 'CLEAR_ALL_FURNITURE_FROM_ROOM' | localize }}</b>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n class=\"remove-all\"\r\n (click)=\"removeAll()\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">delete_sweep</mat-icon>\r\n {{ 'CLEAR_FURNITURE' | localize }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n@if (settingsService.settings.options.development) {\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <h3 class=\"mat-subheading-2\">{{ 'LIGHTS' | localize }}</h3>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_LIGHTING_CONFIGURATION' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showLightControls\"\r\n (change)=\"toggle(configurationKey.ShowLightingControls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n (click)=\"toggle(configurationKey.ShowLightplansDialog, true)\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">wb_incandescent</mat-icon>\r\n {{ 'MANAGE_LIGHTPLANS' | localize }}\r\n </button>\r\n </div>\r\n <div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_INTERIOR_LIGHTS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showInteriorLights\"\r\n (change)=\"toggle(configurationKey.ShowInteriorLights, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" psefxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'INTERIOR_LIGHT_INTENSITY' | localize }}</b>\r\n <mat-slider class=\"slider-group-slider\" showTickMarks discrete\r\n [min]=\"1\"\r\n [max]=\"1600\"\r\n [step]=\"1\">\r\n <input matSliderThumb [value]=\"interiorLightIntensity\" (valueChange)=\"setInteriorLightIntensity($event)\">\r\n </mat-slider>\r\n <span class=\"mat-body-2\">{{ interiorLightIntensity }}</span>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_POST_PROCESSING_SETTINGS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showPostProcessingSettings\"\r\n (change)=\"toggle(configurationKey.ShowPostProcessingSettings, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_WALLS' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showWalls\"\r\n (change)=\"toggle(configurationKey.ShowWalls, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <b class=\"mat-body-2\">{{ 'SHOW_CEILING' | localize }}</b>\r\n <mat-slide-toggle\r\n min=\"0\"\r\n max=\"1\"\r\n [checked]=\"showCeiling\"\r\n (change)=\"toggle(configurationKey.ShowCeiling, $event.checked)\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button (click)=\"hideMaterials()\">{{ 'HIDE_MATERIALS' | localize }}</button>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button (click)=\"showConnectors()\">{{ 'SHOW_CONNECTORS' | localize }}</button>\r\n </div>\r\n <div class=\"panel-item\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <button\r\n mat-button\r\n (click)=\"showSettingsOptions = true\"\r\n fxLayout=\"row\"\r\n fxLayoutalign=\"center center\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">settings</mat-icon>\r\n {{ 'SHOW_SETTINGS_OPTIONS' | localize }}\r\n </button>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <b class=\"mat-body-2\">{{ 'APP_VERSION' | localize }}:</b>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n #versionField\r\n type=\"text\"\r\n readonly=\"true\"\r\n [value]=\"version\"\r\n (click)=\"selectVersionFieldContent()\"\r\n />\r\n <mat-icon matSuffix (click)=\"copyToClipboard()\">file_copy</mat-icon>\r\n </mat-form-field>\r\n </div>\r\n <h3 class=\"mat-subheading-2\">{{ 'CONNECTION' | localize }}</h3>\r\n <div class=\"panel-item\" fxLayout=\"column\">\r\n <b class=\"mat-body-2\">{{ 'iONE backend url' | localize }}:</b>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n #ioneBackendUrl\r\n type=\"text\"\r\n [value]=\"settingsService.settings?.url\"\r\n (keydown)=\"handleBackendUrlChange($event)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n}\r\n<div class=\"powered-by-wrapper\">\r\n <span>MyRoomPlans is powered by</span>\r\n <span class=\"powered-logo-wrapper\">\r\n <a href=\"https://www.colijn-it.nl\" target=\"_blank\" alt=\"Colijn IT\" class=\"colijn-it-logo\"><img\r\n src=\"assets/images/colijn-logo.webp\"/></a>\r\n <a href=\"https://ione360.com\" target=\"_blank\" alt=\"iONE360\" class=\"ione-360-logo\"><img\r\n src=\"assets/images/ione360-logo.webp\"/></a>\r\n </span>\r\n <span>Copyright Colijn IT 2021</span>\r\n</div>\r\n@if (showSettingsOptions) {\r\n <settings-options (onclose)=\"showSettingsOptions = false\"></settings-options>\r\n}\r\n", styles: [":host{overflow-y:auto;overflow-x:hidden}:host .powered-by-wrapper{margin-top:20px;font-size:12px}:host .powered-by-wrapper .powered-logo-wrapper{display:flex;align-items:center;justify-content:space-between}:host .powered-by-wrapper .colijn-it-logo{margin:0 5px}:host .powered-by-wrapper .colijn-it-logo img{width:100px}:host .powered-by-wrapper .ione-360-logo{margin:5px}:host .powered-by-wrapper .ione-360-logo img{width:134px}.panel-item{min-height:40px}.panel-item+h3{margin-top:16px;font-weight:600}mat-form-field{width:100%}mat-select{width:70px}::ng-deep .mat-drawer-content{overflow-y:auto;overflow-x:hidden}\n"], dependencies: [{ 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: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.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: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: SettingsOptionsComponent, selector: "settings-options", outputs: ["onclose"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42236
42274
  }
42237
42275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SettingsComponent, decorators: [{
42238
42276
  type: Component,
@@ -42459,7 +42497,7 @@ class CustomShapeCreatorComponent {
42459
42497
  }
42460
42498
  }
42461
42499
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomShapeCreatorComponent, deps: [{ token: HudService }, { token: SceneService }, { token: RoomService }, { token: ItemService }, { token: SceneEventService }, { token: MessageBusService }, { token: WallService }], target: i0.ɵɵFactoryTarget.Component }); }
42462
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CustomShapeCreatorComponent, isStandalone: false, selector: "rp-custom-shape-creator", inputs: { shape: "shape" }, ngImport: i0, template: "<section>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input matInput #nameInputRef\r\n type=\"text\"\r\n placeholder=\"{{'SHAPES_NAME' | localize}}\"\r\n [value]=\"name\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"setName(nameInputRef.value)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"nameInputRef.value = name\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"switcher\">\r\n <h2 class=\"mat-subtitle-2\">{{isFloorType ? ('FLOOR' | localize) : ('WALL' | localize)}}</h2>\r\n <mat-slide-toggle\r\n [checked]=\"isFloorType\"\r\n (change)=\"toggleItemType()\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <h3 class=\"mat-subtitle-1\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n <rp-dimension-input\r\n title=\"{{'HEIGHT' | localize}}\"\r\n [sourceValue]=\"height * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setHeight($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'WIDTH' | localize}}\"\r\n [sourceValue]=\"width * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setWidth($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'DEPTH' | localize}}\"\r\n [sourceValue]=\"depth * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setDepth($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'ELEVATION' | localize}}\"\r\n [sourceValue]=\"elevation * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setElevation($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n </div>\r\n\r\n <div>\r\n <h3 class=\"mat-subtitle-1\"> {{ 'TEXTURES' | localize}}</h3>\r\n <mat-form-field id=\"face-select-form\">\r\n <mat-label>{{\"SELECT_FACE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedFace\">\r\n <mat-option [value]=\"faceRef.All\">{{ 'ALL' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Top\">{{ 'TOP' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Bottom\">{{ 'BOTTOM' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Front\">{{ 'FRONT' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Back\">{{ 'BACK' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Left\">{{ 'LEFT' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Right\">{{ 'RIGHT' | localize }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <rp-appearance-section\r\n type=\"shape\"\r\n [hideTextureTab]=\"true\"\r\n [color]=\"skin[selectedFace].color\"\r\n [plainTexture]=\"skin[selectedFace].texture\"\r\n [textureWidth]=\"skin[selectedFace].width() * 100\"\r\n [textureHeight]=\"skin[selectedFace].height() * 100\"\r\n [photoOptions]=\"textureOptions.Tiles\"\r\n (setTexture)=\"setTexture($event)\"\r\n (setColor)=\"setColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n</section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}#face-select-form{width:100%}#create-button{color:#fff;background:#3760a1}::ng-deep .mat-mdc-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "directive", type: i3$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: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.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: i9.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: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
42500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CustomShapeCreatorComponent, isStandalone: false, selector: "rp-custom-shape-creator", inputs: { shape: "shape" }, ngImport: i0, template: "<section>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input matInput #nameInputRef\r\n type=\"text\"\r\n placeholder=\"{{'SHAPES_NAME' | localize}}\"\r\n [value]=\"name\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"setName(nameInputRef.value)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"nameInputRef.value = name\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"switcher\">\r\n <h2 class=\"mat-subtitle-2\">{{isFloorType ? ('FLOOR' | localize) : ('WALL' | localize)}}</h2>\r\n <mat-slide-toggle\r\n [checked]=\"isFloorType\"\r\n (change)=\"toggleItemType()\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <h3 class=\"mat-subtitle-1\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n <rp-dimension-input\r\n title=\"{{'HEIGHT' | localize}}\"\r\n [sourceValue]=\"height * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setHeight($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'WIDTH' | localize}}\"\r\n [sourceValue]=\"width * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setWidth($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'DEPTH' | localize}}\"\r\n [sourceValue]=\"depth * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setDepth($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'ELEVATION' | localize}}\"\r\n [sourceValue]=\"elevation * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setElevation($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n </div>\r\n\r\n <div>\r\n <h3 class=\"mat-subtitle-1\"> {{ 'TEXTURES' | localize}}</h3>\r\n <mat-form-field id=\"face-select-form\">\r\n <mat-label>{{\"SELECT_FACE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedFace\">\r\n <mat-option [value]=\"faceRef.All\">{{ 'ALL' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Top\">{{ 'TOP' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Bottom\">{{ 'BOTTOM' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Front\">{{ 'FRONT' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Back\">{{ 'BACK' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Left\">{{ 'LEFT' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Right\">{{ 'RIGHT' | localize }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <rp-appearance-section\r\n type=\"shape\"\r\n [hideTextureTab]=\"true\"\r\n [color]=\"skin[selectedFace].color\"\r\n [plainTexture]=\"skin[selectedFace].texture\"\r\n [textureWidth]=\"skin[selectedFace].width() * 100\"\r\n [textureHeight]=\"skin[selectedFace].height() * 100\"\r\n [photoOptions]=\"textureOptions.Tiles\"\r\n (setTexture)=\"setTexture($event)\"\r\n (setColor)=\"setColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n</section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}#face-select-form{width:100%}#create-button{color:#fff;background:#3760a1}::ng-deep .mat-mdc-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "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: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.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: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
42463
42501
  }
42464
42502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomShapeCreatorComponent, decorators: [{
42465
42503
  type: Component,
@@ -42636,7 +42674,7 @@ class CustomCylinderCreatorComponent {
42636
42674
  this._sceneService.needsRender = true;
42637
42675
  }
42638
42676
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomCylinderCreatorComponent, deps: [{ token: HudService }, { token: SceneService }, { token: ItemService }, { token: RoomService }, { token: SceneEventService }, { token: MessageBusService }, { token: WallService }], target: i0.ɵɵFactoryTarget.Component }); }
42639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CustomCylinderCreatorComponent, isStandalone: false, selector: "custom-cylinder-creator", inputs: { shape: "shape" }, ngImport: i0, template: "<section>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input matInput #nameInputRef\r\n type=\"text\"\r\n placeholder=\"{{'SHAPES_NAME' | localize}}\"\r\n [value]=\"name\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"setName(nameInputRef.value)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"nameInputRef.value = name\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"switcher\">\r\n <h2 class=\"mat-subtitle-2\">{{isFloorType ? ('FLOOR' | localize) : ('WALL' | localize)}}</h2>\r\n <mat-slide-toggle\r\n [checked]=\"isFloorType\"\r\n (change)=\"toggleItemType()\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <h3 class=\"mat-subtitle-1\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n <rp-dimension-input\r\n title=\"{{'RADIUS' | localize}}\"\r\n [sourceValue]=\"radius * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setRadius($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'HEIGHT' | localize}}\"\r\n [sourceValue]=\"height * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setHeight($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n @if (isFloorType) {\r\n <rp-dimension-input\r\n title=\"{{'ELEVATION' | localize}}\"\r\n [sourceValue]=\"elevation * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setElevation($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n }\r\n </div>\r\n\r\n <div>\r\n <h3 class=\"mat-subtitle-1\"> {{ 'TEXTURES' | localize}}</h3>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-label>{{\"SELECT_FACE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedFace\">\r\n <mat-option [value]=\"faceRef.All\">{{ 'ALL' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Top\">{{ 'TOP' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Bottom\">{{ 'BOTTOM' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Front\">{{ 'FRONT' | localize }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <rp-appearance-section\r\n [hideTextureTab]=\"true\"\r\n [color]=\"skin[selectedFace].color\"\r\n [plainTexture]=\"skin[selectedFace].texture\"\r\n [photoOptions]=\"textureOptions.Tiles\"\r\n [textureWidth]=\"skin[selectedFace].width() * 100\"\r\n [textureHeight]=\"skin[selectedFace].height() * 100\"\r\n (setTexture)=\"setTexture($event)\"\r\n (setColor)=\"setColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n </section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.face-select-form{width:100%}::ng-deep .mat-mdc-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "directive", type: i3$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: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.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: i9.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: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
42677
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CustomCylinderCreatorComponent, isStandalone: false, selector: "custom-cylinder-creator", inputs: { shape: "shape" }, ngImport: i0, template: "<section>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"auto center\">\r\n <mat-form-field fxFlex=\"grow\">\r\n <input matInput #nameInputRef\r\n type=\"text\"\r\n placeholder=\"{{'SHAPES_NAME' | localize}}\"\r\n [value]=\"name\"\r\n >\r\n </mat-form-field>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"setName(nameInputRef.value)\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">check</mat-icon>\r\n </button>\r\n <button mat-icon-button\r\n [disabled]=\"name === nameInputRef.value\"\r\n (click)=\"nameInputRef.value = name\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons size-16\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"switcher\">\r\n <h2 class=\"mat-subtitle-2\">{{isFloorType ? ('FLOOR' | localize) : ('WALL' | localize)}}</h2>\r\n <mat-slide-toggle\r\n [checked]=\"isFloorType\"\r\n (change)=\"toggleItemType()\"\r\n [labelPosition]=\"'before'\"\r\n >\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <h3 class=\"mat-subtitle-1\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n <rp-dimension-input\r\n title=\"{{'RADIUS' | localize}}\"\r\n [sourceValue]=\"radius * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setRadius($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n <rp-dimension-input\r\n title=\"{{'HEIGHT' | localize}}\"\r\n [sourceValue]=\"height * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setHeight($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n\r\n @if (isFloorType) {\r\n <rp-dimension-input\r\n title=\"{{'ELEVATION' | localize}}\"\r\n [sourceValue]=\"elevation * scaleFactor\"\r\n [minValue]=\"0\"\r\n (dimensionChanged)=\"setElevation($event / scaleFactor)\"\r\n >\r\n </rp-dimension-input>\r\n }\r\n </div>\r\n\r\n <div>\r\n <h3 class=\"mat-subtitle-1\"> {{ 'TEXTURES' | localize}}</h3>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-label>{{\"SELECT_FACE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedFace\">\r\n <mat-option [value]=\"faceRef.All\">{{ 'ALL' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Top\">{{ 'TOP' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Bottom\">{{ 'BOTTOM' | localize }}</mat-option>\r\n <mat-option [value]=\"faceRef.Front\">{{ 'FRONT' | localize }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <rp-appearance-section\r\n [hideTextureTab]=\"true\"\r\n [color]=\"skin[selectedFace].color\"\r\n [plainTexture]=\"skin[selectedFace].texture\"\r\n [photoOptions]=\"textureOptions.Tiles\"\r\n [textureWidth]=\"skin[selectedFace].width() * 100\"\r\n [textureHeight]=\"skin[selectedFace].height() * 100\"\r\n (setTexture)=\"setTexture($event)\"\r\n (setColor)=\"setColor($event)\"\r\n >\r\n </rp-appearance-section>\r\n </div>\r\n </section>\r\n", styles: [":host{overflow:hidden}:host section{overflow-y:auto;height:100%}.face-select-form{width:100%}::ng-deep .mat-mdc-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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: "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: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i3$2.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: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { kind: "component", type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
42640
42678
  }
42641
42679
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomCylinderCreatorComponent, decorators: [{
42642
42680
  type: Component,
@@ -44141,7 +44179,7 @@ class RoomPlannerComponent {
44141
44179
  }
44142
44180
  }
44143
44181
 
44144
- `, isInline: true, styles: [".with-scrollable-section{overflow:hidden;height:100%}.with-scrollable-section section{overflow-y:auto}.RoomPlanner{width:inherit;height:inherit;pointer-events:none}.RoomPlanner>*{pointer-events:all}.sidebar-toggles .mat-mdc-raised-button{width:110px;text-align:left}.logo-menu{position:absolute;top:20px;left:20px;z-index:2}.logo-menu-2nd{position:absolute;top:140px;left:84px}.logo-menu-4th{position:absolute;top:180px;left:84px}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.solid-background>canvas{fill:#fff;background:#fff}.toolbar__divider{border-bottom:2px solid rgba(199,195,195,.5411764706);width:70%;margin:5px 0}.toolbar__divider.context-menu{border-color:#c7c3c38a;width:100%}.show-inner-wall-measurement-button ::ng-deep .co-icon{transform:rotate(180deg)}.on-top{z-index:3}.rp-item-context-menu-wrap{color:#fff;background:#17253391;border-radius:5px;box-sizing:border-box;padding:10px;position:relative}.rp-item-context-menu-wrap .rp-item-context-menu-item{cursor:pointer;flex-direction:row;display:flex;padding:5px;border-radius:5px}.rp-item-context-menu-wrap .rp-item-context-menu-item span,.rp-item-context-menu-wrap .rp-item-context-menu-item label{display:flex;flex-direction:column;line-height:20px;font-size:12px;font-weight:lighter;vertical-align:middle}.rp-item-context-menu-wrap .rp-item-context-menu-item .label{width:150px}.rp-item-context-menu-wrap .rp-item-context-menu-item .icon{width:20px;margin-right:10px}.rp-item-context-menu-wrap .rp-item-context-menu-item .icon svg,.rp-item-context-menu-wrap .rp-item-context-menu-item .icon co-icon,.rp-item-context-menu-wrap .rp-item-context-menu-item .icon .mat-icon{height:15px;width:15px;font-size:18px}.rp-item-context-menu-wrap .rp-item-context-menu-item:hover{background:#dcdcdc80}.rp-item-context-menu-wrap .rp-item-context-menu-item-highlight{color:#da9803}.rp-item-context-menu-wrap .rp-item-context-menu-item-highlight svg{fill:#da9803}.rp-item-context-menu-wrap .conversion-button-selected .icon-selected{color:#009a6d}.rp-item-context-menu-wrap .rp-item-context-menu-header{border-bottom:2px solid rgba(199,195,195,.5411764706);margin-bottom:10px;padding-left:5px;padding-right:25px;max-width:160px;overflow:hidden}.rp-item-context-menu-wrap .rp-item-context-menu-header p{color:#da9803;font-size:13px;margin:0;padding:5px 0 10px}.rp-item-context-menu-wrap .rp-item-context-menu-close{position:absolute;right:7px;top:5px;z-index:2;cursor:pointer;width:15px;height:15px}.rp-item-context-menu-wrap .rp-item-context-menu-close .close-icon co-icon{height:15px;width:15px;font-size:18px}.rp-right-context-menu-wrap{color:#fff;background:#17253391;border-radius:5px 0 0 5px;box-sizing:border-box;padding:5px;position:relative}.rp-right-context-menu-wrap .rp-right-context-menu-item{cursor:pointer;flex-direction:row;display:flex;padding:10px;justify-content:center;border-bottom:2px solid rgba(199,195,195,.5411764706)}.rp-right-context-menu-wrap .rp-right-context-menu-item:last-child{border-bottom:none}.rp-right-context-menu-wrap .rp-right-context-menu-item span,.rp-right-context-menu-wrap .rp-right-context-menu-item label{display:flex;flex-direction:column;font-weight:lighter;vertical-align:middle}.rp-right-context-menu-wrap .rp-right-context-menu-item .icon{width:auto;margin-right:0}.rp-right-context-menu-wrap .rp-right-context-menu-item .icon svg,.rp-right-context-menu-wrap .rp-right-context-menu-item .icon co-icon,.rp-right-context-menu-wrap .rp-right-context-menu-item .icon .mat-icon{height:20px;width:20px;font-size:20px}.rp-right-context-menu-wrap .rp-right-context-menu-item:hover{background:#dcdcdc80}.rp-right-context-menu-wrap .rp-right-context-menu-item-highlight{color:#da9803}.rp-right-context-menu-wrap .rp-right-context-menu-item-highlight svg{fill:#da9803}.rp-right-context-menu-wrap .conversion-button-selected .icon-selected{color:#009a6d}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#da9803}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar:hover .mat-ripple-element{background-color:#da9803}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar{width:40px;height:20px;border-radius:15px}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar .mat-slide-toggle-thumb-container{width:17px;height:17px;top:2px;left:5px}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{height:16px;width:16px}::ng-deep mat-slider{height:24px}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-track-wrapper{overflow:visible}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-track-fill{background-color:#da9803}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-thumb-container .mat-slider-thumb,::ng-deep mat-slider .mat-slider-wrapper .mat-slider-thumb-container .mat-slider-thumb-label{background-color:#da9803}::ng-deep mat-list .mat-mdc-list-item{border-bottom:1px solid #9bb0d0}.mrp-save-grouping{pointer-events:all;position:absolute;bottom:10%;left:50%}\n"], dependencies: [{ kind: "component", type: CategoryLibraryComponent, selector: "rp-category-library", inputs: ["categories"], outputs: ["categoryClick"] }, { kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ContextMenuComponent, selector: "rp-context-menu", inputs: ["openMouseEvent"] }, { kind: "component", type: ItemContextMenuComponent, selector: "rp-item-context-menu", inputs: ["item"], outputs: ["deletePressed"] }, { kind: "component", type: RightContextMenuComponent, selector: "rp-right-context-menu", inputs: ["item"], outputs: ["deletePressed"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ToolbarIconComponent, selector: "rp-toolbar-icon", inputs: ["matIcon", "svgIcon", "tooltip", "disabled", "showLabel"], outputs: ["onClick"] }, { kind: "component", type: ZoomControlsComponent, selector: "rp-zoom-controls", inputs: ["visible"], outputs: ["onZoomIn", "onZoomReset", "onZoomOut"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i7$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ButtonElevationComponent, selector: "button-elevation", inputs: ["item"] }, { kind: "component", type: ObjectLibraryComponent, selector: "rp-object-library", inputs: ["objects"], outputs: ["setDragged", "releaseDragged", "onObjectClick"] }, { kind: "component", type: FloorplannerComponent, selector: "floor-planner", outputs: ["selectedWallChange"] }, { kind: "component", type: SelectedFloorComponent, selector: "rp-selected-floor", inputs: ["floor", "texturePlane", "color"], outputs: ["setTexture", "setColor"] }, { kind: "component", type: SelectedObjectComponent, selector: "rp-selected-object", inputs: ["object"], outputs: ["onSelectedObjectChange"] }, { kind: "component", type: SelectedThreedObjectComponent, selector: "rp-selected-threed-object", inputs: ["object", "showCopy", "showDelete", "showLock"], outputs: ["onSelectedObjectChange"] }, { kind: "component", type: SelectedWallComponent, selector: "rp-selected-wall", inputs: ["wall", "texturePlane", "color", "minWallHeight", "maxWallHeight", "maxWallThickness", "maxWallLength", "minWallLength"], outputs: ["remove", "setLength", "setHeight", "setThickness", "selectCorner", "setTexture", "setColor"] }, { kind: "component", type: SettingsComponent, selector: "rp-settings", inputs: ["minWallHeight", "placeCameraDisabled"], outputs: ["onWallsHeightUpdate"] }, { kind: "component", type: CustomShapeCreatorComponent, selector: "rp-custom-shape-creator", inputs: ["shape"] }, { kind: "component", type: CustomCylinderCreatorComponent, selector: "custom-cylinder-creator", inputs: ["shape"] }, { kind: "component", type: SelectedObjectScaleComponent, selector: "rp-selected-object-scale", inputs: ["object"], outputs: ["objectChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
44182
+ `, isInline: true, styles: [".with-scrollable-section{overflow:hidden;height:100%}.with-scrollable-section section{overflow-y:auto}.RoomPlanner{width:inherit;height:inherit;pointer-events:none}.RoomPlanner>*{pointer-events:all}.sidebar-toggles .mat-mdc-raised-button{width:110px;text-align:left}.logo-menu{position:absolute;top:20px;left:20px;z-index:2}.logo-menu-2nd{position:absolute;top:140px;left:84px}.logo-menu-4th{position:absolute;top:180px;left:84px}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.solid-background>canvas{fill:#fff;background:#fff}.toolbar__divider{border-bottom:2px solid rgba(199,195,195,.5411764706);width:70%;margin:5px 0}.toolbar__divider.context-menu{border-color:#c7c3c38a;width:100%}.show-inner-wall-measurement-button ::ng-deep .co-icon{transform:rotate(180deg)}.on-top{z-index:3}.rp-item-context-menu-wrap{color:#fff;background:#17253391;border-radius:5px;box-sizing:border-box;padding:10px;position:relative}.rp-item-context-menu-wrap .rp-item-context-menu-item{cursor:pointer;flex-direction:row;display:flex;padding:5px;border-radius:5px}.rp-item-context-menu-wrap .rp-item-context-menu-item span,.rp-item-context-menu-wrap .rp-item-context-menu-item label{display:flex;flex-direction:column;line-height:20px;font-size:12px;font-weight:lighter;vertical-align:middle}.rp-item-context-menu-wrap .rp-item-context-menu-item .label{width:150px}.rp-item-context-menu-wrap .rp-item-context-menu-item .icon{width:20px;margin-right:10px}.rp-item-context-menu-wrap .rp-item-context-menu-item .icon svg,.rp-item-context-menu-wrap .rp-item-context-menu-item .icon co-icon,.rp-item-context-menu-wrap .rp-item-context-menu-item .icon .mat-icon{height:15px;width:15px;font-size:18px}.rp-item-context-menu-wrap .rp-item-context-menu-item:hover{background:#dcdcdc80}.rp-item-context-menu-wrap .rp-item-context-menu-item-highlight{color:#da9803}.rp-item-context-menu-wrap .rp-item-context-menu-item-highlight svg{fill:#da9803}.rp-item-context-menu-wrap .conversion-button-selected .icon-selected{color:#009a6d}.rp-item-context-menu-wrap .rp-item-context-menu-header{border-bottom:2px solid rgba(199,195,195,.5411764706);margin-bottom:10px;padding-left:5px;padding-right:25px;max-width:160px;overflow:hidden}.rp-item-context-menu-wrap .rp-item-context-menu-header p{color:#da9803;font-size:13px;margin:0;padding:5px 0 10px}.rp-item-context-menu-wrap .rp-item-context-menu-close{position:absolute;right:7px;top:5px;z-index:2;cursor:pointer;width:15px;height:15px}.rp-item-context-menu-wrap .rp-item-context-menu-close .close-icon co-icon{height:15px;width:15px;font-size:18px}.rp-right-context-menu-wrap{color:#fff;background:#17253391;border-radius:5px 0 0 5px;box-sizing:border-box;padding:5px;position:relative}.rp-right-context-menu-wrap .rp-right-context-menu-item{cursor:pointer;flex-direction:row;display:flex;padding:10px;justify-content:center;border-bottom:2px solid rgba(199,195,195,.5411764706)}.rp-right-context-menu-wrap .rp-right-context-menu-item:last-child{border-bottom:none}.rp-right-context-menu-wrap .rp-right-context-menu-item span,.rp-right-context-menu-wrap .rp-right-context-menu-item label{display:flex;flex-direction:column;font-weight:lighter;vertical-align:middle}.rp-right-context-menu-wrap .rp-right-context-menu-item .icon{width:auto;margin-right:0}.rp-right-context-menu-wrap .rp-right-context-menu-item .icon svg,.rp-right-context-menu-wrap .rp-right-context-menu-item .icon co-icon,.rp-right-context-menu-wrap .rp-right-context-menu-item .icon .mat-icon{height:20px;width:20px;font-size:20px}.rp-right-context-menu-wrap .rp-right-context-menu-item:hover{background:#dcdcdc80}.rp-right-context-menu-wrap .rp-right-context-menu-item-highlight{color:#da9803}.rp-right-context-menu-wrap .rp-right-context-menu-item-highlight svg{fill:#da9803}.rp-right-context-menu-wrap .conversion-button-selected .icon-selected{color:#009a6d}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#da9803}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff}::ng-deep .mat-mdc-slide-toggle.mat-checked .mat-slide-toggle-bar:hover .mat-ripple-element{background-color:#da9803}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar{width:40px;height:20px;border-radius:15px}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar .mat-slide-toggle-thumb-container{width:17px;height:17px;top:2px;left:5px}::ng-deep .mat-mdc-slide-toggle .mat-slide-toggle-bar .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{height:16px;width:16px}::ng-deep mat-slider{height:24px}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-track-wrapper{overflow:visible}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-track-fill{background-color:#da9803}::ng-deep mat-slider .mat-slider-wrapper .mat-slider-thumb-container .mat-slider-thumb,::ng-deep mat-slider .mat-slider-wrapper .mat-slider-thumb-container .mat-slider-thumb-label{background-color:#da9803}::ng-deep mat-list .mat-mdc-list-item{border-bottom:1px solid #9bb0d0}.mrp-save-grouping{pointer-events:all;position:absolute;bottom:10%;left:50%}\n"], dependencies: [{ kind: "component", type: CategoryLibraryComponent, selector: "rp-category-library", inputs: ["categories"], outputs: ["categoryClick"] }, { kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ContextMenuComponent, selector: "rp-context-menu", inputs: ["openMouseEvent"] }, { kind: "component", type: ItemContextMenuComponent, selector: "rp-item-context-menu", inputs: ["item"], outputs: ["deletePressed"] }, { kind: "component", type: RightContextMenuComponent, selector: "rp-right-context-menu", inputs: ["item"], outputs: ["deletePressed"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ToolbarIconComponent, selector: "rp-toolbar-icon", inputs: ["matIcon", "svgIcon", "tooltip", "disabled", "showLabel"], outputs: ["onClick"] }, { kind: "component", type: ZoomControlsComponent, selector: "rp-zoom-controls", inputs: ["visible"], outputs: ["onZoomIn", "onZoomReset", "onZoomOut"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i7$1.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ButtonElevationComponent, selector: "button-elevation", inputs: ["item"] }, { kind: "component", type: ObjectLibraryComponent, selector: "rp-object-library", inputs: ["objects"], outputs: ["setDragged", "releaseDragged", "onObjectClick"] }, { kind: "component", type: FloorplannerComponent, selector: "floor-planner", outputs: ["selectedWallChange"] }, { kind: "component", type: SelectedFloorComponent, selector: "rp-selected-floor", inputs: ["floor", "texturePlane", "color"], outputs: ["setTexture", "setColor"] }, { kind: "component", type: SelectedObjectComponent, selector: "rp-selected-object", inputs: ["object"], outputs: ["onSelectedObjectChange"] }, { kind: "component", type: SelectedThreedObjectComponent, selector: "rp-selected-threed-object", inputs: ["object", "showCopy", "showDelete", "showLock"], outputs: ["onSelectedObjectChange"] }, { kind: "component", type: SelectedWallComponent, selector: "rp-selected-wall", inputs: ["wall", "texturePlane", "color", "minWallHeight", "maxWallHeight", "maxWallThickness", "maxWallLength", "minWallLength"], outputs: ["remove", "setLength", "setHeight", "setThickness", "selectCorner", "setTexture", "setColor"] }, { kind: "component", type: SettingsComponent, selector: "rp-settings", inputs: ["minWallHeight", "placeCameraDisabled"], outputs: ["onWallsHeightUpdate"] }, { kind: "component", type: CustomShapeCreatorComponent, selector: "rp-custom-shape-creator", inputs: ["shape"] }, { kind: "component", type: CustomCylinderCreatorComponent, selector: "custom-cylinder-creator", inputs: ["shape"] }, { kind: "component", type: SelectedObjectScaleComponent, selector: "rp-selected-object-scale", inputs: ["object"], outputs: ["objectChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
44145
44183
  }
44146
44184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RoomPlannerComponent, decorators: [{
44147
44185
  type: Component,
@@ -45317,7 +45355,7 @@ class ElementToolbarComponent {
45317
45355
  this.showEditMenu = !this.showEditMenu;
45318
45356
  }
45319
45357
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ElementToolbarComponent, deps: [{ token: HomedecoratorSettingsService }, { token: HomedecoratorIconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
45320
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ElementToolbarComponent, isStandalone: false, selector: "rp-element-toolbar", inputs: { editMenu: "editMenu", showPointer: "showPointer", showSwap: "showSwap" }, outputs: { deleteClicked: "deleteClicked", swapClicked: "swapClicked", animationClicked: "animationClicked" }, host: { properties: { "class.rp-element-toolbar": "this.hostClass", "class.custom-menu": "this.instantMenu" } }, viewQueries: [{ propertyName: "elementPointer", first: true, predicate: ["elementPointer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"toolbar-wrapper\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <span class=\"toolbar-label\" [textContent]=\"'SELECTION_OPTIONS' | localize\"></span>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu && editMenu && editMenu.length > 0) {\r\n <div class=\"toolbar-button\" (click)=\"handleEditClick()\">\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.PencilLight)\"></co-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"toolbar-button\" (click)=\"deleteClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'DELETE' | localize\"></span>\r\n </div>\r\n }\r\n\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (showSwap) {\r\n <div class=\"toolbar-button\" (click)=\"swapClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'REPLACE' | localize\"></span>\r\n </div>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (settingsService.settings.options.animationButton) {\r\n <div class=\"toolbar-button\" (click)=\"animationClicked.emit()\">\r\n <!--div class=\"instant-edit-button\" *ngIf=\"settingsService.settings.options.instantEditMenu\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'ANIMATE' | localize\"></span>\r\n </div-->\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n\r\n</div>\r\n@if (showEditMenu || settingsService.settings.options.instantEditMenu) {\r\n <div class=\"edit-menu-wrapper\" @showHideEditMenu>\r\n @for (item of editMenu; track item) {\r\n <div class=\"edit-menu\" (click)=\"item.handler()\">\r\n <span [textContent]=\"item.caption\"></span>\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">chevron_right</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{position:absolute;display:block;height:50px;top:64px;left:50%;width:150px;transform:translate(-50%)}:host.custom-menu{top:90px;left:80px;height:auto;transform:translate(0)}:host.custom-menu .toolbar-wrapper{column-gap:10px}:host.custom-menu .toolbar-button{cursor:pointer;display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button{display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon{margin-right:7px;border:none;width:16px;height:16px;border-radius:10px}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g polygon{fill:#000}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g path{fill:#000}:host.custom-menu .toolbar-button button{box-shadow:none;border:1px solid rgba(0,0,0,.1);height:30px;width:30px}:host.custom-menu .toolbar-button button .mat-icon{height:30px;width:30px}:host.custom-menu .toolbar-label{font-size:12px;font-weight:700;margin-right:22px}:host.custom-menu .edit-menu-wrapper{left:0;transform:translate(0)}@media screen and (max-width:768px){:host.custom-menu{top:18px;left:5%}}.toolbar-wrapper{display:flex;align-items:center;gap:2px}.toolbar-wrapper button:not(:last-child){margin-right:5px}:host ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper{padding:0;display:flex;line-height:0px;align-items:center;justify-content:center}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent,:host ::ng-deep .mat-mdc-raised-button.mat-accent,:host ::ng-deep .mat-mdc-fab.mat-accent,:host ::ng-deep .mat-mdc-mini-fab.mat-accent{background-color:#17253391;width:36px;height:36px;border-radius:4px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon{width:16px;height:16px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon svg{fill:#fff}:host ::ng-deep .mat.mat-mdc-mini-fab{margin-right:200px}:host ::ng-deep .mat-icon{height:40px;width:40px}.element-pointer{pointer-events:none;position:absolute;width:0px;border-left:2px dashed #2c67ff;transform-origin:top center;top:45px;left:50%;margin-left:20px}.edit-menu-wrapper{position:absolute;margin-top:10px;min-width:175px;left:25px;transform:translate(-50%);overflow:hidden}.edit-menu-wrapper .edit-menu:not(:last-child){margin-bottom:5px}.edit-menu{font-size:12px;background:#fff;color:#41403d;height:30px;align-items:center;padding:5px;cursor:pointer;white-space:nowrap;display:flex;justify-content:space-between}.edit-menu span{margin-right:50px}.edit-menu mat-icon{width:20px;height:20px}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
45358
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ElementToolbarComponent, isStandalone: false, selector: "rp-element-toolbar", inputs: { editMenu: "editMenu", showPointer: "showPointer", showSwap: "showSwap" }, outputs: { deleteClicked: "deleteClicked", swapClicked: "swapClicked", animationClicked: "animationClicked" }, host: { properties: { "class.rp-element-toolbar": "this.hostClass", "class.custom-menu": "this.instantMenu" } }, viewQueries: [{ propertyName: "elementPointer", first: true, predicate: ["elementPointer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"toolbar-wrapper\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <span class=\"toolbar-label\" [textContent]=\"'SELECTION_OPTIONS' | localize\"></span>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu && editMenu && editMenu.length > 0) {\r\n <div class=\"toolbar-button\" (click)=\"handleEditClick()\">\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.PencilLight)\"></co-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"toolbar-button\" (click)=\"deleteClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'DELETE' | localize\"></span>\r\n </div>\r\n }\r\n\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (showSwap) {\r\n <div class=\"toolbar-button\" (click)=\"swapClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'REPLACE' | localize\"></span>\r\n </div>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (settingsService.settings.options.animationButton) {\r\n <div class=\"toolbar-button\" (click)=\"animationClicked.emit()\">\r\n <!--div class=\"instant-edit-button\" *ngIf=\"settingsService.settings.options.instantEditMenu\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'ANIMATE' | localize\"></span>\r\n </div-->\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n\r\n</div>\r\n@if (showEditMenu || settingsService.settings.options.instantEditMenu) {\r\n <div class=\"edit-menu-wrapper\" @showHideEditMenu>\r\n @for (item of editMenu; track item) {\r\n <div class=\"edit-menu\" (click)=\"item.handler()\">\r\n <span [textContent]=\"item.caption\"></span>\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">chevron_right</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{position:absolute;display:block;height:50px;top:64px;left:50%;width:150px;transform:translate(-50%)}:host.custom-menu{top:90px;left:80px;height:auto;transform:translate(0)}:host.custom-menu .toolbar-wrapper{column-gap:10px}:host.custom-menu .toolbar-button{cursor:pointer;display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button{display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon{margin-right:7px;border:none;width:16px;height:16px;border-radius:10px}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g polygon{fill:#000}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g path{fill:#000}:host.custom-menu .toolbar-button button{box-shadow:none;border:1px solid rgba(0,0,0,.1);height:30px;width:30px}:host.custom-menu .toolbar-button button .mat-icon{height:30px;width:30px}:host.custom-menu .toolbar-label{font-size:12px;font-weight:700;margin-right:22px}:host.custom-menu .edit-menu-wrapper{left:0;transform:translate(0)}@media screen and (max-width: 768px){:host.custom-menu{top:18px;left:5%}}.toolbar-wrapper{display:flex;align-items:center;gap:2px}.toolbar-wrapper button:not(:last-child){margin-right:5px}:host ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper{padding:0;display:flex;line-height:0px;align-items:center;justify-content:center}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent,:host ::ng-deep .mat-mdc-raised-button.mat-accent,:host ::ng-deep .mat-mdc-fab.mat-accent,:host ::ng-deep .mat-mdc-mini-fab.mat-accent{background-color:#17253391;width:36px;height:36px;border-radius:4px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon{width:16px;height:16px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon svg{fill:#fff}:host ::ng-deep .mat.mat-mdc-mini-fab{margin-right:200px}:host ::ng-deep .mat-icon{height:40px;width:40px}.element-pointer{pointer-events:none;position:absolute;width:0px;border-left:2px dashed #2c67ff;transform-origin:top center;top:45px;left:50%;margin-left:20px}.edit-menu-wrapper{position:absolute;margin-top:10px;min-width:175px;left:25px;transform:translate(-50%);overflow:hidden}.edit-menu-wrapper .edit-menu:not(:last-child){margin-bottom:5px}.edit-menu{font-size:12px;background:#fff;color:#41403d;height:30px;align-items:center;padding:5px;cursor:pointer;white-space:nowrap;display:flex;justify-content:space-between}.edit-menu span{margin-right:50px}.edit-menu mat-icon{width:20px;height:20px}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
45321
45359
  trigger('showHideEditMenu', [
45322
45360
  state('void', style({ 'height': '0', opacity: 0 })),
45323
45361
  state('*', style({ 'height': '*', opacity: 1 })),
@@ -45333,7 +45371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
45333
45371
  state('*', style({ 'height': '*', opacity: 1 })),
45334
45372
  transition('void <=> *', animate(200))
45335
45373
  ])
45336
- ], standalone: false, template: "<div class=\"toolbar-wrapper\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <span class=\"toolbar-label\" [textContent]=\"'SELECTION_OPTIONS' | localize\"></span>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu && editMenu && editMenu.length > 0) {\r\n <div class=\"toolbar-button\" (click)=\"handleEditClick()\">\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.PencilLight)\"></co-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"toolbar-button\" (click)=\"deleteClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'DELETE' | localize\"></span>\r\n </div>\r\n }\r\n\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (showSwap) {\r\n <div class=\"toolbar-button\" (click)=\"swapClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'REPLACE' | localize\"></span>\r\n </div>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (settingsService.settings.options.animationButton) {\r\n <div class=\"toolbar-button\" (click)=\"animationClicked.emit()\">\r\n <!--div class=\"instant-edit-button\" *ngIf=\"settingsService.settings.options.instantEditMenu\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'ANIMATE' | localize\"></span>\r\n </div-->\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n\r\n</div>\r\n@if (showEditMenu || settingsService.settings.options.instantEditMenu) {\r\n <div class=\"edit-menu-wrapper\" @showHideEditMenu>\r\n @for (item of editMenu; track item) {\r\n <div class=\"edit-menu\" (click)=\"item.handler()\">\r\n <span [textContent]=\"item.caption\"></span>\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">chevron_right</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{position:absolute;display:block;height:50px;top:64px;left:50%;width:150px;transform:translate(-50%)}:host.custom-menu{top:90px;left:80px;height:auto;transform:translate(0)}:host.custom-menu .toolbar-wrapper{column-gap:10px}:host.custom-menu .toolbar-button{cursor:pointer;display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button{display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon{margin-right:7px;border:none;width:16px;height:16px;border-radius:10px}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g polygon{fill:#000}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g path{fill:#000}:host.custom-menu .toolbar-button button{box-shadow:none;border:1px solid rgba(0,0,0,.1);height:30px;width:30px}:host.custom-menu .toolbar-button button .mat-icon{height:30px;width:30px}:host.custom-menu .toolbar-label{font-size:12px;font-weight:700;margin-right:22px}:host.custom-menu .edit-menu-wrapper{left:0;transform:translate(0)}@media screen and (max-width:768px){:host.custom-menu{top:18px;left:5%}}.toolbar-wrapper{display:flex;align-items:center;gap:2px}.toolbar-wrapper button:not(:last-child){margin-right:5px}:host ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper{padding:0;display:flex;line-height:0px;align-items:center;justify-content:center}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent,:host ::ng-deep .mat-mdc-raised-button.mat-accent,:host ::ng-deep .mat-mdc-fab.mat-accent,:host ::ng-deep .mat-mdc-mini-fab.mat-accent{background-color:#17253391;width:36px;height:36px;border-radius:4px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon{width:16px;height:16px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon svg{fill:#fff}:host ::ng-deep .mat.mat-mdc-mini-fab{margin-right:200px}:host ::ng-deep .mat-icon{height:40px;width:40px}.element-pointer{pointer-events:none;position:absolute;width:0px;border-left:2px dashed #2c67ff;transform-origin:top center;top:45px;left:50%;margin-left:20px}.edit-menu-wrapper{position:absolute;margin-top:10px;min-width:175px;left:25px;transform:translate(-50%);overflow:hidden}.edit-menu-wrapper .edit-menu:not(:last-child){margin-bottom:5px}.edit-menu{font-size:12px;background:#fff;color:#41403d;height:30px;align-items:center;padding:5px;cursor:pointer;white-space:nowrap;display:flex;justify-content:space-between}.edit-menu span{margin-right:50px}.edit-menu mat-icon{width:20px;height:20px}\n"] }]
45374
+ ], standalone: false, template: "<div class=\"toolbar-wrapper\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <span class=\"toolbar-label\" [textContent]=\"'SELECTION_OPTIONS' | localize\"></span>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu && editMenu && editMenu.length > 0) {\r\n <div class=\"toolbar-button\" (click)=\"handleEditClick()\">\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.PencilLight)\"></co-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"toolbar-button\" (click)=\"deleteClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'DELETE' | localize\"></span>\r\n </div>\r\n }\r\n\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.TrashCanLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (showSwap) {\r\n <div class=\"toolbar-button\" (click)=\"swapClicked.emit()\">\r\n @if (settingsService.settings.options.instantEditMenu) {\r\n <div class=\"instant-edit-button\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'REPLACE' | localize\"></span>\r\n </div>\r\n }\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.RotateLight)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (settingsService.settings.options.animationButton) {\r\n <div class=\"toolbar-button\" (click)=\"animationClicked.emit()\">\r\n <!--div class=\"instant-edit-button\" *ngIf=\"settingsService.settings.options.instantEditMenu\">\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n <span class=\"toolbar-label\" [textContent]=\"'ANIMATE' | localize\"></span>\r\n </div-->\r\n @if (!settingsService.settings.options.instantEditMenu) {\r\n <button mat-mini-fab>\r\n <co-icon class=\"button-icon\" [iconData]=\"iconCache.getIcon(icon.Check)\"></co-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n\r\n</div>\r\n@if (showEditMenu || settingsService.settings.options.instantEditMenu) {\r\n <div class=\"edit-menu-wrapper\" @showHideEditMenu>\r\n @for (item of editMenu; track item) {\r\n <div class=\"edit-menu\" (click)=\"item.handler()\">\r\n <span [textContent]=\"item.caption\"></span>\r\n <mat-icon class=\"homedecorator-material-icons\" aria-hidden=\"true\">chevron_right</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{position:absolute;display:block;height:50px;top:64px;left:50%;width:150px;transform:translate(-50%)}:host.custom-menu{top:90px;left:80px;height:auto;transform:translate(0)}:host.custom-menu .toolbar-wrapper{column-gap:10px}:host.custom-menu .toolbar-button{cursor:pointer;display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button{display:flex;align-items:center}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon{margin-right:7px;border:none;width:16px;height:16px;border-radius:10px}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g polygon{fill:#000}:host.custom-menu .toolbar-button .instant-edit-button ::ng-deep co-icon svg g path{fill:#000}:host.custom-menu .toolbar-button button{box-shadow:none;border:1px solid rgba(0,0,0,.1);height:30px;width:30px}:host.custom-menu .toolbar-button button .mat-icon{height:30px;width:30px}:host.custom-menu .toolbar-label{font-size:12px;font-weight:700;margin-right:22px}:host.custom-menu .edit-menu-wrapper{left:0;transform:translate(0)}@media screen and (max-width: 768px){:host.custom-menu{top:18px;left:5%}}.toolbar-wrapper{display:flex;align-items:center;gap:2px}.toolbar-wrapper button:not(:last-child){margin-right:5px}:host ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper{padding:0;display:flex;line-height:0px;align-items:center;justify-content:center}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent,:host ::ng-deep .mat-mdc-raised-button.mat-accent,:host ::ng-deep .mat-mdc-fab.mat-accent,:host ::ng-deep .mat-mdc-mini-fab.mat-accent{background-color:#17253391;width:36px;height:36px;border-radius:4px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon{width:16px;height:16px}:host ::ng-deep .mat-mdc-unelevated-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-raised-button.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-fab.mat-accent co-icon svg,:host ::ng-deep .mat-mdc-mini-fab.mat-accent co-icon svg{fill:#fff}:host ::ng-deep .mat.mat-mdc-mini-fab{margin-right:200px}:host ::ng-deep .mat-icon{height:40px;width:40px}.element-pointer{pointer-events:none;position:absolute;width:0px;border-left:2px dashed #2c67ff;transform-origin:top center;top:45px;left:50%;margin-left:20px}.edit-menu-wrapper{position:absolute;margin-top:10px;min-width:175px;left:25px;transform:translate(-50%);overflow:hidden}.edit-menu-wrapper .edit-menu:not(:last-child){margin-bottom:5px}.edit-menu{font-size:12px;background:#fff;color:#41403d;height:30px;align-items:center;padding:5px;cursor:pointer;white-space:nowrap;display:flex;justify-content:space-between}.edit-menu span{margin-right:50px}.edit-menu mat-icon{width:20px;height:20px}\n"] }]
45337
45375
  }], ctorParameters: () => [{ type: HomedecoratorSettingsService }, { type: HomedecoratorIconCacheService }], propDecorators: { elementPointer: [{
45338
45376
  type: ViewChild,
45339
45377
  args: ['elementPointer', { read: ElementRef, static: true }]
@@ -45854,7 +45892,7 @@ class ElementSliderComponent {
45854
45892
  return this._rotationService.sliderValue = event.value;
45855
45893
  }
45856
45894
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ElementSliderComponent, deps: [{ token: RotationService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
45857
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ElementSliderComponent, isStandalone: false, selector: "rp-element-slider", ngImport: i0, template: "@if (settingsService.settings.options.cameraPositionFixedAndScrollbar) {\r\n <div class=\"slidecontainer\">\r\n <mat-slider class=\"slider\" min=\"-180\" max=\"180\" [(ngModel)]=\"sliderValue\" [step]=\"step\" (input)=\"getSliderValue($event)\"></mat-slider>\r\n </div>\r\n}\r\n", styles: [".slidecontainer{width:40%;position:absolute;left:30%;top:85%;z-index:99}.slider{appearance:none;width:100%;height:25px;background:#d3d3d3;outline:none;opacity:.7;transition:opacity .2s;border-radius:25px}.slider:hover{opacity:1}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:25px;height:25px;background:#0094ff;cursor:pointer;border-radius:25px}::ng-deep .mat-mdc-slider.mat-slider-horizontal .mat-slider-wrapper{top:12px}::ng-deep .mat-mdc-slider.mat-slider-horizontal .mat-slider-track-wrapper{height:0;border-radius:0}::ng-deep .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{background:#0094ff}\n"], dependencies: [{ 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: i4$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }] }); }
45895
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ElementSliderComponent, isStandalone: false, selector: "rp-element-slider", ngImport: i0, template: "@if (settingsService.settings.options.cameraPositionFixedAndScrollbar) {\r\n <div class=\"slidecontainer\">\r\n <mat-slider class=\"slider\" min=\"-180\" max=\"180\" [(ngModel)]=\"sliderValue\" [step]=\"step\" (input)=\"getSliderValue($event)\"></mat-slider>\r\n </div>\r\n}\r\n", styles: [".slidecontainer{width:40%;position:absolute;left:30%;top:85%;z-index:99}.slider{appearance:none;width:100%;height:25px;background:#d3d3d3;outline:none;opacity:.7;transition:opacity .2s;border-radius:25px}.slider:hover{opacity:1}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:25px;height:25px;background:#0094ff;cursor:pointer;border-radius:25px}::ng-deep .mat-mdc-slider.mat-slider-horizontal .mat-slider-wrapper{top:12px}::ng-deep .mat-mdc-slider.mat-slider-horizontal .mat-slider-track-wrapper{height:0;border-radius:0}::ng-deep .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{background:#0094ff}\n"], dependencies: [{ 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: i3$3.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }] }); }
45858
45896
  }
45859
45897
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ElementSliderComponent, decorators: [{
45860
45898
  type: Component,
@@ -45871,7 +45909,7 @@ class ThreedselectorComponent {
45871
45909
  get loadConfigurator() {
45872
45910
  return this._loadConfigurator;
45873
45911
  }
45874
- constructor(screenSizeService, _dialog, _appService, _iOne, _messageBus, _loadFurnitureService, _buildFurnitureService, _toastService, _messageService, _sceneService, _dialogService, _cameraService, _presetsService, _itemService, _settingsService, _appEventService, _bluePrintService, _wallService, _floorService, _iconCacheService, _googleTagManager, _appStateService, _progressService, _resizeService, _connectorAdapterService, _lightPresetService, _variationService, _configuringService) {
45912
+ constructor(screenSizeService, _dialog, _appService, _iOne, _messageBus, _loadFurnitureService, _buildFurnitureService, _toastService, _messageService, _sceneService, _dialogService, _cameraService, _presetsService, _itemService, _settingsService, _appEventService, _bluePrintService, _wallService, _floorService, _iconCacheService, _googleTagManager, _appStateService, _progressService, _resizeService, _connectorAdapterService, _lightPresetService, _variationService, _configuringService, _configuratorEventService, _changeDetector) {
45875
45913
  this.screenSizeService = screenSizeService;
45876
45914
  this._dialog = _dialog;
45877
45915
  this._appService = _appService;
@@ -45900,6 +45938,8 @@ class ThreedselectorComponent {
45900
45938
  this._lightPresetService = _lightPresetService;
45901
45939
  this._variationService = _variationService;
45902
45940
  this._configuringService = _configuringService;
45941
+ this._configuratorEventService = _configuratorEventService;
45942
+ this._changeDetector = _changeDetector;
45903
45943
  this.iconName = IconName;
45904
45944
  this.customizeButtonClicked = new EventEmitter();
45905
45945
  this.selections = [];
@@ -45924,6 +45964,7 @@ class ThreedselectorComponent {
45924
45964
  this.showProgressText = true; // Show/Hide progress text
45925
45965
  this.showLoaderBar = false;
45926
45966
  this.showFullConfiguration = false;
45967
+ this.firstBuild = false;
45927
45968
  this._loadConfigurator = false;
45928
45969
  this._skuAlreadySet = false;
45929
45970
  this._itemsFromScratch = [];
@@ -45936,7 +45977,9 @@ class ThreedselectorComponent {
45936
45977
  this._presetsService.register(this);
45937
45978
  }
45938
45979
  ngOnInit() {
45939
- this._subs.push(this._appEventService.answerCountReceived.subscribe((answerCount) => this._handleAnswerCountReceived(answerCount)), this._messageBus.subscribe(MessageType.LoadIOneFurnitureIntoSceneBySKU, ({ sku, settings, position }) => this._handleLoadIOneFurnitureIntoSceneBySKU(sku, settings, position)), this._messageBus.subscribe(MessageType.CopyIOneFurnitureIntoSceneBySKU, (original) => this._handleCopyIOneFurnitureIntoSceneBySKU(original)), this._buildFurnitureService.currentActiveService.configureModeChanged.subscribe(configuringModeChange => this._handleConfigureModeChange(configuringModeChange)), this._buildFurnitureService.currentActiveService.toggleSelectedElement.subscribe((element) => this._selectedElementToggle(element)), this._buildFurnitureService.currentActiveService.buildFinished.subscribe((result) => this._handleBuildFinished(result)), this._buildFurnitureService.currentActiveService.answerSelected.subscribe((result) => this._answerSelected(result)), this._sceneService.onAfterRender.subscribe(() => this._handleRender()),
45980
+ this._subs.push(this._appEventService.answerCountReceived.subscribe((answerCount) => this._handleAnswerCountReceived(answerCount)), this._messageBus.subscribe(MessageType.LoadIOneFurnitureIntoSceneBySKU, ({ sku, settings, position }) => this._handleLoadIOneFurnitureIntoSceneBySKU(sku, settings, position)), this._messageBus.subscribe(MessageType.CopyIOneFurnitureIntoSceneBySKU, (original) => this._handleCopyIOneFurnitureIntoSceneBySKU(original)), this._configuratorEventService.buildFinished.subscribe((result) => {
45981
+ this.handleBuildResult(result);
45982
+ }), this._buildFurnitureService.currentActiveService.configureModeChanged.subscribe(configuringModeChange => this._handleConfigureModeChange(configuringModeChange)), this._buildFurnitureService.currentActiveService.toggleSelectedElement.subscribe((element) => this._selectedElementToggle(element)), this._buildFurnitureService.currentActiveService.buildFinished.subscribe((result) => this._handleBuildFinished(result)), this._buildFurnitureService.currentActiveService.answerSelected.subscribe((result) => this._answerSelected(result)), this._sceneService.onAfterRender.subscribe(() => this._handleRender()),
45940
45983
  // this._appService.skuSet.subscribe(sku => this._handleSkuSet(sku)),
45941
45984
  this._appService.materialPreviewSet.subscribe(material => this._handleMaterialSet(material)), this._appService.materialPreviewUpdate.subscribe(material => this._updateMaterialPreview(material)), this._appEventService.articleInfoReceived.subscribe(info => this._handleInfoClick(info)), this._messageService.subscribe(MessageType.UndefinedErrorOccured, () => this._handleUndefinedErrorOccured()), this._presetsService.afterLoad.subscribe(() => this._afterLoadFromPreset()), this._messageBus.subscribe(MessageType.Undo, () => this._clearItems()), this._messageBus.subscribe(MessageType.Redo, () => this._clearItems()), this._messageBus.subscribe(MessageType.StartWithEmptyRoom, () => this._clearItems()), this._messageBus.subscribe(MessageType.StartWithPreset, () => this._clearItems()), this._messageBus.subscribe(MessageType.LoadRoomFromPreset, () => this._clearItems()), this._messageBus.subscribe(MessageType.LoadRoomFromCloud, () => this._clearItems()), this._messageBus.subscribe(MessageType.NewRoom, () => this._clearItems()), this._messageBus.subscribe(MessageType.ResetRoomplan, () => this._clearItems()), this._messageBus.subscribe(MessageType.LoadScaledDiagram, () => this._clearItems()), this._presetsService.beforeLoad.subscribe(() => this._clearItems()), this._messageService.subscribe(MessageType.ItemSelected, (item) => this.objectSelected(item)), this._messageService.subscribe(MessageType.ItemUnselected, () => this._removeButtons()), this._messageService.subscribe(MessageType.UserModelUploaded, (data) => this._addUploadedItem(data)), this.screenSizeService.screenSizeChanged.subscribe((info) => {
45942
45985
  this.shouldShowLabel = info.isPhoneSize;
@@ -46077,6 +46120,9 @@ class ThreedselectorComponent {
46077
46120
  }
46078
46121
  // NEW CONFIGURATOR
46079
46122
  async handleBuildResult(result) {
46123
+ if (!result || this.firstBuild) {
46124
+ return;
46125
+ }
46080
46126
  const customFloorGroupResult = new CustomFloorGroupResult();
46081
46127
  const metaData = this.setMetadateFromObject(result);
46082
46128
  if (result && !isFloorDecoration(result.placement)) {
@@ -46136,7 +46182,7 @@ class ThreedselectorComponent {
46136
46182
  this._sceneService.needsRender = true;
46137
46183
  }
46138
46184
  else if (result.resultType === ResultType.NeedsUserInput) {
46139
- this._configuringService.isConfiguring = true;
46185
+ // this._configuringService.isConfiguring = true;
46140
46186
  }
46141
46187
  else if (result.resultType === ResultType.BuildFromScratch) {
46142
46188
  // if (this._loadedFromPreset) { // start configuring when loading is done
@@ -46224,10 +46270,10 @@ class ThreedselectorComponent {
46224
46270
  }
46225
46271
  }
46226
46272
  showConfiguratorChange(show) {
46227
- this._configuringService.isConfiguring = show;
46228
46273
  this.loadConfigurator = show;
46229
46274
  }
46230
46275
  async loadFurnitureFromSku(position, sku, settings) {
46276
+ this.firstBuild = true;
46231
46277
  const configuratorSettings = this._settingsService.settings.projectSettings ?
46232
46278
  this._settingsService.settings.projectSettings : this._settingsService.settings;
46233
46279
  const configuratorSettingsClone = Object.assign({}, configuratorSettings);
@@ -46249,14 +46295,16 @@ class ThreedselectorComponent {
46249
46295
  }
46250
46296
  }
46251
46297
  this._configuringService.scene = this._sceneService.scene;
46252
- await this._configuringService.init(configuratorSettingsClone);
46253
- const furnitureData = new ConfigurationResultObject();
46254
- furnitureData.sku = sku;
46255
- this._configuringService.isConfiguring = false;
46256
- await this._configuringService.configure(furnitureData);
46298
+ this._initConfigurator(configuratorSettingsClone, sku);
46299
+ // await this._configuringService.init(configuratorSettingsClone);
46300
+ // const furnitureData: ConfigurationResultObject = new ConfigurationResultObject();
46301
+ // furnitureData.sku = sku;
46302
+ // this._configuringService.isConfiguring = false;
46303
+ // await this._configuringService.configure(furnitureData);
46257
46304
  this._startPosition = position;
46258
46305
  this.loadConfigurator = true;
46259
- return this.handleBuildResult(this._configuringService.buildResult);
46306
+ this._changeDetector.detectChanges();
46307
+ return this._waitForBuildToFinish(); // handleBuildResult(this._configuringService.buildResult);
46260
46308
  }
46261
46309
  async configureFurniture(object) {
46262
46310
  if (object instanceof Item) {
@@ -46267,16 +46315,37 @@ class ThreedselectorComponent {
46267
46315
  this._externalSourceData = object.metadata.externalSettings; // set it so we can restore them with the new config.
46268
46316
  }
46269
46317
  // make sure that if the object contains metadata, we set from project true
46270
- await this._configuringService.init(configuratorSettingsClone);
46271
- const furnitureData = new ConfigurationResultObject();
46272
- furnitureData.sku = object.metadata.itemIdentifier;
46273
- furnitureData.instanceId = object.metadata.itemId;
46274
- this._configuringService.isConfiguring = true;
46275
- await this._configuringService.configure(furnitureData);
46318
+ // await this._configuringService.init(configuratorSettingsClone);
46319
+ this._initConfigurator(configuratorSettingsClone, object.metadata.itemIdentifier, object.metadata.itemId);
46320
+ // const furnitureData: ConfigurationResultObject = new ConfigurationResultObject();
46321
+ // furnitureData.sku = object.metadata.itemIdentifier;
46322
+ // furnitureData.instanceId = object.metadata.itemId;
46323
+ // this._configuringService.isConfiguring = true;
46324
+ // await this._configuringService.configure(furnitureData);
46276
46325
  this._loadFurnitureService.currentActiveService.configurationDirty = true;
46277
46326
  this.loadConfigurator = true;
46278
46327
  }
46279
46328
  }
46329
+ _initConfigurator(settings, sku, instanceId) {
46330
+ this.configuratorSettings = settings;
46331
+ this.configuratorSku = sku;
46332
+ this.configuratorInstanceId = instanceId;
46333
+ }
46334
+ _resetConfigurator() {
46335
+ this.configuratorSettings = undefined;
46336
+ this.configuratorSku = undefined;
46337
+ this.configuratorInstanceId = undefined;
46338
+ this.loadConfigurator = false;
46339
+ this.firstBuild = false;
46340
+ }
46341
+ _waitForBuildToFinish() {
46342
+ return new Promise((resolve, reject) => {
46343
+ this._configuratorEventService.buildFinished.pipe(filter$1(value => value !== undefined && value !== null), take$1(1)).subscribe((result) => {
46344
+ this._resetConfigurator();
46345
+ resolve(this.handleBuildResult(result));
46346
+ });
46347
+ });
46348
+ }
46280
46349
  async _setSourceSettings(configuratorExternalSourceId) {
46281
46350
  const configuratorSettings = this._settingsService.settings.projectSettings ?
46282
46351
  this._settingsService.settings.projectSettings : this._settingsService.settings;
@@ -46301,7 +46370,7 @@ class ThreedselectorComponent {
46301
46370
  return configuratorSettingsClone;
46302
46371
  }
46303
46372
  _closeConfigurator() {
46304
- this._configuringService.isConfiguring = false;
46373
+ // this._configuringService.isConfiguring = false;
46305
46374
  this.loadConfigurator = false;
46306
46375
  }
46307
46376
  _clearItems() {
@@ -46746,9 +46815,7 @@ class ThreedselectorComponent {
46746
46815
  }
46747
46816
  this._prepareAddButtons();
46748
46817
  }
46749
- if (this._callBackFnWhenBuildFinished && this.standAlone) {
46750
- this._callBackFnWhenBuildFinished(result.furniture);
46751
- }
46818
+ // this.handleBuildResult(result);
46752
46819
  }
46753
46820
  _resetElementPosition() {
46754
46821
  if (this.selectedElement && !this.standAlone) {
@@ -47178,7 +47245,7 @@ class ThreedselectorComponent {
47178
47245
  this._externalSourceData = furnitureData.externalSettings; // set it so we can restore them with the new config.
47179
47246
  }
47180
47247
  this._configuringService.scene = this._sceneService.scene;
47181
- await this._configuringService.init(configuratorSettingsClone);
47248
+ // await this._configuringService.init(configuratorSettingsClone);
47182
47249
  const data = new ConfigurationResultObject();
47183
47250
  data.sku = furnitureData.itemIdentifier;
47184
47251
  data.articleName = furnitureData.itemName;
@@ -47198,7 +47265,7 @@ class ThreedselectorComponent {
47198
47265
  data.rotation = furnitureData.rotation;
47199
47266
  data.originalMetadata = furnitureData;
47200
47267
  await this._configuringService.configure(data, shouldCopyInstance, looseOriginalConfiguration, standAlone, fromScratch, fromPreset, loadFromProject);
47201
- this._configuringService.isConfiguring = false;
47268
+ // this._configuringService.isConfiguring = false;
47202
47269
  this.loadConfigurator = true;
47203
47270
  }
47204
47271
  _answerSelected(result) {
@@ -47247,6 +47314,7 @@ class ThreedselectorComponent {
47247
47314
  else {
47248
47315
  this._appStateService.undoDisabled = false;
47249
47316
  this._appStateService.redoDisabled = false;
47317
+ this.loadConfigurator = false;
47250
47318
  }
47251
47319
  this.showAnswers = false;
47252
47320
  this.showSelections = configuringModeChange.configuring || this.standAlone;
@@ -47327,8 +47395,8 @@ class ThreedselectorComponent {
47327
47395
  });
47328
47396
  }
47329
47397
  }
47330
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThreedselectorComponent, deps: [{ token: ScreenSizeAnalysisService }, { token: i1$2.MatDialog }, { token: HomedecoratorAppService }, { token: HomedecoratorConnectorService }, { token: MessageBusService }, { token: SwitchLoadFurnitureService }, { token: SwitchBuildFurnitureService }, { token: ToastService }, { token: MessageBusService }, { token: SceneService }, { token: DialogService }, { token: CameraService }, { token: PresetsService }, { token: ItemService }, { token: HomedecoratorSettingsService }, { token: HomedecoratorAppEventService }, { token: BluePrintService }, { token: WallService }, { token: FloorService }, { token: HomedecoratorIconCacheService }, { token: GoogleTagManagerService }, { token: AppStateService }, { token: ProgressService }, { token: ResizeService }, { token: HomedecoratorConnectorAdapterService }, { token: LightPresetsService }, { token: VariationService }, { token: i27.ConfiguringService }], target: i0.ɵɵFactoryTarget.Component }); }
47331
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ThreedselectorComponent, isStandalone: false, selector: "rp-threedselector", inputs: { selections: "selections" }, outputs: { customizeButtonClicked: "customizeButtonClicked" }, viewQueries: [{ propertyName: "toolbarIconModels", first: true, predicate: ["toolbarIconModels"], descendants: true, static: true }, { propertyName: "selectedThreedObjectCustomizationSidebar", first: true, predicate: ["selectedThreedObjectCustomizationSidebar"], descendants: true, static: true }, { propertyName: "selectedThreedObjectAnimationSidebar", first: true, predicate: ["selectedThreedObjectAnimationSidebar"], descendants: true, static: true }, { propertyName: "customizeButtonClicked", first: true, predicate: ElementToolbarComponent, descendants: true, static: true }], ngImport: i0, template: "@if (loadConfigurator) {\r\n <co-configurator\r\n class=\"floating\"\r\n [showErrorMessages]=\"true\"\r\n [showLoader]=\"true\"\r\n [outputErrorMessages]=\"true\"\r\n (buildResult)=\"handleBuildResult($event)\"\r\n (errorMessages)=\"handleErrorMessages($event)\"\r\n (showChange)=\"showConfiguratorChange($event)\">\r\n </co-configurator>\r\n}\r\n\r\n@if (showElementToolbar) {\r\n <rp-element-toolbar class=\"rp-element-toolbar floating\" [class.custom]=\"standAlone\" @showElementToolbar\r\n [editMenu]=\"editElementMenu\"\r\n [showSwap]=\"showSwapButton\"\r\n [showPointer]=\"selectedElementPosition !== undefined\"\r\n (swapClicked)=\"swapElement()\"\r\n (deleteClicked)=\"deleteElement()\"\r\n (animationClicked)=\"openAnimationSidebar()\"\r\n ></rp-element-toolbar>\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [addButtons]=\"editAddButtons\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [resizeButtons]=\"resizeButtons\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n@if (showCustomizeButtons) {\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n<ng-template #toolbarIconModels>\r\n <rp-toolbar-icon\r\n matIcon=\"list\"\r\n tooltip=\"{{iconName.Objects | localize}}\"\r\n (onClick)=\"setModelErrorDialog()\"\r\n [showLabel]=\"shouldShowLabel\"\r\n ></rp-toolbar-icon>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectAnimationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'ANIMATE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectCustomizationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'CUSTOMIZE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<div class=\"slider-container\">\r\n <rp-element-slider class=\"rp-element-slider\"></rp-element-slider>\r\n</div>\r\n", styles: [":host{position:absolute;top:0;left:0;pointer-events:none;margin:0;padding:0;width:100%;height:100%;overflow:hidden}:host .rp-element-buttons.animate ::ng-deep .element-add-button{animation-name:pulse-add-buttons;animation-duration:.4s;animation-iteration-count:6;animation-direction:alternate}:host>*{pointer-events:all}.input-wrapper{display:flex;flex-direction:column}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.logo-menu-5th{position:absolute;top:220px;left:84px}.logo-menu-5th.front .mat-mdc-raised-button{width:170px;text-align:left}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.on-top{z-index:3}.solid-background{fill:#fff;background:#fff}.solid-background>*{fill:#fff;background:#fff}.button-close{height:36px;width:36px;min-width:initial;padding:0;border:none;position:absolute;right:20px;top:15px;border-radius:50%}.remove-all{position:absolute;top:15px;right:71px}#loader{width:300px;position:fixed;top:25%;left:50%;margin-left:-200px;background-color:#fff;border-radius:15px;transform:translate(-50%,-50%);text-align:center;font-family:Public sans,serif;z-index:1000;box-sizing:border-box;padding:15px}#loader.full{width:100%;top:0;left:0;margin-left:0;border-radius:0;transform:none;z-index:auto;padding:0;position:absolute}#loader.full #progress-bar{width:100%;height:5px;border:none;margin-top:0;border-radius:0}#loader-text{font-family:Public sans,serif;font-size:15px}#progress-bar{width:270px;height:20px;border:1px solid transparent;background:#e0e0e0;position:relative;margin-top:10px;border-radius:15px;overflow:hidden}.circular-progress-wrapper{position:absolute;width:90px;height:90px;left:50%;top:50%;transform:translate(-50%,-50%)}.circular-progress{width:90px;height:90px;transform:rotate(-90deg)}.bg{fill:none;stroke:#d1cec5;stroke-width:2}.progress{fill:none;stroke:#979284;stroke-width:2;stroke-linecap:round;transition:stroke-dasharray .3s ease}.percentage{position:absolute;top:0;left:0;width:90px;height:90px;font-size:16px;font-weight:600;line-height:90px;text-align:center;color:#979284}#progress{height:100%;width:0;background:#da9803;transition:width .3s}@keyframes pulse-add-buttons{50%{box-shadow:0 0 20px #ff5c33}}\n"], dependencies: [{ kind: "component", type: ToolbarIconComponent, selector: "rp-toolbar-icon", inputs: ["matIcon", "svgIcon", "tooltip", "disabled", "showLabel"], outputs: ["onClick"] }, { kind: "component", type: i27.ConfiguratorComponent, selector: "co-configurator", inputs: ["showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["buildResult", "isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: ElementToolbarComponent, selector: "rp-element-toolbar", inputs: ["editMenu", "showPointer", "showSwap"], outputs: ["deleteClicked", "swapClicked", "animationClicked"] }, { kind: "component", type: ElementButtonsComponent, selector: "rp-element-buttons", inputs: ["addButtons", "customizeButtons", "resizeButtons", "elementPointer", "elementPosition"], outputs: ["customizeButtonClicked"] }, { kind: "component", type: ElementSliderComponent, selector: "rp-element-slider" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
47398
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThreedselectorComponent, deps: [{ token: ScreenSizeAnalysisService }, { token: i1$2.MatDialog }, { token: HomedecoratorAppService }, { token: HomedecoratorConnectorService }, { token: MessageBusService }, { token: SwitchLoadFurnitureService }, { token: SwitchBuildFurnitureService }, { token: ToastService }, { token: MessageBusService }, { token: SceneService }, { token: DialogService }, { token: CameraService }, { token: PresetsService }, { token: ItemService }, { token: HomedecoratorSettingsService }, { token: HomedecoratorAppEventService }, { token: BluePrintService }, { token: WallService }, { token: FloorService }, { token: HomedecoratorIconCacheService }, { token: GoogleTagManagerService }, { token: AppStateService }, { token: ProgressService }, { token: ResizeService }, { token: HomedecoratorConnectorAdapterService }, { token: LightPresetsService }, { token: VariationService }, { token: i27.ConfiguringService }, { token: i27.ConfiguratorEventService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
47399
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ThreedselectorComponent, isStandalone: false, selector: "rp-threedselector", inputs: { selections: "selections" }, outputs: { customizeButtonClicked: "customizeButtonClicked" }, viewQueries: [{ propertyName: "toolbarIconModels", first: true, predicate: ["toolbarIconModels"], descendants: true, static: true }, { propertyName: "selectedThreedObjectCustomizationSidebar", first: true, predicate: ["selectedThreedObjectCustomizationSidebar"], descendants: true, static: true }, { propertyName: "selectedThreedObjectAnimationSidebar", first: true, predicate: ["selectedThreedObjectAnimationSidebar"], descendants: true, static: true }, { propertyName: "customizeButtonClicked", first: true, predicate: ElementToolbarComponent, descendants: true, static: true }], ngImport: i0, template: "@if (true) {\r\n <co-configurator\r\n class=\"floating\"\r\n [settings]=\"configuratorSettings\"\r\n [sku]=\"configuratorSku\"\r\n [instanceId]=\"configuratorInstanceId\"\r\n [show]=\"loadConfigurator && !firstBuild\"\r\n [showErrorMessages]=\"true\"\r\n [showLoader]=\"true\"\r\n [outputErrorMessages]=\"true\"\r\n (errorMessages)=\"handleErrorMessages($event)\"\r\n (showChange)=\"showConfiguratorChange($event)\">\r\n </co-configurator>\r\n}\r\n\r\n@if (showElementToolbar) {\r\n <rp-element-toolbar class=\"rp-element-toolbar floating\" [class.custom]=\"standAlone\" @showElementToolbar\r\n [editMenu]=\"editElementMenu\"\r\n [showSwap]=\"showSwapButton\"\r\n [showPointer]=\"selectedElementPosition !== undefined\"\r\n (swapClicked)=\"swapElement()\"\r\n (deleteClicked)=\"deleteElement()\"\r\n (animationClicked)=\"openAnimationSidebar()\"\r\n ></rp-element-toolbar>\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [addButtons]=\"editAddButtons\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [resizeButtons]=\"resizeButtons\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n@if (showCustomizeButtons) {\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n<ng-template #toolbarIconModels>\r\n <rp-toolbar-icon\r\n matIcon=\"list\"\r\n tooltip=\"{{iconName.Objects | localize}}\"\r\n (onClick)=\"setModelErrorDialog()\"\r\n [showLabel]=\"shouldShowLabel\"\r\n ></rp-toolbar-icon>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectAnimationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'ANIMATE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectCustomizationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'CUSTOMIZE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<div class=\"slider-container\">\r\n <rp-element-slider class=\"rp-element-slider\"></rp-element-slider>\r\n</div>\r\n", styles: [":host{position:absolute;top:0;left:0;pointer-events:none;margin:0;padding:0;width:100%;height:100%;overflow:hidden}:host .rp-element-buttons.animate ::ng-deep .element-add-button{animation-name:pulse-add-buttons;animation-duration:.4s;animation-iteration-count:6;animation-direction:alternate}:host>*{pointer-events:all}.input-wrapper{display:flex;flex-direction:column}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.logo-menu-5th{position:absolute;top:220px;left:84px}.logo-menu-5th.front .mat-mdc-raised-button{width:170px;text-align:left}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.on-top{z-index:3}.solid-background{fill:#fff;background:#fff}.solid-background>*{fill:#fff;background:#fff}.button-close{height:36px;width:36px;min-width:initial;padding:0;border:none;position:absolute;right:20px;top:15px;border-radius:50%}.remove-all{position:absolute;top:15px;right:71px}#loader{width:300px;position:fixed;top:25%;left:50%;margin-left:-200px;background-color:#fff;border-radius:15px;transform:translate(-50%,-50%);text-align:center;font-family:Public sans,serif;z-index:1000;box-sizing:border-box;padding:15px}#loader.full{width:100%;top:0;left:0;margin-left:0;border-radius:0;transform:none;z-index:auto;padding:0;position:absolute}#loader.full #progress-bar{width:100%;height:5px;border:none;margin-top:0;border-radius:0}#loader-text{font-family:Public sans,serif;font-size:15px}#progress-bar{width:270px;height:20px;border:1px solid transparent;background:#e0e0e0;position:relative;margin-top:10px;border-radius:15px;overflow:hidden}.circular-progress-wrapper{position:absolute;width:90px;height:90px;left:50%;top:50%;transform:translate(-50%,-50%)}.circular-progress{width:90px;height:90px;transform:rotate(-90deg)}.bg{fill:none;stroke:#d1cec5;stroke-width:2}.progress{fill:none;stroke:#979284;stroke-width:2;stroke-linecap:round;transition:stroke-dasharray .3s ease}.percentage{position:absolute;top:0;left:0;width:90px;height:90px;font-size:16px;font-weight:600;line-height:90px;text-align:center;color:#979284}#progress{height:100%;width:0;background:#da9803;transition:width .3s}@keyframes pulse-add-buttons{50%{box-shadow:0 0 20px #ff5c33}}\n"], dependencies: [{ kind: "component", type: ToolbarIconComponent, selector: "rp-toolbar-icon", inputs: ["matIcon", "svgIcon", "tooltip", "disabled", "showLabel"], outputs: ["onClick"] }, { kind: "component", type: i27.ConfiguratorComponent, selector: "co-configurator", inputs: ["show", "sku", "instanceId", "settings", "scene", "showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: ElementToolbarComponent, selector: "rp-element-toolbar", inputs: ["editMenu", "showPointer", "showSwap"], outputs: ["deleteClicked", "swapClicked", "animationClicked"] }, { kind: "component", type: ElementButtonsComponent, selector: "rp-element-buttons", inputs: ["addButtons", "customizeButtons", "resizeButtons", "elementPointer", "elementPosition"], outputs: ["customizeButtonClicked"] }, { kind: "component", type: ElementSliderComponent, selector: "rp-element-slider" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
47332
47400
  trigger('showElementToolbar', [
47333
47401
  state('void', style({ opacity: 0 })),
47334
47402
  state('*', style({ opacity: 1 })),
@@ -47346,8 +47414,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
47346
47414
  transition('void => *', animate('500ms ease'))
47347
47415
  ])
47348
47416
  ] /*,
47349
- changeDetection: ChangeDetectionStrategy.OnPush*/, standalone: false, template: "@if (loadConfigurator) {\r\n <co-configurator\r\n class=\"floating\"\r\n [showErrorMessages]=\"true\"\r\n [showLoader]=\"true\"\r\n [outputErrorMessages]=\"true\"\r\n (buildResult)=\"handleBuildResult($event)\"\r\n (errorMessages)=\"handleErrorMessages($event)\"\r\n (showChange)=\"showConfiguratorChange($event)\">\r\n </co-configurator>\r\n}\r\n\r\n@if (showElementToolbar) {\r\n <rp-element-toolbar class=\"rp-element-toolbar floating\" [class.custom]=\"standAlone\" @showElementToolbar\r\n [editMenu]=\"editElementMenu\"\r\n [showSwap]=\"showSwapButton\"\r\n [showPointer]=\"selectedElementPosition !== undefined\"\r\n (swapClicked)=\"swapElement()\"\r\n (deleteClicked)=\"deleteElement()\"\r\n (animationClicked)=\"openAnimationSidebar()\"\r\n ></rp-element-toolbar>\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [addButtons]=\"editAddButtons\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [resizeButtons]=\"resizeButtons\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n@if (showCustomizeButtons) {\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n<ng-template #toolbarIconModels>\r\n <rp-toolbar-icon\r\n matIcon=\"list\"\r\n tooltip=\"{{iconName.Objects | localize}}\"\r\n (onClick)=\"setModelErrorDialog()\"\r\n [showLabel]=\"shouldShowLabel\"\r\n ></rp-toolbar-icon>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectAnimationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'ANIMATE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectCustomizationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'CUSTOMIZE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<div class=\"slider-container\">\r\n <rp-element-slider class=\"rp-element-slider\"></rp-element-slider>\r\n</div>\r\n", styles: [":host{position:absolute;top:0;left:0;pointer-events:none;margin:0;padding:0;width:100%;height:100%;overflow:hidden}:host .rp-element-buttons.animate ::ng-deep .element-add-button{animation-name:pulse-add-buttons;animation-duration:.4s;animation-iteration-count:6;animation-direction:alternate}:host>*{pointer-events:all}.input-wrapper{display:flex;flex-direction:column}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.logo-menu-5th{position:absolute;top:220px;left:84px}.logo-menu-5th.front .mat-mdc-raised-button{width:170px;text-align:left}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.on-top{z-index:3}.solid-background{fill:#fff;background:#fff}.solid-background>*{fill:#fff;background:#fff}.button-close{height:36px;width:36px;min-width:initial;padding:0;border:none;position:absolute;right:20px;top:15px;border-radius:50%}.remove-all{position:absolute;top:15px;right:71px}#loader{width:300px;position:fixed;top:25%;left:50%;margin-left:-200px;background-color:#fff;border-radius:15px;transform:translate(-50%,-50%);text-align:center;font-family:Public sans,serif;z-index:1000;box-sizing:border-box;padding:15px}#loader.full{width:100%;top:0;left:0;margin-left:0;border-radius:0;transform:none;z-index:auto;padding:0;position:absolute}#loader.full #progress-bar{width:100%;height:5px;border:none;margin-top:0;border-radius:0}#loader-text{font-family:Public sans,serif;font-size:15px}#progress-bar{width:270px;height:20px;border:1px solid transparent;background:#e0e0e0;position:relative;margin-top:10px;border-radius:15px;overflow:hidden}.circular-progress-wrapper{position:absolute;width:90px;height:90px;left:50%;top:50%;transform:translate(-50%,-50%)}.circular-progress{width:90px;height:90px;transform:rotate(-90deg)}.bg{fill:none;stroke:#d1cec5;stroke-width:2}.progress{fill:none;stroke:#979284;stroke-width:2;stroke-linecap:round;transition:stroke-dasharray .3s ease}.percentage{position:absolute;top:0;left:0;width:90px;height:90px;font-size:16px;font-weight:600;line-height:90px;text-align:center;color:#979284}#progress{height:100%;width:0;background:#da9803;transition:width .3s}@keyframes pulse-add-buttons{50%{box-shadow:0 0 20px #ff5c33}}\n"] }]
47350
- }], ctorParameters: () => [{ type: ScreenSizeAnalysisService }, { type: i1$2.MatDialog }, { type: HomedecoratorAppService }, { type: HomedecoratorConnectorService }, { type: MessageBusService }, { type: SwitchLoadFurnitureService }, { type: SwitchBuildFurnitureService }, { type: ToastService }, { type: MessageBusService }, { type: SceneService }, { type: DialogService }, { type: CameraService }, { type: PresetsService }, { type: ItemService }, { type: HomedecoratorSettingsService }, { type: HomedecoratorAppEventService }, { type: BluePrintService }, { type: WallService }, { type: FloorService }, { type: HomedecoratorIconCacheService }, { type: GoogleTagManagerService }, { type: AppStateService }, { type: ProgressService }, { type: ResizeService }, { type: HomedecoratorConnectorAdapterService }, { type: LightPresetsService }, { type: VariationService }, { type: i27.ConfiguringService }], propDecorators: { toolbarIconModels: [{
47417
+ changeDetection: ChangeDetectionStrategy.OnPush*/, standalone: false, template: "@if (true) {\r\n <co-configurator\r\n class=\"floating\"\r\n [settings]=\"configuratorSettings\"\r\n [sku]=\"configuratorSku\"\r\n [instanceId]=\"configuratorInstanceId\"\r\n [show]=\"loadConfigurator && !firstBuild\"\r\n [showErrorMessages]=\"true\"\r\n [showLoader]=\"true\"\r\n [outputErrorMessages]=\"true\"\r\n (errorMessages)=\"handleErrorMessages($event)\"\r\n (showChange)=\"showConfiguratorChange($event)\">\r\n </co-configurator>\r\n}\r\n\r\n@if (showElementToolbar) {\r\n <rp-element-toolbar class=\"rp-element-toolbar floating\" [class.custom]=\"standAlone\" @showElementToolbar\r\n [editMenu]=\"editElementMenu\"\r\n [showSwap]=\"showSwapButton\"\r\n [showPointer]=\"selectedElementPosition !== undefined\"\r\n (swapClicked)=\"swapElement()\"\r\n (deleteClicked)=\"deleteElement()\"\r\n (animationClicked)=\"openAnimationSidebar()\"\r\n ></rp-element-toolbar>\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [addButtons]=\"editAddButtons\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [resizeButtons]=\"resizeButtons\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n@if (showCustomizeButtons) {\r\n <rp-element-buttons class=\"rp-element-buttons floating\" [class.animate]=\"animateEditAddButtons\"\r\n [elementPointer]=\"elementToolbar?.elementPointer\"\r\n [customizeButtons]=\"editCustomizeButton\"\r\n [elementPosition]=\"selectedElementPosition\"\r\n (customizeButtonClicked)=\"handleCustomizeClick()\"\r\n ></rp-element-buttons>\r\n}\r\n\r\n<ng-template #toolbarIconModels>\r\n <rp-toolbar-icon\r\n matIcon=\"list\"\r\n tooltip=\"{{iconName.Objects | localize}}\"\r\n (onClick)=\"setModelErrorDialog()\"\r\n [showLabel]=\"shouldShowLabel\"\r\n ></rp-toolbar-icon>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectAnimationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'ANIMATE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<ng-template #selectedThreedObjectCustomizationSidebar>\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-headline-6\" [textContent]=\"'CUSTOMIZE' | localize\"></h2>\r\n </header>\r\n</ng-template>\r\n\r\n<div class=\"slider-container\">\r\n <rp-element-slider class=\"rp-element-slider\"></rp-element-slider>\r\n</div>\r\n", styles: [":host{position:absolute;top:0;left:0;pointer-events:none;margin:0;padding:0;width:100%;height:100%;overflow:hidden}:host .rp-element-buttons.animate ::ng-deep .element-add-button{animation-name:pulse-add-buttons;animation-duration:.4s;animation-iteration-count:6;animation-direction:alternate}:host>*{pointer-events:all}.input-wrapper{display:flex;flex-direction:column}.flex-wrap{display:flex;flex-flow:column nowrap;height:100%}.logo-menu-5th{position:absolute;top:220px;left:84px}.logo-menu-5th.front .mat-mdc-raised-button{width:170px;text-align:left}.sidebar{position:absolute;left:0;top:0;height:100vh;max-width:30%;width:400px;background:#fff;padding:0 20px;box-shadow:0 0 20px #00000040}.on-top{z-index:3}.solid-background{fill:#fff;background:#fff}.solid-background>*{fill:#fff;background:#fff}.button-close{height:36px;width:36px;min-width:initial;padding:0;border:none;position:absolute;right:20px;top:15px;border-radius:50%}.remove-all{position:absolute;top:15px;right:71px}#loader{width:300px;position:fixed;top:25%;left:50%;margin-left:-200px;background-color:#fff;border-radius:15px;transform:translate(-50%,-50%);text-align:center;font-family:Public sans,serif;z-index:1000;box-sizing:border-box;padding:15px}#loader.full{width:100%;top:0;left:0;margin-left:0;border-radius:0;transform:none;z-index:auto;padding:0;position:absolute}#loader.full #progress-bar{width:100%;height:5px;border:none;margin-top:0;border-radius:0}#loader-text{font-family:Public sans,serif;font-size:15px}#progress-bar{width:270px;height:20px;border:1px solid transparent;background:#e0e0e0;position:relative;margin-top:10px;border-radius:15px;overflow:hidden}.circular-progress-wrapper{position:absolute;width:90px;height:90px;left:50%;top:50%;transform:translate(-50%,-50%)}.circular-progress{width:90px;height:90px;transform:rotate(-90deg)}.bg{fill:none;stroke:#d1cec5;stroke-width:2}.progress{fill:none;stroke:#979284;stroke-width:2;stroke-linecap:round;transition:stroke-dasharray .3s ease}.percentage{position:absolute;top:0;left:0;width:90px;height:90px;font-size:16px;font-weight:600;line-height:90px;text-align:center;color:#979284}#progress{height:100%;width:0;background:#da9803;transition:width .3s}@keyframes pulse-add-buttons{50%{box-shadow:0 0 20px #ff5c33}}\n"] }]
47418
+ }], ctorParameters: () => [{ type: ScreenSizeAnalysisService }, { type: i1$2.MatDialog }, { type: HomedecoratorAppService }, { type: HomedecoratorConnectorService }, { type: MessageBusService }, { type: SwitchLoadFurnitureService }, { type: SwitchBuildFurnitureService }, { type: ToastService }, { type: MessageBusService }, { type: SceneService }, { type: DialogService }, { type: CameraService }, { type: PresetsService }, { type: ItemService }, { type: HomedecoratorSettingsService }, { type: HomedecoratorAppEventService }, { type: BluePrintService }, { type: WallService }, { type: FloorService }, { type: HomedecoratorIconCacheService }, { type: GoogleTagManagerService }, { type: AppStateService }, { type: ProgressService }, { type: ResizeService }, { type: HomedecoratorConnectorAdapterService }, { type: LightPresetsService }, { type: VariationService }, { type: i27.ConfiguringService }, { type: i27.ConfiguratorEventService }, { type: i0.ChangeDetectorRef }], propDecorators: { toolbarIconModels: [{
47351
47419
  type: ViewChild,
47352
47420
  args: ['toolbarIconModels', { static: true }]
47353
47421
  }], selectedThreedObjectCustomizationSidebar: [{
@@ -47448,7 +47516,7 @@ class LandingScreenModalComponent {
47448
47516
  });
47449
47517
  }
47450
47518
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LandingScreenModalComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }, { token: MessageBusService }, { token: ScreenSizeAnalysisService }], target: i0.ɵɵFactoryTarget.Component }); }
47451
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LandingScreenModalComponent, isStandalone: false, selector: "rp-landing-screen-modal", ngImport: i0, template: "<h1 mat-dialog-title class=\"mat-headline-5\">{{ 'HOMEDECOHUB' | localize | uppercase }}</h1>\r\n\r\n<div mat-dialog-content class=\"dialog-content\" fxLayout=\"column\" cdkTrapFocus>\r\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"space-around flex-start\">\r\n\r\n @if (desktopSizeScreen) {\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"startFromScratch()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.PencilLight)\"></co-icon></span>\r\n <span>{{ 'CREATE_NEW_PLAN_FROM_SCRATCH' | localize }}</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (desktopSizeScreen && showUploadDiagram) {\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"fileInput.click()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.UploadLight)\"></co-icon></span>\r\n <span>{{ 'CREATE_FROM_DIAGRAM' | localize }}</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"openOpenDialog()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.CloudArrowUp)\"></co-icon></span>\r\n <span>{{ 'OPEN_SAVED_ROOM_PLAN' | localize }}</span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"library\" fxLayout=\"row\" fxLayoutAlign=\"space-between stretch\">\r\n @if (desktopSizeScreen) {\r\n <div class=\"col left\" fxFlex=\"grow\">\r\n <h2 class=\"mat-subtitle-1\" [textContent]=\"'START_WITH_A_ROOM_SHAPE' | localize\"></h2>\r\n <mat-grid-list cols=\"2\" rowHeight=\"115px\">\r\n @for (room of floorPlans | filter:'show':true; track room) {\r\n <mat-grid-tile>\r\n <button mat-button (click)=\"startWithRoom(room, true)\">\r\n <img [src]=\"assetPath + room.thumbnail\">\r\n </button>\r\n </mat-grid-tile>\r\n }\r\n </mat-grid-list>\r\n </div>\r\n }\r\n <div class=\"col\" [class.right]=\"desktopSizeScreen\" fxFlex=\"grow\">\r\n <h2 class=\"mat-subtitle-1\">\r\n {{ 'OPEN_A_COMPLETE_ROOM' | localize }}\r\n </h2>\r\n <mat-grid-list [cols]=\"desktopSizeScreen ? 2 : 3\" rowHeight=\"115px\">\r\n @for (preset of presets | filter:'show':true; track preset) {\r\n <mat-grid-tile>\r\n <button mat-button (click)=\"startWithRoom(preset)\">\r\n <img [src]=\"assetPath + preset.thumbnail\">\r\n </button>\r\n </mat-grid-tile>\r\n }\r\n </mat-grid-list>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<input\r\n type=\"file\"\r\n id=\"fileInput\"\r\n (change)=\"validateImportFile($event)\"\r\n style=\"display: none\"\r\n #fileInput\r\n >\r\n", styles: [":host{width:inherit;height:inherit;background:#fff;display:flex;flex-direction:column}.mat-headline-5{text-align:center;line-height:1;font-weight:600;margin:0 0 16px}.mat-mdc-dialog-content{padding:0 15px;margin:0}:host img{max-width:100%}.col{height:100%;width:33%}.icon-wrapper{display:inline-block;margin-right:10px}.actions{margin-top:8px;margin-bottom:24px;min-height:50px;gap:10px}.actions>.col{height:100%}.actions ::ng-deep button{height:50px;width:100%;background:#da9803;padding:0 10px}.actions ::ng-deep button span{font-size:13px}.actions ::ng-deep button co-icon ::ng-deep{width:20px;height:20px}.actions ::ng-deep button co-icon ::ng-deep svg{fill:#fff}.library ::ng-deep button{height:100%;width:100%}.library .mat-subtitle-1{text-align:center}\n"], dependencies: [{ 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3$4.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i3$4.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: FilterPipe, name: "filter" }, { kind: "pipe", type: i2$2.UpperCasePipe, name: "uppercase" }] }); }
47519
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LandingScreenModalComponent, isStandalone: false, selector: "rp-landing-screen-modal", ngImport: i0, template: "<h1 mat-dialog-title class=\"mat-headline-5\">{{ 'HOMEDECOHUB' | localize | uppercase }}</h1>\r\n\r\n<div mat-dialog-content class=\"dialog-content\" fxLayout=\"column\" cdkTrapFocus>\r\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"space-around flex-start\">\r\n\r\n @if (desktopSizeScreen) {\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"startFromScratch()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.PencilLight)\"></co-icon></span>\r\n <span>{{ 'CREATE_NEW_PLAN_FROM_SCRATCH' | localize }}</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (desktopSizeScreen && showUploadDiagram) {\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"fileInput.click()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.UploadLight)\"></co-icon></span>\r\n <span>{{ 'CREATE_FROM_DIAGRAM' | localize }}</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"col\">\r\n <button mat-raised-button color=\"primary\" (click)=\"openOpenDialog()\">\r\n <span class=\"icon-wrapper\"><co-icon [iconData]=\"iconService.getIcon(icons.CloudArrowUp)\"></co-icon></span>\r\n <span>{{ 'OPEN_SAVED_ROOM_PLAN' | localize }}</span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"library\" fxLayout=\"row\" fxLayoutAlign=\"space-between stretch\">\r\n @if (desktopSizeScreen) {\r\n <div class=\"col left\" fxFlex=\"grow\">\r\n <h2 class=\"mat-subtitle-1\" [textContent]=\"'START_WITH_A_ROOM_SHAPE' | localize\"></h2>\r\n <mat-grid-list cols=\"2\" rowHeight=\"115px\">\r\n @for (room of floorPlans | filter:'show':true; track room) {\r\n <mat-grid-tile>\r\n <button mat-button (click)=\"startWithRoom(room, true)\">\r\n <img [src]=\"assetPath + room.thumbnail\">\r\n </button>\r\n </mat-grid-tile>\r\n }\r\n </mat-grid-list>\r\n </div>\r\n }\r\n <div class=\"col\" [class.right]=\"desktopSizeScreen\" fxFlex=\"grow\">\r\n <h2 class=\"mat-subtitle-1\">\r\n {{ 'OPEN_A_COMPLETE_ROOM' | localize }}\r\n </h2>\r\n <mat-grid-list [cols]=\"desktopSizeScreen ? 2 : 3\" rowHeight=\"115px\">\r\n @for (preset of presets | filter:'show':true; track preset) {\r\n <mat-grid-tile>\r\n <button mat-button (click)=\"startWithRoom(preset)\">\r\n <img [src]=\"assetPath + preset.thumbnail\">\r\n </button>\r\n </mat-grid-tile>\r\n }\r\n </mat-grid-list>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<input\r\n type=\"file\"\r\n id=\"fileInput\"\r\n (change)=\"validateImportFile($event)\"\r\n style=\"display: none\"\r\n #fileInput\r\n >\r\n", styles: [":host{width:inherit;height:inherit;background:#fff;display:flex;flex-direction:column}.mat-headline-5{text-align:center;line-height:1;font-weight:600;margin:0 0 16px}.mat-mdc-dialog-content{padding:0 15px;margin:0}:host img{max-width:100%}.col{height:100%;width:33%}.icon-wrapper{display:inline-block;margin-right:10px}.actions{margin-top:8px;margin-bottom:24px;min-height:50px;gap:10px}.actions>.col{height:100%}.actions ::ng-deep button{height:50px;width:100%;background:#da9803;padding:0 10px}.actions ::ng-deep button span{font-size:13px}.actions ::ng-deep button co-icon ::ng-deep{width:20px;height:20px}.actions ::ng-deep button co-icon ::ng-deep svg{fill:#fff}.library ::ng-deep button{height:100%;width:100%}.library .mat-subtitle-1{text-align:center}\n"], dependencies: [{ 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3$4.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i3$4.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: FilterPipe, name: "filter" }, { kind: "pipe", type: i2$2.UpperCasePipe, name: "uppercase" }] }); }
47452
47520
  }
47453
47521
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LandingScreenModalComponent, decorators: [{
47454
47522
  type: Component,
@@ -47582,7 +47650,7 @@ class LoadFromCloudDialogComponent {
47582
47650
  this.dialog.open(ErrorDialogComponent, { data });
47583
47651
  }
47584
47652
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoadFromCloudDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialog }, { token: i1$2.MatDialogRef }, { token: MessageBusService }, { token: HomedecoratorDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
47585
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LoadFromCloudDialogComponent, isStandalone: false, selector: "rp-load-from-cloud-dialog", viewQueries: [{ propertyName: "content", first: true, predicate: ["codeInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (preset && showEditPresetDialog) {\r\n <edit-preset-dialog\r\n [preset]=\"preset\"\r\n ></edit-preset-dialog>\r\n}\r\n\r\n@if (!showEditPresetDialog) {\r\n <div>\r\n <h1 mat-dialog-title [textContent]=\"'LOAD_FROM_CLOUD' | localize\"></h1>\r\n <div mat-dialog-content>\r\n <div>\r\n {{'ENTER_THE_CODE_OR_URL_OF_THE_PLAN_YOU_WANT_TO_LOAD' | localize}}:\r\n </div>\r\n <mat-form-field>\r\n <input matInput\r\n [(ngModel)]=\"code\"\r\n (keydown.enter)=\"isValidInput(code) && load()\"\r\n type=\"text\"\r\n #codeInputModel=\"ngModel\"\r\n #codeInput\r\n />\r\n </mat-form-field>\r\n <div>\r\n @if (codeInputModel.dirty && !isValidInput(code)) {\r\n <mat-error>\r\n {{'Invalid code or URL' | localize}}\r\n </mat-error>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div mat-dialog-actions fxLayoutAlign=\"end center\">\r\n @if (showEditButton() && !showEditPresetDialog) {\r\n <button mat-button color=\"primary\"\r\n [disabled]=\"!isValidInput(code)\"\r\n (click)=\"editPreset()\">\r\n {{'Edit' | localize}}\r\n </button>\r\n }\r\n @if (showEditPresetDialog) {\r\n <button mat-button color=\"primary\"\r\n (click)=\"cancelEditPreset()\">\r\n {{'Cancel' | localize}}\r\n </button>\r\n }\r\n <button mat-button color=\"primary\" [disabled]=\"!isValidInput(code)\" (click)=\"load()\">\r\n {{'Open' | localize}}\r\n </button>\r\n </div>\r\n", styles: ["mat-form-field{width:100%}\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.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: 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: EditPresetDialogComponent, selector: "edit-preset-dialog", inputs: ["preset"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47653
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LoadFromCloudDialogComponent, isStandalone: false, selector: "rp-load-from-cloud-dialog", viewQueries: [{ propertyName: "content", first: true, predicate: ["codeInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (preset && showEditPresetDialog) {\r\n <edit-preset-dialog\r\n [preset]=\"preset\"\r\n ></edit-preset-dialog>\r\n}\r\n\r\n@if (!showEditPresetDialog) {\r\n <div>\r\n <h1 mat-dialog-title [textContent]=\"'LOAD_FROM_CLOUD' | localize\"></h1>\r\n <div mat-dialog-content>\r\n <div>\r\n {{'ENTER_THE_CODE_OR_URL_OF_THE_PLAN_YOU_WANT_TO_LOAD' | localize}}:\r\n </div>\r\n <mat-form-field>\r\n <input matInput\r\n [(ngModel)]=\"code\"\r\n (keydown.enter)=\"isValidInput(code) && load()\"\r\n type=\"text\"\r\n #codeInputModel=\"ngModel\"\r\n #codeInput\r\n />\r\n </mat-form-field>\r\n <div>\r\n @if (codeInputModel.dirty && !isValidInput(code)) {\r\n <mat-error>\r\n {{'Invalid code or URL' | localize}}\r\n </mat-error>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div mat-dialog-actions fxLayoutAlign=\"end center\">\r\n @if (showEditButton() && !showEditPresetDialog) {\r\n <button mat-button color=\"primary\"\r\n [disabled]=\"!isValidInput(code)\"\r\n (click)=\"editPreset()\">\r\n {{'Edit' | localize}}\r\n </button>\r\n }\r\n @if (showEditPresetDialog) {\r\n <button mat-button color=\"primary\"\r\n (click)=\"cancelEditPreset()\">\r\n {{'Cancel' | localize}}\r\n </button>\r\n }\r\n <button mat-button color=\"primary\" [disabled]=\"!isValidInput(code)\" (click)=\"load()\">\r\n {{'Open' | localize}}\r\n </button>\r\n </div>\r\n", styles: ["mat-form-field{width:100%}\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.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: 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: EditPresetDialogComponent, selector: "edit-preset-dialog", inputs: ["preset"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47586
47654
  }
47587
47655
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoadFromCloudDialogComponent, decorators: [{
47588
47656
  type: Component,
@@ -47713,7 +47781,7 @@ class SavedDialogComponent {
47713
47781
  });
47714
47782
  }
47715
47783
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: MessageBusService }, { token: i2$5.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
47716
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SavedDialogComponent, isStandalone: false, selector: "rp-saved-dialog", viewQueries: [{ propertyName: "codeInputRef", first: true, predicate: ["codeInput"], descendants: true, static: true }, { propertyName: "codeCopy", first: true, predicate: ["codeCopy"], descendants: true, static: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{'SAVE_SUCCESSFUL' | localize}}!</h1>\r\n<div mat-dialog-content>\r\n <p>{{'THE_SAVE_CODE_FOR_THE_PLAN_IS' | localize}}:\r\n <strong #codeCopy>{{data.code}}</strong>\r\n </p>\r\n <p>{{'MAKE_SURE_TO_STORE_THE_CODE_IN_A_SAFE_PLACE' | localize}}!</p>\r\n<!-- <mat-form-field>-->\r\n<!-- <input-->\r\n<!-- matInput-->\r\n<!-- #codeInput-->\r\n<!-- type=\"text\"-->\r\n<!-- placeholder=\"{{'PLAN_URL' | localize}}\"-->\r\n<!-- [value]=\"planUrl\"-->\r\n<!-- (click)=\"selectUrl()\"-->\r\n<!-- readonly=\"true\"/>-->\r\n<!-- <mat-icon matSuffix (click)=\"copyToClipboard()\">file_copy</mat-icon>-->\r\n<!-- </mat-form-field>-->\r\n</div>\r\n<div mat-dialog-actions fxLayoutAlign=\"end center\">\r\n <button mat-button mat-dialog-close>\r\n {{'OK' | localize}}\r\n </button>\r\n</div>\r\n", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-input-infix{padding-right:8px}\n"], dependencies: [{ 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: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47784
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SavedDialogComponent, isStandalone: false, selector: "rp-saved-dialog", viewQueries: [{ propertyName: "codeInputRef", first: true, predicate: ["codeInput"], descendants: true, static: true }, { propertyName: "codeCopy", first: true, predicate: ["codeCopy"], descendants: true, static: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{'SAVE_SUCCESSFUL' | localize}}!</h1>\r\n<div mat-dialog-content>\r\n <p>{{'THE_SAVE_CODE_FOR_THE_PLAN_IS' | localize}}:\r\n <strong #codeCopy>{{data.code}}</strong>\r\n </p>\r\n <p>{{'MAKE_SURE_TO_STORE_THE_CODE_IN_A_SAFE_PLACE' | localize}}!</p>\r\n<!-- <mat-form-field>-->\r\n<!-- <input-->\r\n<!-- matInput-->\r\n<!-- #codeInput-->\r\n<!-- type=\"text\"-->\r\n<!-- placeholder=\"{{'PLAN_URL' | localize}}\"-->\r\n<!-- [value]=\"planUrl\"-->\r\n<!-- (click)=\"selectUrl()\"-->\r\n<!-- readonly=\"true\"/>-->\r\n<!-- <mat-icon matSuffix (click)=\"copyToClipboard()\">file_copy</mat-icon>-->\r\n<!-- </mat-form-field>-->\r\n</div>\r\n<div mat-dialog-actions fxLayoutAlign=\"end center\">\r\n <button mat-button mat-dialog-close>\r\n {{'OK' | localize}}\r\n </button>\r\n</div>\r\n", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-input-infix{padding-right:8px}\n"], dependencies: [{ 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: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47717
47785
  }
47718
47786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedDialogComponent, decorators: [{
47719
47787
  type: Component,
@@ -47772,30 +47840,27 @@ class SaveDialogComponent {
47772
47840
  this._dialogRef.close();
47773
47841
  this._messageService.emit(MessageType.ShowLoadingIndicator, { title: 'Saving...' });
47774
47842
  try {
47775
- await Promise.all(this.data.presetService.plugins.map(async (plugin) => await plugin.copySceneInstance(asNew)));
47776
- const schema = await this.data.presetService.createState(true);
47777
- if (schema.length > this.permanentStoreService.maxSchemaSize) {
47778
- return this._showError('Your project has gotten too large to be stored in the cloud. Please select "Download a copy" to store your project locally.');
47779
- }
47780
- this._messageService.emit(MessageType.SavePreset);
47781
- const sub = this.permanentStoreService.save(schema, asNew).subscribe(code => {
47843
+ const code = await this.data.presetService.saveToCloud(asNew)
47844
+ .catch((e) => {
47845
+ this._showError(e);
47846
+ return null;
47847
+ });
47848
+ if (code) {
47782
47849
  const data = { code };
47783
- window.localStorage.setItem('lastPlanId', code);
47784
47850
  this._messageService.emit(MessageType.HideLoadingIndicator);
47785
47851
  this._dialog.closeAll();
47786
47852
  this._dialog.open(SavedDialogComponent, { data });
47787
- sub.unsubscribe();
47788
- }, error => {
47789
- console.error('Error occured while saving the plan', error);
47853
+ }
47854
+ else {
47855
+ this._dialog.closeAll();
47856
+ console.error('Error occured while saving the plan');
47790
47857
  this._showError('Error occured while saving the plan. Please check your connection and try again later.');
47791
47858
  this.permanentStoreService.showLocalSave = true;
47792
- sub.unsubscribe();
47793
- });
47859
+ }
47794
47860
  }
47795
47861
  catch (e) {
47796
47862
  console.error('Error occured while saving the plan', e);
47797
47863
  this._messageService.emit(MessageType.HideLoadingIndicator);
47798
- this._dialog.closeAll();
47799
47864
  this._showError('Error occured while saving the plan. Please check your connection and try again later.');
47800
47865
  }
47801
47866
  }
@@ -47813,11 +47878,53 @@ class SaveDialogComponent {
47813
47878
  this._dialog.open(ErrorDialogComponent, { data });
47814
47879
  }
47815
47880
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SaveDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialog }, { token: i1$2.MatDialogRef }, { token: MessageBusService }, { token: HomedecoratorDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
47816
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SaveDialogComponent, isStandalone: false, selector: "rp-save-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{'SAVE_THE_PLAN' | localize}}</h1>\r\n<div mat-dialog-content class=\"dialog-wrapper\" cdkTrapFocus>\r\n <mat-nav-list>\r\n <mat-list-item (click)=\"saveToCloud()\">\r\n <h4 mat-line><strong>{{'SAVE_TO_CLOUD' | localize}}</strong></h4>\r\n <p mat-line class=\"item-description\">{{'ACCESS_THE_PLAN_USING_A_UNIQUE_CODE' | localize}}</p>\r\n </mat-list-item>\r\n @if (wasPlanSaved) {\r\n <mat-list-item (click)=\"saveToCloud(true)\">\r\n <h4 mat-line><strong>{{'SAVE_AS_NEW' | localize}}</strong></h4>\r\n <p mat-line class=\"item-description\">{{'CREATE_A_COPY_OF_THE_PLAN' | localize}}</p>\r\n </mat-list-item>\r\n }\r\n @if (permanentStoreService.code || showLocalSave) {\r\n <button mat-mini-fab class=\"download-button\" (click)=\"download()\">\r\n <co-icon [iconData]=\"iconCache.getIcon(icon.Download)\"></co-icon>\r\n </button>\r\n }\r\n </mat-nav-list>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-content{margin:0;overflow:hidden}:host .mat-mdc-nav-list{display:flex;flex-direction:column}:host .mat-mdc-nav-list .mat-mdc-list-item:not(:last-child){margin-bottom:30px}:host .download-button{box-shadow:none;background-color:#3760a1;display:flex;align-items:center;justify-content:center;align-self:flex-end}:host .download-button ::ng-deep co-icon [fill]{fill:#fff}.mat-mdc-dialog-actions{margin-bottom:0}.item-description{white-space:inherit!important}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SaveDialogComponent, isStandalone: false, selector: "rp-save-dialog", ngImport: i0, template: `
47882
+ <h1 mat-dialog-title>{{'SAVE_THE_PLAN' | localize}}</h1>
47883
+ <div mat-dialog-content class="dialog-wrapper" cdkTrapFocus>
47884
+ <mat-nav-list>
47885
+ <mat-list-item (click)="saveToCloud()">
47886
+ <h4 mat-line><strong>{{'SAVE_TO_CLOUD' | localize}}</strong></h4>
47887
+ <p mat-line class="item-description">{{'ACCESS_THE_PLAN_USING_A_UNIQUE_CODE' | localize}}</p>
47888
+ </mat-list-item>
47889
+ @if (wasPlanSaved) {
47890
+ <mat-list-item (click)="saveToCloud(true)">
47891
+ <h4 mat-line><strong>{{'SAVE_AS_NEW' | localize}}</strong></h4>
47892
+ <p mat-line class="item-description">{{'CREATE_A_COPY_OF_THE_PLAN' | localize}}</p>
47893
+ </mat-list-item>
47894
+ }
47895
+ @if (permanentStoreService.code || showLocalSave) {
47896
+ <button mat-mini-fab class="download-button" (click)="download()">
47897
+ <co-icon [iconData]="iconCache.getIcon(icon.Download)"></co-icon>
47898
+ </button>
47899
+ }
47900
+ </mat-nav-list>
47901
+ </div>
47902
+ `, isInline: true, styles: [":host .mat-mdc-dialog-content{margin:0;overflow:hidden}:host .mat-mdc-nav-list{display:flex;flex-direction:column}:host .mat-mdc-nav-list .mat-mdc-list-item:not(:last-child){margin-bottom:30px}:host .download-button{box-shadow:none;background-color:#3760a1;display:flex;align-items:center;justify-content:center;align-self:flex-end}:host .download-button ::ng-deep co-icon [fill]{fill:#fff}.mat-mdc-dialog-actions{margin-bottom:0}.item-description{white-space:inherit!important}\n"], dependencies: [{ kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i5.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
47817
47903
  }
47818
47904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SaveDialogComponent, decorators: [{
47819
47905
  type: Component,
47820
- args: [{ selector: 'rp-save-dialog', standalone: false, template: "<h1 mat-dialog-title>{{'SAVE_THE_PLAN' | localize}}</h1>\r\n<div mat-dialog-content class=\"dialog-wrapper\" cdkTrapFocus>\r\n <mat-nav-list>\r\n <mat-list-item (click)=\"saveToCloud()\">\r\n <h4 mat-line><strong>{{'SAVE_TO_CLOUD' | localize}}</strong></h4>\r\n <p mat-line class=\"item-description\">{{'ACCESS_THE_PLAN_USING_A_UNIQUE_CODE' | localize}}</p>\r\n </mat-list-item>\r\n @if (wasPlanSaved) {\r\n <mat-list-item (click)=\"saveToCloud(true)\">\r\n <h4 mat-line><strong>{{'SAVE_AS_NEW' | localize}}</strong></h4>\r\n <p mat-line class=\"item-description\">{{'CREATE_A_COPY_OF_THE_PLAN' | localize}}</p>\r\n </mat-list-item>\r\n }\r\n @if (permanentStoreService.code || showLocalSave) {\r\n <button mat-mini-fab class=\"download-button\" (click)=\"download()\">\r\n <co-icon [iconData]=\"iconCache.getIcon(icon.Download)\"></co-icon>\r\n </button>\r\n }\r\n </mat-nav-list>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-content{margin:0;overflow:hidden}:host .mat-mdc-nav-list{display:flex;flex-direction:column}:host .mat-mdc-nav-list .mat-mdc-list-item:not(:last-child){margin-bottom:30px}:host .download-button{box-shadow:none;background-color:#3760a1;display:flex;align-items:center;justify-content:center;align-self:flex-end}:host .download-button ::ng-deep co-icon [fill]{fill:#fff}.mat-mdc-dialog-actions{margin-bottom:0}.item-description{white-space:inherit!important}\n"] }]
47906
+ args: [{ selector: 'rp-save-dialog', template: `
47907
+ <h1 mat-dialog-title>{{'SAVE_THE_PLAN' | localize}}</h1>
47908
+ <div mat-dialog-content class="dialog-wrapper" cdkTrapFocus>
47909
+ <mat-nav-list>
47910
+ <mat-list-item (click)="saveToCloud()">
47911
+ <h4 mat-line><strong>{{'SAVE_TO_CLOUD' | localize}}</strong></h4>
47912
+ <p mat-line class="item-description">{{'ACCESS_THE_PLAN_USING_A_UNIQUE_CODE' | localize}}</p>
47913
+ </mat-list-item>
47914
+ @if (wasPlanSaved) {
47915
+ <mat-list-item (click)="saveToCloud(true)">
47916
+ <h4 mat-line><strong>{{'SAVE_AS_NEW' | localize}}</strong></h4>
47917
+ <p mat-line class="item-description">{{'CREATE_A_COPY_OF_THE_PLAN' | localize}}</p>
47918
+ </mat-list-item>
47919
+ }
47920
+ @if (permanentStoreService.code || showLocalSave) {
47921
+ <button mat-mini-fab class="download-button" (click)="download()">
47922
+ <co-icon [iconData]="iconCache.getIcon(icon.Download)"></co-icon>
47923
+ </button>
47924
+ }
47925
+ </mat-nav-list>
47926
+ </div>
47927
+ `, standalone: false, styles: [":host .mat-mdc-dialog-content{margin:0;overflow:hidden}:host .mat-mdc-nav-list{display:flex;flex-direction:column}:host .mat-mdc-nav-list .mat-mdc-list-item:not(:last-child){margin-bottom:30px}:host .download-button{box-shadow:none;background-color:#3760a1;display:flex;align-items:center;justify-content:center;align-self:flex-end}:host .download-button ::ng-deep co-icon [fill]{fill:#fff}.mat-mdc-dialog-actions{margin-bottom:0}.item-description{white-space:inherit!important}\n"] }]
47821
47928
  }], ctorParameters: () => [{ type: undefined, decorators: [{
47822
47929
  type: Inject,
47823
47930
  args: [MAT_DIALOG_DATA]
@@ -48118,7 +48225,7 @@ class PdfCropDialogComponent {
48118
48225
  });
48119
48226
  }
48120
48227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PdfCropDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }, { token: i1$2.MatDialog }, { token: MessageBusService }], target: i0.ɵɵFactoryTarget.Component }); }
48121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: PdfCropDialogComponent, isStandalone: false, selector: "rp-draw-dialog", viewQueries: [{ propertyName: "pdfComponent", first: true, predicate: ["pdf"], descendants: true, read: PdfViewerComponent }, { propertyName: "pdfContainer", first: true, predicate: ["pdfcontainer"], descendants: true, read: HTMLElement }, { propertyName: "hiddenImage", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{ 'OPEN_A_DIAGRAM' | localize }}</h1>\r\n<div mat-dialog-content class=\"dialog-wrapper\" cdkTrapFocus>\r\n <div class=\"model-header-container\">\r\n <button (click)=\"crop()\" title=\"Continue\">\r\n <mat-icon class=\"homedecorator-material-icons\">check</mat-icon>\r\n </button>\r\n </div>\r\n\r\n\r\n <div #pdfcontainer class=\"pdf-container top-margin\">\r\n <pdf-viewer\r\n #pdf\r\n [(src)]=\"pdfSrc\"\r\n [render-text]=\"true\"\r\n [autoresize]=\"true\"\r\n (page-rendered)=\"pageRendered()\"\r\n style=\"position: relative; min-height: 80vh; min-width: 80vw; display: block\">\r\n </pdf-viewer>\r\n </div>\r\n</div>\r\n", styles: [".model-header-container{display:flex;justify-content:center}.model-header-container button{cursor:pointer;color:#000;background:#fff;border:1px solid #dddddd;border-radius:3px;box-sizing:border-box;padding:5px}.model-header-container button:hover{background:#da9803;color:#fff}\n"], dependencies: [{ kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4$3.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
48228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: PdfCropDialogComponent, isStandalone: false, selector: "rp-draw-dialog", viewQueries: [{ propertyName: "pdfComponent", first: true, predicate: ["pdf"], descendants: true, read: PdfViewerComponent }, { propertyName: "pdfContainer", first: true, predicate: ["pdfcontainer"], descendants: true, read: HTMLElement }, { propertyName: "hiddenImage", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{ 'OPEN_A_DIAGRAM' | localize }}</h1>\r\n<div mat-dialog-content class=\"dialog-wrapper\" cdkTrapFocus>\r\n <div class=\"model-header-container\">\r\n <button (click)=\"crop()\" title=\"Continue\">\r\n <mat-icon class=\"homedecorator-material-icons\">check</mat-icon>\r\n </button>\r\n </div>\r\n\r\n\r\n <div #pdfcontainer class=\"pdf-container top-margin\">\r\n <pdf-viewer\r\n #pdf\r\n [(src)]=\"pdfSrc\"\r\n [render-text]=\"true\"\r\n [autoresize]=\"true\"\r\n (page-rendered)=\"pageRendered()\"\r\n style=\"position: relative; min-height: 80vh; min-width: 80vw; display: block\">\r\n </pdf-viewer>\r\n </div>\r\n</div>\r\n", styles: [".model-header-container{display:flex;justify-content:center}.model-header-container button{cursor:pointer;color:#000;background:#fff;border:1px solid #dddddd;border-radius:3px;box-sizing:border-box;padding:5px}.model-header-container button:hover{background:#da9803;color:#fff}\n"], dependencies: [{ kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4$2.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
48122
48229
  }
48123
48230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PdfCropDialogComponent, decorators: [{
48124
48231
  type: Component,
@@ -48316,7 +48423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
48316
48423
  class ToolbarComponent {
48317
48424
  handleKeyDown(event) {
48318
48425
  if (event.ctrlKey && event.shiftKey && event.key === 'S') {
48319
- this._showSaveDialog(false, false);
48426
+ this.handleSave();
48320
48427
  }
48321
48428
  }
48322
48429
  get fullscreen() {
@@ -48350,6 +48457,7 @@ class ToolbarComponent {
48350
48457
  this._homedecoratorEventService = _homedecoratorEventService;
48351
48458
  this.shareButton = false;
48352
48459
  this.externalSave = new EventEmitter();
48460
+ this.externalOpen = new EventEmitter();
48353
48461
  this.toastType = ToastType;
48354
48462
  this.messageType = MessageType;
48355
48463
  this.icons = IconEnum;
@@ -48361,7 +48469,9 @@ class ToolbarComponent {
48361
48469
  this.timeLeft = 900;
48362
48470
  this.tooltipDisabled = true;
48363
48471
  this.badgeDisabled = true;
48364
- this.useExternalOpenSave = false;
48472
+ this.useExternalSave = false;
48473
+ this.useExternalOpen = false;
48474
+ this.shadowSaveToCloud = false;
48365
48475
  this.enableSlowConnectionWarning = false;
48366
48476
  this.connectionStatus = '4g';
48367
48477
  this._subs = [];
@@ -48373,7 +48483,9 @@ class ToolbarComponent {
48373
48483
  }
48374
48484
  ngOnInit() {
48375
48485
  this.enableSlowConnectionWarning = this.settingsService.settings.options.showSlowConnectionWarning;
48376
- this.useExternalOpenSave = this.settingsService.settings.options.useExternalOpenSave;
48486
+ this.useExternalSave = this.settingsService.settings.options.useExternalSave;
48487
+ this.useExternalOpen = this.settingsService.settings.options.useExternalOpen;
48488
+ this.shadowSaveToCloud = this.settingsService.settings.options.shadowSaveToCloud;
48377
48489
  }
48378
48490
  ngOnDestroy() {
48379
48491
  this._subs.forEach(s => s.unsubscribe());
@@ -48409,16 +48521,28 @@ class ToolbarComponent {
48409
48521
  animateModel(element) {
48410
48522
  this._animationService.playAnimation(element);
48411
48523
  }
48412
- handleExternalSave() {
48413
- this.externalSave.emit();
48524
+ handleSave(saveOnOpen = true) {
48525
+ if (this.useExternalSave) {
48526
+ this.handleExternalSave();
48527
+ }
48528
+ else {
48529
+ this.openSaveDialog();
48530
+ }
48531
+ }
48532
+ async handleExternalSave() {
48533
+ let code;
48534
+ if (this.shadowSaveToCloud) { // save to the cloud first and send code to consumer
48535
+ code = await this.presetsService.saveToCloud().catch(() => undefined);
48536
+ }
48537
+ this.externalSave.emit(code);
48414
48538
  this._stopTimer();
48415
48539
  }
48416
- async openSaveDialog() {
48540
+ async openSaveDialog(saveOnOpen = true) {
48417
48541
  // const schema = this.presetsService.createState();
48418
48542
  // const image: CoDocument = new CoDocument();
48419
48543
  // this.onSaveProject.emit({image: image, schema: schema});
48420
48544
  if (!this._permanentStoreService.code) {
48421
- this._showSaveDialog(false, true);
48545
+ this._showSaveDialog(false, saveOnOpen);
48422
48546
  }
48423
48547
  // if (!this._appService.userRegistered && this._permanentStoreService.code && environment.production && this.settingsService.settings.options.showFormDialog) {
48424
48548
  // const regDialog = this._dialog.open(RegisterDialogComponent, {
@@ -48438,13 +48562,18 @@ class ToolbarComponent {
48438
48562
  this._stopTimer();
48439
48563
  }
48440
48564
  openOpenDialog() {
48441
- this._dialog.open(OpenDialogComponent, {
48442
- data: {
48443
- utilsService: this._utilsService,
48444
- presetService: this.presetsService,
48445
- permanentStoreService: this._permanentStoreService
48446
- }
48447
- });
48565
+ if (this.useExternalOpen) {
48566
+ this.externalOpen.emit();
48567
+ }
48568
+ else {
48569
+ this._dialog.open(OpenDialogComponent, {
48570
+ data: {
48571
+ utilsService: this._utilsService,
48572
+ presetService: this.presetsService,
48573
+ permanentStoreService: this._permanentStoreService
48574
+ }
48575
+ });
48576
+ }
48448
48577
  }
48449
48578
  openShareDialog() {
48450
48579
  this._homedecoratorEventService.shareProject.next();
@@ -48668,7 +48797,7 @@ class ToolbarComponent {
48668
48797
  }
48669
48798
  }
48670
48799
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ToolbarComponent, deps: [{ token: AppStateService }, { token: PresetsService }, { token: MessageBusService }, { token: HomedecoratorSettingsService }, { token: LocalStorageService }, { token: HomedecoratorIconCacheService }, { token: ScreenSizeAnalysisService }, { token: i1$2.MatDialog }, { token: ToastService }, { token: HomedecoratorAppService }, { token: PermanentStoreService }, { token: UtilsService }, { token: ItemService }, { token: FloorService }, { token: AnimationService }, { token: DevelopmentService }, { token: NewRenderService }, { token: ThirdPartyModelService }, { token: LightPresetsService }, { token: HomedecoratorConnectorAdapterService }, { token: ConnectionHeathService }, { token: HomedecoratorAppEventService }], target: i0.ɵɵFactoryTarget.Component }); }
48671
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ToolbarComponent, isStandalone: false, selector: "rp-toolbar", inputs: { shareButton: "shareButton" }, outputs: { externalSave: "externalSave" }, host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, viewQueries: [{ propertyName: "leftSidebar", first: true, predicate: ["leftSidebar"], descendants: true, static: true }], ngImport: i0, template: `
48800
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ToolbarComponent, isStandalone: false, selector: "rp-toolbar", inputs: { shareButton: "shareButton" }, outputs: { externalSave: "externalSave", externalOpen: "externalOpen" }, host: { listeners: { "document:keydown": "handleKeyDown($event)" } }, viewQueries: [{ propertyName: "leftSidebar", first: true, predicate: ["leftSidebar"], descendants: true, static: true }], ngImport: i0, template: `
48672
48801
  <!--
48673
48802
  <div class="layer layer&#45;&#45;toolbar">
48674
48803
  -->
@@ -48767,7 +48896,7 @@ class ToolbarComponent {
48767
48896
  (mousemove)="showBlinkError = false"
48768
48897
  ><span>!</span></div>
48769
48898
  }
48770
- @if (!useExternalOpenSave) {
48899
+ @if (!useExternalSave) {
48771
48900
  <div class="badge-tooltip" [class.blinker]="!showSaveNotification"
48772
48901
  matTooltip="{{'SAVE_THE_PLAN' | localize}}" [matTooltipPosition]="'below'">
48773
48902
  <mat-list-item class="mat-warn"
@@ -48775,7 +48904,7 @@ class ToolbarComponent {
48775
48904
  [matTooltipDisabled]="tooltipDisabled"
48776
48905
  matTooltipClass="tooltip-red"
48777
48906
  role="listitem"
48778
- (click)="openSaveDialog()"
48907
+ (click)="handleSave()"
48779
48908
  >{{ 'SAVE' | localize }}
48780
48909
  </mat-list-item>
48781
48910
  <div
@@ -48789,7 +48918,7 @@ class ToolbarComponent {
48789
48918
  </div>
48790
48919
  </div>
48791
48920
  }
48792
- @if (useExternalOpenSave) {
48921
+ @if (useExternalSave) {
48793
48922
  <div class="badge-tooltip" [class.blinker]="!showSaveNotification"
48794
48923
  matTooltip="{{'SAVE_THE_PLAN' | localize}}" [matTooltipPosition]="'below'">
48795
48924
  <mat-list-item
@@ -48797,7 +48926,7 @@ class ToolbarComponent {
48797
48926
  [matTooltipDisabled]="tooltipDisabled"
48798
48927
  matTooltipClass="tooltip-red"
48799
48928
  role="listitem"
48800
- (click)="handleExternalSave()"
48929
+ (click)="handleSave()"
48801
48930
  >{{ 'SAVE' | localize }}
48802
48931
  </mat-list-item>
48803
48932
  <div
@@ -49037,7 +49166,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49037
49166
  (mousemove)="showBlinkError = false"
49038
49167
  ><span>!</span></div>
49039
49168
  }
49040
- @if (!useExternalOpenSave) {
49169
+ @if (!useExternalSave) {
49041
49170
  <div class="badge-tooltip" [class.blinker]="!showSaveNotification"
49042
49171
  matTooltip="{{'SAVE_THE_PLAN' | localize}}" [matTooltipPosition]="'below'">
49043
49172
  <mat-list-item class="mat-warn"
@@ -49045,7 +49174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49045
49174
  [matTooltipDisabled]="tooltipDisabled"
49046
49175
  matTooltipClass="tooltip-red"
49047
49176
  role="listitem"
49048
- (click)="openSaveDialog()"
49177
+ (click)="handleSave()"
49049
49178
  >{{ 'SAVE' | localize }}
49050
49179
  </mat-list-item>
49051
49180
  <div
@@ -49059,7 +49188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49059
49188
  </div>
49060
49189
  </div>
49061
49190
  }
49062
- @if (useExternalOpenSave) {
49191
+ @if (useExternalSave) {
49063
49192
  <div class="badge-tooltip" [class.blinker]="!showSaveNotification"
49064
49193
  matTooltip="{{'SAVE_THE_PLAN' | localize}}" [matTooltipPosition]="'below'">
49065
49194
  <mat-list-item
@@ -49067,7 +49196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49067
49196
  [matTooltipDisabled]="tooltipDisabled"
49068
49197
  matTooltipClass="tooltip-red"
49069
49198
  role="listitem"
49070
- (click)="handleExternalSave()"
49199
+ (click)="handleSave()"
49071
49200
  >{{ 'SAVE' | localize }}
49072
49201
  </mat-list-item>
49073
49202
  <div
@@ -49209,6 +49338,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49209
49338
  type: Input
49210
49339
  }], externalSave: [{
49211
49340
  type: Output
49341
+ }], externalOpen: [{
49342
+ type: Output
49212
49343
  }], leftSidebar: [{
49213
49344
  type: ViewChild,
49214
49345
  args: ['leftSidebar', { static: true }]
@@ -49895,17 +50026,20 @@ class HomedecoratorComponent {
49895
50026
  }
49896
50027
  }
49897
50028
  }
49898
- async handleExternalSave() {
50029
+ async handleExternalSave(code) {
49899
50030
  try {
49900
50031
  this.controllerService.shouldShowLoader = true;
49901
50032
  const screenShot = this._sceneService.takeScreenshot();
49902
50033
  const json = await this.presetsService.createState(true);
49903
- this._eventService.externalSave.next({ screenShot: screenShot, project: json });
50034
+ this._eventService.externalSave.next({ screenShot: screenShot, project: json, code: code });
49904
50035
  }
49905
50036
  finally {
49906
50037
  this.controllerService.shouldShowLoader = false;
49907
50038
  }
49908
50039
  }
50040
+ async handleExternalOpen() {
50041
+ this._eventService.externalOpen.next();
50042
+ }
49909
50043
  _startWithRoom(switchTo2D) {
49910
50044
  this._eventService.dirty.next(true);
49911
50045
  // Use bogus filename, because it's mandatory. It's not being used anyway when model is provided
@@ -49947,7 +50081,11 @@ class HomedecoratorComponent {
49947
50081
  <rp-furniture-manager></rp-furniture-manager>
49948
50082
  <rp-presets [openNewRoomDialog]="!projectToLoad"></rp-presets>
49949
50083
  <rp-threedselector></rp-threedselector>
49950
- <rp-toolbar [shareButton]="shareButton" (externalSave)="handleExternalSave()"></rp-toolbar>
50084
+ <rp-toolbar
50085
+ [shareButton]="shareButton"
50086
+ (externalSave)="handleExternalSave($event)"
50087
+ (externalOpen)="handleExternalOpen()"
50088
+ ></rp-toolbar>
49951
50089
  <rp-product-catalog
49952
50090
  [generalFilterOrders]="generalFilterOrders"
49953
50091
  [purchaseFilterOrders]="purchaseFilterOrders"
@@ -49972,7 +50110,7 @@ class HomedecoratorComponent {
49972
50110
  </div>
49973
50111
  }
49974
50112
  }
49975
- `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "progress-bar" }, { kind: "component", type: LoadingOverlayComponent, selector: "rp-loading-overlay" }, { kind: "component", type: HdLoaderComponent, selector: "rp-loader", inputs: ["show"] }, { kind: "component", type: Core3dComponent, selector: "rp-core3d" }, { kind: "component", type: RoomPlannerComponent, selector: "rp-room-planner", inputs: ["isLoading"], outputs: ["done", "showPlugin", "focusControls"] }, { kind: "component", type: FurnitureManagerComponent, selector: "rp-furniture-manager" }, { kind: "component", type: PresetsComponent, selector: "rp-presets", inputs: ["openNewRoomDialog"] }, { kind: "component", type: ThreedselectorComponent, selector: "rp-threedselector", inputs: ["selections"], outputs: ["customizeButtonClicked"] }, { kind: "component", type: ToolbarComponent, selector: "rp-toolbar", inputs: ["shareButton"], outputs: ["externalSave"] }, { kind: "component", type: ProductCatalogComponent, selector: "rp-product-catalog", inputs: ["generalFilterOrders", "purchaseFilterOrders", "logisticsFilterOrders"] }, { kind: "component", type: HelpComponent, selector: "rp-help" }, { kind: "component", type: i27.LiteSelectorComponent, selector: "co-lite-selector", inputs: ["showAnswers", "show", "showSelections", "showLabel", "canClose", "animateSlideout", "customDimensions"], outputs: ["showChange", "answerChosen"] }], encapsulation: i0.ViewEncapsulation.None }); }
50113
+ `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "progress-bar" }, { kind: "component", type: LoadingOverlayComponent, selector: "rp-loading-overlay" }, { kind: "component", type: HdLoaderComponent, selector: "rp-loader", inputs: ["show"] }, { kind: "component", type: Core3dComponent, selector: "rp-core3d" }, { kind: "component", type: RoomPlannerComponent, selector: "rp-room-planner", inputs: ["isLoading"], outputs: ["done", "showPlugin", "focusControls"] }, { kind: "component", type: FurnitureManagerComponent, selector: "rp-furniture-manager" }, { kind: "component", type: PresetsComponent, selector: "rp-presets", inputs: ["openNewRoomDialog"] }, { kind: "component", type: ThreedselectorComponent, selector: "rp-threedselector", inputs: ["selections"], outputs: ["customizeButtonClicked"] }, { kind: "component", type: ToolbarComponent, selector: "rp-toolbar", inputs: ["shareButton"], outputs: ["externalSave", "externalOpen"] }, { kind: "component", type: ProductCatalogComponent, selector: "rp-product-catalog", inputs: ["generalFilterOrders", "purchaseFilterOrders", "logisticsFilterOrders"] }, { kind: "component", type: HelpComponent, selector: "rp-help" }, { kind: "component", type: i27.LiteSelectorComponent, selector: "co-lite-selector", inputs: ["show", "showLabel", "canClose", "animateSlideout", "customDimensions"], outputs: ["showChange", "answerChosen"] }], encapsulation: i0.ViewEncapsulation.None }); }
49976
50114
  }
49977
50115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HomedecoratorComponent, decorators: [{
49978
50116
  type: Component,
@@ -49989,7 +50127,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
49989
50127
  <rp-furniture-manager></rp-furniture-manager>
49990
50128
  <rp-presets [openNewRoomDialog]="!projectToLoad"></rp-presets>
49991
50129
  <rp-threedselector></rp-threedselector>
49992
- <rp-toolbar [shareButton]="shareButton" (externalSave)="handleExternalSave()"></rp-toolbar>
50130
+ <rp-toolbar
50131
+ [shareButton]="shareButton"
50132
+ (externalSave)="handleExternalSave($event)"
50133
+ (externalOpen)="handleExternalOpen()"
50134
+ ></rp-toolbar>
49993
50135
  <rp-product-catalog
49994
50136
  [generalFilterOrders]="generalFilterOrders"
49995
50137
  [purchaseFilterOrders]="purchaseFilterOrders"
@@ -51014,7 +51156,7 @@ class EditParameterComponent {
51014
51156
  });
51015
51157
  }
51016
51158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditParameterComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component }); }
51017
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditParameterComponent, isStandalone: false, selector: "rp-edit-parameter", inputs: { minValue: "minValue", value: "value", placeholder: "placeholder" }, outputs: { apply: "apply", cancel: "cancel", change: "change" }, viewQueries: [{ propertyName: "parameterInputRef", first: true, predicate: ["parameterInput"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<table>\r\n <tr>\r\n @if (!isEditing) {\r\n <td>{{value | cmToMeasure}}</td>\r\n }\r\n <td [hidden]=\"!isEditing\">\r\n <input matInput\r\n type=\"number\"\r\n [placeholder]=\"placeholder\"\r\n [min]=\"minValue\"\r\n [(ngModel)]=\"value\"\r\n [step]=\"step\"\r\n (keyup.enter)=\"editApplyParameter.onApply()\"\r\n (keyup.esc)=\"editApplyParameter.onCancel()\"\r\n #parameterInput\r\n > cm<!-- units probably shouldn't be hardcoded -->\r\n </td>\r\n <td>\r\n <rp-edit-apply\r\n [watched]=\"value\"\r\n [disable]=\"value < minValue\"\r\n (apply)=\"onApply()\"\r\n (toggleChange)=\"toggleEditing($event)\"\r\n (cancel)=\"onCancel()\"\r\n #editApplyParameter\r\n >\r\n </rp-edit-apply>\r\n </td>\r\n </tr>\r\n </table>", styles: ["input{width:60px;min-height:28px}table{width:100%}td{text-align:right;line-height:28px}td input{height:26px;padding:0 5px;line-height:26px;min-width:80px;min-height:0;border:1px solid #ddd;border-radius:3px;text-align:right;font-size:16px;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i3$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: "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.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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: EditApplyComponent, selector: "rp-edit-apply", inputs: ["watched", "disable"], outputs: ["cancel", "apply", "toggleChange"] }, { kind: "pipe", type: CmToMeasurePipe, name: "cmToMeasure" }] }); }
51159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EditParameterComponent, isStandalone: false, selector: "rp-edit-parameter", inputs: { minValue: "minValue", value: "value", placeholder: "placeholder" }, outputs: { apply: "apply", cancel: "cancel", change: "change" }, viewQueries: [{ propertyName: "parameterInputRef", first: true, predicate: ["parameterInput"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<table>\r\n <tr>\r\n @if (!isEditing) {\r\n <td>{{value | cmToMeasure}}</td>\r\n }\r\n <td [hidden]=\"!isEditing\">\r\n <input matInput\r\n type=\"number\"\r\n [placeholder]=\"placeholder\"\r\n [min]=\"minValue\"\r\n [(ngModel)]=\"value\"\r\n [step]=\"step\"\r\n (keyup.enter)=\"editApplyParameter.onApply()\"\r\n (keyup.esc)=\"editApplyParameter.onCancel()\"\r\n #parameterInput\r\n > cm<!-- units probably shouldn't be hardcoded -->\r\n </td>\r\n <td>\r\n <rp-edit-apply\r\n [watched]=\"value\"\r\n [disable]=\"value < minValue\"\r\n (apply)=\"onApply()\"\r\n (toggleChange)=\"toggleEditing($event)\"\r\n (cancel)=\"onCancel()\"\r\n #editApplyParameter\r\n >\r\n </rp-edit-apply>\r\n </td>\r\n </tr>\r\n </table>", styles: ["input{width:60px;min-height:28px}table{width:100%}td{text-align:right;line-height:28px}td input{height:26px;padding:0 5px;line-height:26px;min-width:80px;min-height:0;border:1px solid #ddd;border-radius:3px;text-align:right;font-size:16px;box-sizing:border-box}\n"], dependencies: [{ 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: "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.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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: EditApplyComponent, selector: "rp-edit-apply", inputs: ["watched", "disable"], outputs: ["cancel", "apply", "toggleChange"] }, { kind: "pipe", type: CmToMeasurePipe, name: "cmToMeasure" }] }); }
51018
51160
  }
51019
51161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditParameterComponent, decorators: [{
51020
51162
  type: Component,
@@ -51804,7 +51946,7 @@ class CameraSettingsDialogComponent {
51804
51946
  <button mat-raised-button color="primary" (click)="exportSettings()">{{'EXPORT_SETTINGS' | localize}}</button>
51805
51947
  </div>
51806
51948
  </div>
51807
- `, isInline: true, styles: [":host .dialog-form-wrapper{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr 1fr 1fr 1fr;gap:0 15px;grid-template-areas:\". .\" \". .\" \". .\" \". .\" \". .\"}:host .input-button-wrapper{display:flex;align-items:center;justify-content:space-between}:host .input-button-wrapper button{margin-bottom:21.5px;margin-right:10px}:host .input-button-wrapper .mat-mdc-form-field{width:200px}\n"], dependencies: [{ kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "directive", type: i3$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: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
51949
+ `, isInline: true, styles: [":host .dialog-form-wrapper{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr 1fr 1fr 1fr;gap:0 15px;grid-template-areas:\". .\" \". .\" \". .\" \". .\" \". .\"}:host .input-button-wrapper{display:flex;align-items:center;justify-content:space-between}:host .input-button-wrapper button{margin-bottom:21.5px;margin-right:10px}:host .input-button-wrapper .mat-mdc-form-field{width:200px}\n"], dependencies: [{ kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "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: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
51808
51950
  }
51809
51951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CameraSettingsDialogComponent, decorators: [{
51810
51952
  type: Component,
@@ -52108,7 +52250,7 @@ class ViewControlComponent {
52108
52250
  <button mat-raised-button color="primary" (click)="changeImage()">{{'CHANGE_IMAGE'}}</button>
52109
52251
  </div>
52110
52252
  </div>
52111
- `, isInline: true, styles: [":host .dialog-form-wrapper{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr 1fr;gap:0 15px;grid-template-areas:\". .\" \". .\" \". .\"}:host .dialog-form-wrapper .mat-mdc-form-field{width:168px}:host .input-button-wrapper{display:flex;align-items:center;justify-content:space-between}:host .input-button-wrapper button{margin-bottom:21.5px;margin-right:10px}:host .input-button-wrapper .mat-mdc-form-field{width:100px}:host .buttons-wrapper{justify-content:space-between}:host h1{cursor:move}\n"], dependencies: [{ 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "directive", type: i3$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: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i6$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
52253
+ `, isInline: true, styles: [":host .dialog-form-wrapper{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr 1fr;gap:0 15px;grid-template-areas:\". .\" \". .\" \". .\"}:host .dialog-form-wrapper .mat-mdc-form-field{width:168px}:host .input-button-wrapper{display:flex;align-items:center;justify-content:space-between}:host .input-button-wrapper button{margin-bottom:21.5px;margin-right:10px}:host .input-button-wrapper .mat-mdc-form-field{width:100px}:host .buttons-wrapper{justify-content:space-between}:host h1{cursor:move}\n"], dependencies: [{ 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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "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: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
52112
52254
  }
52113
52255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ViewControlComponent, decorators: [{
52114
52256
  type: Component,
@@ -52333,7 +52475,7 @@ class RegisterDialogComponent {
52333
52475
  useExisting: forwardRef(() => RegisterDialogComponent),
52334
52476
  multi: true
52335
52477
  }
52336
- ], viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<h1 mat-dialog-title [textContent]=\"'PLEASE_REGISTER' | localize\"></h1>\r\n<span class=\"registration-description\" [textContent]=\"'REGISTRATION_DESCRIPTION' | localize\"></span>\r\n<div mat-dialog-content class=\"dialog-content\" fxLayout=\"column\" cdkTrapFocus>\r\n <form #form=\"ngForm\" id=\"ngForm\" (ngSubmit)=\"submitForm(form.value)\">\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'NAME'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'NAME' | localize\" ngModel required name=\"Voornaam\">\r\n </mat-form-field>\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'LAST_NAME'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'LAST_NAME' | localize\" ngModel required name=\"Achternaam\">\r\n </mat-form-field>\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'EMAIL'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'EMAIL' | localize\" ngModel name=\"Email\">\r\n </mat-form-field>\r\n </form>\r\n <mat-dialog-actions align=\"end\">\r\n <button class=\"mat-raised-button\" type=\"submit\" form=\"ngForm\" [disabled]=\"!form.form.valid || saving\"\r\n [textContent]=\"'SAVE' | localize\"></button>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\" [textContent]=\"'CANCEL' | localize\" [disabled]=\"saving\"></button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [":host ::ng-deep co-input-text.invalid.form-submitted{color:#22313c;background:#fff}:host .cdk-overlay-pane{max-width:60vw}:host .dialog-content{padding:24px}:host .form-full-width{display:flex}:host ::ng-deep .mat-mdc-form-field-wrapper{width:100%}\n"], dependencies: [{ kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3$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: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
52478
+ ], viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<h1 mat-dialog-title [textContent]=\"'PLEASE_REGISTER' | localize\"></h1>\r\n<span class=\"registration-description\" [textContent]=\"'REGISTRATION_DESCRIPTION' | localize\"></span>\r\n<div mat-dialog-content class=\"dialog-content\" fxLayout=\"column\" cdkTrapFocus>\r\n <form #form=\"ngForm\" id=\"ngForm\" (ngSubmit)=\"submitForm(form.value)\">\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'NAME'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'NAME' | localize\" ngModel required name=\"Voornaam\">\r\n </mat-form-field>\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'LAST_NAME'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'LAST_NAME' | localize\" ngModel required name=\"Achternaam\">\r\n </mat-form-field>\r\n <mat-form-field class=\"form-full-width\" disabled=\"saving\">\r\n <mat-label [textContent]=\"'EMAIL'| localize\"></mat-label>\r\n <input matInput [placeholder]=\"'EMAIL' | localize\" ngModel name=\"Email\">\r\n </mat-form-field>\r\n </form>\r\n <mat-dialog-actions align=\"end\">\r\n <button class=\"mat-raised-button\" type=\"submit\" form=\"ngForm\" [disabled]=\"!form.form.valid || saving\"\r\n [textContent]=\"'SAVE' | localize\"></button>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\" [textContent]=\"'CANCEL' | localize\" [disabled]=\"saving\"></button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [":host ::ng-deep co-input-text.invalid.form-submitted{color:#22313c;background:#fff}:host .cdk-overlay-pane{max-width:60vw}:host .dialog-content{padding:24px}:host .form-full-width{display:flex}:host ::ng-deep .mat-mdc-form-field-wrapper{width:100%}\n"], dependencies: [{ kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { 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: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
52337
52479
  }
52338
52480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RegisterDialogComponent, decorators: [{
52339
52481
  type: Component,