@colijnit/homedecorator 255.1.4 → 255.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/core/enum/message-type.enum.d.ts +3 -1
- package/app/core/interface/message-with-payload.interface.d.ts +6 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
- package/app/core/service/homedecorator-connector.service.d.ts +5 -4
- package/app/core/service/presets.service.d.ts +3 -1
- package/app/homedecorator.component.d.ts +3 -1
- package/app/plugins/core3d/service/floor.service.d.ts +3 -1
- package/app/plugins/core3d/service/post-processing.service.d.ts +16 -4
- package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +10 -2
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +180 -15
- package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +0 -3
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
- package/assets/icons/dash-button.svg +7 -0
- package/assets/icons/pen-ruler.svg +1 -0
- package/assets/icons/retry-button.svg +7 -0
- package/bundles/colijnit-homedecorator.umd.js +514 -423
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/app.version.js +3 -3
- package/esm2015/app/core/enum/message-type.enum.js +3 -1
- package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
- package/esm2015/app/core/service/3dm-api.js +4 -4
- package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
- package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
- package/esm2015/app/core/service/presets.service.js +13 -5
- package/esm2015/app/core/utils/material.utils.js +3 -3
- package/esm2015/app/homedecorator.component.js +25 -19
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
- package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +2 -2
- package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
- package/esm2015/app/plugins/core3d/service/post-processing.service.js +96 -35
- package/esm2015/app/plugins/core3d/service/scene.service.js +17 -11
- package/esm2015/app/plugins/core3d/service/ssr.service.js +1 -52
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +264 -168
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +24 -12
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +4 -15
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
- package/fesm2015/colijnit-homedecorator.js +682 -483
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,6 +23,8 @@ import { ExternalSource } from '@colijnit/articleapi/build/model/external-source
|
|
|
23
23
|
import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
|
|
24
24
|
import { ArticleCategory } from '@colijnit/configuratorapi/build/model/article-category';
|
|
25
25
|
import { ArticleFlat } from '@colijnit/articleapi/build/model/article-flat.bo';
|
|
26
|
+
import { CoDomainValue } from '@colijnit/mainapi/build/model/co-domain-value.bo';
|
|
27
|
+
import { DomainName } from '@colijnit/mainapi/build/enum/domain-name.enum';
|
|
26
28
|
import { InternalParam } from '@colijnit/mainapi/build/enum/internal-param.enum';
|
|
27
29
|
import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
|
|
28
30
|
import { ImageUtils as ImageUtils$2 } from '@colijnit/configuratorapi/build/utils/image-utils';
|
|
@@ -31,7 +33,7 @@ import { HttpHeaders } from '@angular/common/http';
|
|
|
31
33
|
import axios from 'axios';
|
|
32
34
|
import * as applyPatch from 'textdiff-patch';
|
|
33
35
|
import * as THREE from 'three';
|
|
34
|
-
import { Vector2, Material as Material$1, Object3D, Mesh, Vector3, Scene, EventDispatcher, PerspectiveCamera, Box3, PlaneGeometry, MeshBasicMaterial, DoubleSide, MeshStandardMaterial, CylinderGeometry, RingGeometry, Matrix4, Raycaster, PointLight, Euler, BoxGeometry, WebGLRenderTarget, NearestFilter, RGBAFormat, SRGBColorSpace, AxesHelper, Group, BufferGeometry, Line, DataTexture, LuminanceAlphaFormat, UnsignedByteType, LinearFilter, Shape, SphereGeometry, PCFSoftShadowMap, ShadowMaterial, LightProbe, Texture as Texture$1, DirectionalLight, MeshPhongMaterial,
|
|
36
|
+
import { Vector2, Material as Material$1, Object3D, Mesh, Vector3, Scene, EventDispatcher, PerspectiveCamera, Box3, PlaneGeometry, MeshBasicMaterial, DoubleSide, MeshStandardMaterial, CylinderGeometry, RingGeometry, Matrix4, Raycaster, PointLight, Euler, BoxGeometry, WebGLRenderTarget, NearestFilter, RGBAFormat, SRGBColorSpace, AxesHelper, Group, BufferGeometry, Line, DataTexture, LuminanceAlphaFormat, UnsignedByteType, LinearFilter, Shape, SphereGeometry, PCFSoftShadowMap, ShadowMaterial, LightProbe, Texture as Texture$1, DirectionalLight, MeshPhongMaterial, HalfFloatType, Color, OrthographicCamera, WebGLRenderer, NoToneMapping, TextureLoader, EllipseCurve, ArcCurve, BufferAttribute, MeshPhysicalMaterial, Quaternion, Path, ShapeGeometry, BasicShadowMap, PCFShadowMap, VSMShadowMap, LinearSRGBColorSpace, Float32BufferAttribute, LineBasicMaterial, EquirectangularReflectionMapping, FrontSide, AdditiveBlending, LineSegments, EdgesGeometry, CircleGeometry, MathUtils, ObjectLoader, Light, Camera as Camera$1, RepeatWrapping, InstancedMesh, UVMapping, CubeReflectionMapping, CubeRefractionMapping, EquirectangularRefractionMapping, CubeUVReflectionMapping, NearestMipmapNearestFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipMapLinearFilter, LinearMipmapNearestFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipMapLinearFilter, AlphaFormat, LuminanceFormat, DepthFormat, DepthStencilFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, ByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, 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, BackSide, ZeroStencilOp, KeepStencilOp, ReplaceStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp, InvertStencilOp, NeverStencilFunc, LessStencilFunc, EqualStencilFunc, LessEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc, GreaterEqualStencilFunc, AlwaysStencilFunc, Source, SpotLight, AmbientLight, HemisphereLight, SpotLightHelper, DirectionalLightHelper, HemisphereLightHelper, PointLightHelper, CanvasTexture, Clock, AnimationMixer, AnimationClip, NoColorSpace, ArrowHelper, GridHelper, PMREMGenerator, BoxHelper } from 'three';
|
|
35
37
|
import * as TWEEN from '@tweenjs/tween.js';
|
|
36
38
|
import * as PolygonTools from 'polygon-tools';
|
|
37
39
|
import { WebGLPathTracer } from 'three-gpu-pathtracer';
|
|
@@ -46,10 +48,9 @@ import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
|
|
|
46
48
|
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
|
|
47
49
|
import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader';
|
|
48
50
|
import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass';
|
|
49
|
-
import * as md5 from 'md5';
|
|
50
51
|
import GUI from 'three/examples/jsm/libs/lil-gui.module.min';
|
|
51
52
|
import { N8AOPass } from 'n8ao';
|
|
52
|
-
import {
|
|
53
|
+
import { BlendShader } from 'three/examples/jsm/shaders/BlendShader';
|
|
53
54
|
import * as i1 from '@angular/platform-browser';
|
|
54
55
|
import * as i2$1 from 'ngx-device-detector';
|
|
55
56
|
import * as i5$1 from '@angular/material/icon';
|
|
@@ -92,7 +93,7 @@ import * as i4 from '@colijnit/corecomponents';
|
|
|
92
93
|
import { IconModule, CardModule, SlideoutModule, SummaryLineModule, PriceDisplayPipeModule, ButtonModule, HtmlHeaderModule, InputTextModule, InputTextChipsModule } from '@colijnit/corecomponents';
|
|
93
94
|
import * as i7 from '@angular/material/form-field';
|
|
94
95
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
95
|
-
import * as
|
|
96
|
+
import * as i12 from '@angular/material/select';
|
|
96
97
|
import { MatSelectModule } from '@angular/material/select';
|
|
97
98
|
import * as i10 from '@angular/material/tooltip';
|
|
98
99
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
@@ -106,14 +107,14 @@ import * as dat from 'dat.gui';
|
|
|
106
107
|
import { Service, Command } from '@migenius/realityserver-client';
|
|
107
108
|
import * as i3$2 from '@angular/material/grid-list';
|
|
108
109
|
import { MatGridListModule } from '@angular/material/grid-list';
|
|
109
|
-
import * as
|
|
110
|
+
import * as i16 from '@angular/material/progress-spinner';
|
|
110
111
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
111
112
|
import * as i3$3 from '@angular/flex-layout/flex';
|
|
112
113
|
import * as i2$3 from '@angular/material/progress-bar';
|
|
113
114
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
114
115
|
import { DecalGeometry } from 'three/examples/jsm/geometries/DecalGeometry';
|
|
115
116
|
import { fabric } from 'fabric';
|
|
116
|
-
import * as
|
|
117
|
+
import * as i8$1 from '@angular/material/button-toggle';
|
|
117
118
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
118
119
|
import * as i2$4 from '@angular/material/snack-bar';
|
|
119
120
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
@@ -140,8 +141,6 @@ import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
|
|
|
140
141
|
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
|
|
141
142
|
import { TDSLoader } from 'three/examples/jsm/loaders/TDSLoader';
|
|
142
143
|
import { STLLoader } from 'three/examples/jsm/loaders/STLLoader';
|
|
143
|
-
import * as i9$1 from '@angular/material/radio';
|
|
144
|
-
import { MatRadioModule } from '@angular/material/radio';
|
|
145
144
|
import * as i19$1 from '@angular/material/toolbar';
|
|
146
145
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
147
146
|
import * as i22 from '@angular/material/menu';
|
|
@@ -153,7 +152,7 @@ import { MatSidenavModule } from '@angular/material/sidenav';
|
|
|
153
152
|
import * as i30 from '@angular/material/badge';
|
|
154
153
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
155
154
|
import { ExternalCatalogStartupInfoRequest } from '@colijnit/articleapi/build/model/external-catalog-startup-info-request';
|
|
156
|
-
import * as i7$
|
|
155
|
+
import * as i7$2 from '@colijnit/catalog';
|
|
157
156
|
import { CatalogSearchModule, CatalogExternalSourcesModule, CatalogExternalSourceModule } from '@colijnit/catalog';
|
|
158
157
|
import * as i1$5 from 'ngx-lightbox';
|
|
159
158
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
@@ -161,6 +160,7 @@ import * as i10$2 from '@angular/cdk/drag-drop';
|
|
|
161
160
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
162
161
|
import { jsPDF } from 'jspdf';
|
|
163
162
|
import autoTable from 'jspdf-autotable';
|
|
163
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
164
164
|
|
|
165
165
|
var MessageType;
|
|
166
166
|
(function (MessageType) {
|
|
@@ -231,6 +231,8 @@ var MessageType;
|
|
|
231
231
|
MessageType["StartCroppingPDF"] = "StartCroppingPDF";
|
|
232
232
|
MessageType["BlenderRenderFileReady"] = "BlenderRenderFileReady";
|
|
233
233
|
MessageType["UserModelUploaded"] = "UserModelUploaded";
|
|
234
|
+
MessageType["ChangeTexture"] = "ChangeTexture";
|
|
235
|
+
MessageType["RenderError"] = "RenderError";
|
|
234
236
|
})(MessageType || (MessageType = {}));
|
|
235
237
|
|
|
236
238
|
class Preset {
|
|
@@ -333,6 +335,7 @@ class HomedecoratorAppEventService {
|
|
|
333
335
|
this.objectMovingOrRotating = new Subject();
|
|
334
336
|
this.addToCart = new Subject();
|
|
335
337
|
this.addExternalSourceToCart = new Subject();
|
|
338
|
+
this.dirty = new Subject();
|
|
336
339
|
}
|
|
337
340
|
}
|
|
338
341
|
HomedecoratorAppEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorAppEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -344,7 +347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
344
347
|
}]
|
|
345
348
|
}] });
|
|
346
349
|
|
|
347
|
-
var __awaiter$
|
|
350
|
+
var __awaiter$1m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
348
351
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
349
352
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
350
353
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -395,7 +398,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
395
398
|
}
|
|
396
399
|
}
|
|
397
400
|
initConnector(options, externalSource, forceReload, externalSourceId) {
|
|
398
|
-
return __awaiter$
|
|
401
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
399
402
|
if (externalSource === undefined || externalSource === null) {
|
|
400
403
|
const renewConnector = (this._connector ? this._connector.url !== options.url : false) || forceReload;
|
|
401
404
|
if (!this._connector || renewConnector) {
|
|
@@ -415,6 +418,8 @@ class HomedecoratorConnectorAdapterService {
|
|
|
415
418
|
else {
|
|
416
419
|
if (!this.connectors.hasOwnProperty(externalSource)) {
|
|
417
420
|
if (externalSourceId !== null) {
|
|
421
|
+
// make sure to set this.externalSource = undefined to get the data of the HOST and not the previous external source
|
|
422
|
+
this.externalSource = undefined;
|
|
418
423
|
const externalSourceData = yield this.getExternalSource(externalSourceId);
|
|
419
424
|
if (externalSourceData !== null) {
|
|
420
425
|
if (externalSourceData.password !== undefined && externalSourceData.username !== undefined) {
|
|
@@ -453,7 +458,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
453
458
|
});
|
|
454
459
|
}
|
|
455
460
|
logOut() {
|
|
456
|
-
return __awaiter$
|
|
461
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
457
462
|
yield this.connector.logOut();
|
|
458
463
|
});
|
|
459
464
|
}
|
|
@@ -481,7 +486,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
481
486
|
return 2;
|
|
482
487
|
}
|
|
483
488
|
getWebViewStartupInfo(request) {
|
|
484
|
-
return __awaiter$
|
|
489
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
485
490
|
// @ts-ignore
|
|
486
491
|
const response = yield this.articleApi.getWebviewStartupInfo(request);
|
|
487
492
|
if (response && response.validationResult && response.validationResult.success) {
|
|
@@ -493,7 +498,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
493
498
|
});
|
|
494
499
|
}
|
|
495
500
|
getGoodIdFromArticleNr(sku) {
|
|
496
|
-
return __awaiter$
|
|
501
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
497
502
|
const response = yield this.articleApi.getGoodIdFromArticleNr(sku);
|
|
498
503
|
if (response && response.validationResult && response.validationResult.success) {
|
|
499
504
|
return response.resultObject;
|
|
@@ -513,7 +518,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
513
518
|
return this.connector.copyInstance(instanceId, shouldSaveCurrentInstanceId);
|
|
514
519
|
}
|
|
515
520
|
saveConfigurations() {
|
|
516
|
-
return __awaiter$
|
|
521
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
517
522
|
yield this.connector.saveConfigurations().catch((e) => {
|
|
518
523
|
return false;
|
|
519
524
|
});
|
|
@@ -531,7 +536,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
531
536
|
}
|
|
532
537
|
// @returns The initial article
|
|
533
538
|
getArticle(sku, branch) {
|
|
534
|
-
return __awaiter$
|
|
539
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
535
540
|
const goodId = yield this.getGoodIdFromArticleNr(sku);
|
|
536
541
|
if (goodId) {
|
|
537
542
|
return this.getArticleQuickSel(goodId, branch);
|
|
@@ -540,7 +545,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
540
545
|
});
|
|
541
546
|
}
|
|
542
547
|
getArticleQuickSel(goodId, branch) {
|
|
543
|
-
return __awaiter$
|
|
548
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
544
549
|
const response = yield this.articleApi.getArticleQuickSel(goodId, branch);
|
|
545
550
|
if (response && response.validationResult && response.validationResult.success) {
|
|
546
551
|
return this._boFactory.makeWithRawBackendData(Article, response.resultObject.oArticle[0]);
|
|
@@ -558,7 +563,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
558
563
|
return this.connector.getQuestionAndAnswers();
|
|
559
564
|
}
|
|
560
565
|
getSelectionsAsync() {
|
|
561
|
-
return __awaiter$
|
|
566
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
562
567
|
const response = yield this.connector.getSelections();
|
|
563
568
|
if (response && response.validationResult && response.validationResult.success) {
|
|
564
569
|
return this._boFactory.makeBOArrayFromRawBackendDataArray(Selection, response.resultObjects);
|
|
@@ -567,7 +572,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
567
572
|
});
|
|
568
573
|
}
|
|
569
574
|
getDecosAsync() {
|
|
570
|
-
return __awaiter$
|
|
575
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
571
576
|
const response = yield this.connector.getDecos();
|
|
572
577
|
if (response && response.validationResult && response.validationResult.success) {
|
|
573
578
|
return this._boFactory.makeBOArrayFromRawBackendDataArray(DecoNode, response.resultObjects);
|
|
@@ -576,7 +581,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
576
581
|
});
|
|
577
582
|
}
|
|
578
583
|
getAnswerPrices() {
|
|
579
|
-
return __awaiter$
|
|
584
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
580
585
|
const response = yield this.connector.getAnswersPrices();
|
|
581
586
|
if (response && response.validationResult && response.validationResult.success) {
|
|
582
587
|
return this._boFactory.makeBOArrayFromRawBackendDataArray(AnswerPrice, response.resultObjects);
|
|
@@ -585,13 +590,14 @@ class HomedecoratorConnectorAdapterService {
|
|
|
585
590
|
});
|
|
586
591
|
}
|
|
587
592
|
getJsonConfiguredArticles(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
|
|
588
|
-
|
|
593
|
+
// @ts-ignore
|
|
594
|
+
return this.articleApi.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId.toString(), configuratorStatistics);
|
|
589
595
|
}
|
|
590
596
|
// public getJsonMatchTableArticles(): Promise<void> {
|
|
591
597
|
// return this.connector.getJsonMatchTableArticles();
|
|
592
598
|
// }
|
|
593
599
|
setInstanceToConfigure(id) {
|
|
594
|
-
return __awaiter$
|
|
600
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
595
601
|
if (id !== null) {
|
|
596
602
|
return this.connector.setInstanceToConfigure(id);
|
|
597
603
|
}
|
|
@@ -601,7 +607,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
601
607
|
});
|
|
602
608
|
}
|
|
603
609
|
selectAnswer(answer, userInput) {
|
|
604
|
-
return __awaiter$
|
|
610
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
605
611
|
return this.connector.selectAnswer(answer, false, userInput);
|
|
606
612
|
});
|
|
607
613
|
}
|
|
@@ -618,7 +624,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
618
624
|
return this.connector.replaceSelection(selection);
|
|
619
625
|
}
|
|
620
626
|
getImageForAnswerOrSelection(answerOrSelection, publication, thumbNail = true, showLoader = true) {
|
|
621
|
-
return __awaiter$
|
|
627
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
622
628
|
const response = yield this.articleApi.getSingleImage(answerOrSelection.nodeId, publication, true, thumbNail);
|
|
623
629
|
if (response && response.validationResult && response.validationResult.success && response.resultObject) {
|
|
624
630
|
if (response.resultObject.filePath !== null && response.resultObject.filePath !== undefined && response.resultObject.filePath !== '') {
|
|
@@ -634,7 +640,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
634
640
|
});
|
|
635
641
|
}
|
|
636
642
|
getSkipButtonImageAndText(goodId) {
|
|
637
|
-
return __awaiter$
|
|
643
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
638
644
|
const response = yield this.connector.getSkipButtonImageAndText(goodId, false);
|
|
639
645
|
if (response && response.validationResult && response.validationResult.success) {
|
|
640
646
|
return this._boFactory.makeWithRawBackendData(SkipButtonInfo, response.resultObject);
|
|
@@ -646,7 +652,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
646
652
|
return this.getImageForAnswerOrSelection(answerOrSelection, 32);
|
|
647
653
|
}
|
|
648
654
|
getAnswerInfo(answer) {
|
|
649
|
-
return __awaiter$
|
|
655
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
650
656
|
const response = yield this.connector.getAnswerTexts(answer.nodeId, false);
|
|
651
657
|
if (response && response.validationResult && response.validationResult.success) {
|
|
652
658
|
return this._boFactory.makeBOArrayFromRawBackendDataArray(ArticleText, response.resultObject);
|
|
@@ -655,7 +661,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
655
661
|
});
|
|
656
662
|
}
|
|
657
663
|
getInternalParameter(parameter) {
|
|
658
|
-
return __awaiter$
|
|
664
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
659
665
|
const response = yield this.mainApi.getInternalParameterValue(parameter);
|
|
660
666
|
if (response && response.validationResult && response.validationResult.success) {
|
|
661
667
|
return response.resultObject;
|
|
@@ -666,18 +672,24 @@ class HomedecoratorConnectorAdapterService {
|
|
|
666
672
|
});
|
|
667
673
|
}
|
|
668
674
|
store3DModelCDN(filename, fileContents) {
|
|
669
|
-
return __awaiter$
|
|
675
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
670
676
|
const response = yield this.mainApi.uploadModelToCDN(filename, fileContents);
|
|
671
677
|
if (response && response.validationResult && response.validationResult.success) {
|
|
672
678
|
return response.resultObject;
|
|
673
679
|
}
|
|
680
|
+
else if (!response.validationResult.success) {
|
|
681
|
+
return Promise.reject(response.validationResult.messages[0].message);
|
|
682
|
+
}
|
|
674
683
|
else {
|
|
675
684
|
return '';
|
|
676
685
|
}
|
|
677
686
|
});
|
|
678
687
|
}
|
|
679
688
|
getCatalogDefinitionsList() {
|
|
680
|
-
return __awaiter$
|
|
689
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
690
|
+
if (!this.articleApi) {
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
681
693
|
const response = yield this.articleApi.getCatalogDefinitions().catch(e => {
|
|
682
694
|
return new DataServiceResponseData();
|
|
683
695
|
});
|
|
@@ -690,7 +702,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
690
702
|
});
|
|
691
703
|
}
|
|
692
704
|
getExternalSource(externalSourceId) {
|
|
693
|
-
return __awaiter$
|
|
705
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
694
706
|
if (!externalSourceId) {
|
|
695
707
|
return null;
|
|
696
708
|
}
|
|
@@ -709,7 +721,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
709
721
|
});
|
|
710
722
|
}
|
|
711
723
|
getArticleFullObject(goodId) {
|
|
712
|
-
return __awaiter$
|
|
724
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
713
725
|
const result = yield this.articleApi.getArticleFullObject(goodId);
|
|
714
726
|
if (result.validationResult && result.validationResult.success) {
|
|
715
727
|
return this._boFactory.makeWithRawBackendData(ArticleFullObject, result.resultObject);
|
|
@@ -720,7 +732,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
720
732
|
});
|
|
721
733
|
}
|
|
722
734
|
getArticleCategories(publicationCode) {
|
|
723
|
-
return __awaiter$
|
|
735
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
724
736
|
const result = yield this.articleApi.getArticleCategories(publicationCode);
|
|
725
737
|
if (result.validationResult && result.validationResult.success) {
|
|
726
738
|
return this._boFactory.makeBOArrayFromRawBackendDataArray(ArticleCategory, result.resultObjects);
|
|
@@ -732,7 +744,7 @@ class HomedecoratorConnectorAdapterService {
|
|
|
732
744
|
}
|
|
733
745
|
//
|
|
734
746
|
getArticleFlat(sku) {
|
|
735
|
-
return __awaiter$
|
|
747
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
736
748
|
const result = yield this.articleApi.getArticleFlat(sku);
|
|
737
749
|
if (result.validationResult && result.validationResult.success) {
|
|
738
750
|
return this._boFactory.makeWithRawBackendData(ArticleFlat, result.resultObject);
|
|
@@ -742,6 +754,18 @@ class HomedecoratorConnectorAdapterService {
|
|
|
742
754
|
}
|
|
743
755
|
});
|
|
744
756
|
}
|
|
757
|
+
getModelPlacementOptions() {
|
|
758
|
+
return __awaiter$1m(this, void 0, void 0, function* () {
|
|
759
|
+
// DOM_3D_PLACEMENT
|
|
760
|
+
const result = yield this.mainApi.getDomainCollection('NL', DomainName.Dom3DPlacement);
|
|
761
|
+
if (result.validationResult && result.validationResult.success) {
|
|
762
|
+
return this._boFactory.makeBOArrayFromRawBackendDataArray(CoDomainValue, result.resultObjects);
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
console.error(result.validationMessagesAsString);
|
|
766
|
+
}
|
|
767
|
+
});
|
|
768
|
+
}
|
|
745
769
|
// public async addToCart(goodId: number, goodType: GoodType, instanceId: number, sessionId: string, quantity: number = 1): Promise<void> {
|
|
746
770
|
// const json: string = await this._getJSONFromArticleObject(goodId, goodType, instanceId, sessionId, quantity);
|
|
747
771
|
// this._appEventService.addToCart.next({article: json, quantity: 1});
|
|
@@ -773,7 +797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
773
797
|
}]
|
|
774
798
|
}], ctorParameters: function () { return [{ type: HomedecoratorAppEventService }]; } });
|
|
775
799
|
|
|
776
|
-
var __awaiter$
|
|
800
|
+
var __awaiter$1l = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
777
801
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
778
802
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
779
803
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -784,8 +808,8 @@ var __awaiter$1m = (this && this.__awaiter) || function (thisArg, _arguments, P,
|
|
|
784
808
|
};
|
|
785
809
|
class JsonUtilsService {
|
|
786
810
|
readJsonFile(filePath, includeBaseUrl = true) {
|
|
787
|
-
return __awaiter$
|
|
788
|
-
return new Promise((resolve, reject) => __awaiter$
|
|
811
|
+
return __awaiter$1l(this, void 0, void 0, function* () {
|
|
812
|
+
return new Promise((resolve, reject) => __awaiter$1l(this, void 0, void 0, function* () {
|
|
789
813
|
try {
|
|
790
814
|
filePath = includeBaseUrl ? this._includeBaseUrl(filePath) : filePath;
|
|
791
815
|
const response = yield fetch(filePath);
|
|
@@ -951,7 +975,7 @@ function isEmpty(value) {
|
|
|
951
975
|
return value === null || value === undefined || value === '';
|
|
952
976
|
}
|
|
953
977
|
|
|
954
|
-
var __awaiter$
|
|
978
|
+
var __awaiter$1k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
955
979
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
956
980
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
957
981
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -982,7 +1006,7 @@ class HomedecoratorDictionaryService {
|
|
|
982
1006
|
return text ? text : key;
|
|
983
1007
|
}
|
|
984
1008
|
setDictionary(path, client, languageCode, additionalTranslationFile) {
|
|
985
|
-
return __awaiter$
|
|
1009
|
+
return __awaiter$1k(this, void 0, void 0, function* () {
|
|
986
1010
|
this._language = languageCode ? languageCode : this._language;
|
|
987
1011
|
let dictionaryData;
|
|
988
1012
|
if (additionalTranslationFile) {
|
|
@@ -1003,7 +1027,7 @@ class HomedecoratorDictionaryService {
|
|
|
1003
1027
|
});
|
|
1004
1028
|
}
|
|
1005
1029
|
_getDictionaryData(path) {
|
|
1006
|
-
return __awaiter$
|
|
1030
|
+
return __awaiter$1k(this, void 0, void 0, function* () {
|
|
1007
1031
|
return yield this._jsonUtilsService.readJsonFile(path, false)
|
|
1008
1032
|
.catch(() => {
|
|
1009
1033
|
return null;
|
|
@@ -1020,7 +1044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
1020
1044
|
}]
|
|
1021
1045
|
}], ctorParameters: function () { return [{ type: JsonUtilsService }]; } });
|
|
1022
1046
|
|
|
1023
|
-
var __awaiter$
|
|
1047
|
+
var __awaiter$1j = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1024
1048
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1025
1049
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1026
1050
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -1088,7 +1112,7 @@ class HomedecoratorSettingsService {
|
|
|
1088
1112
|
}
|
|
1089
1113
|
}
|
|
1090
1114
|
initializeSettings() {
|
|
1091
|
-
return __awaiter$
|
|
1115
|
+
return __awaiter$1j(this, void 0, void 0, function* () {
|
|
1092
1116
|
if (environment.useSettings) {
|
|
1093
1117
|
// see if there's a json file for application settings
|
|
1094
1118
|
const jsonSettings = yield this._jsonUtilsService.readJsonFile('./settings/ione-connector.json', true);
|
|
@@ -1101,7 +1125,7 @@ class HomedecoratorSettingsService {
|
|
|
1101
1125
|
});
|
|
1102
1126
|
}
|
|
1103
1127
|
initialize(settings) {
|
|
1104
|
-
return __awaiter$
|
|
1128
|
+
return __awaiter$1j(this, void 0, void 0, function* () {
|
|
1105
1129
|
if (settings) {
|
|
1106
1130
|
yield this.createSettingsFromObject(settings);
|
|
1107
1131
|
}
|
|
@@ -1134,7 +1158,7 @@ class HomedecoratorSettingsService {
|
|
|
1134
1158
|
});
|
|
1135
1159
|
}
|
|
1136
1160
|
_checkUrlParameters() {
|
|
1137
|
-
return __awaiter$
|
|
1161
|
+
return __awaiter$1j(this, void 0, void 0, function* () {
|
|
1138
1162
|
const urlParams = new URLSearchParams(window.location.search);
|
|
1139
1163
|
const client = urlParams.get('client');
|
|
1140
1164
|
if (client) {
|
|
@@ -1155,7 +1179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
1155
1179
|
}]
|
|
1156
1180
|
}], ctorParameters: function () { return [{ type: JsonUtilsService }, { type: HomedecoratorDictionaryService }, { type: HomedecoratorConnectorAdapterService }]; } });
|
|
1157
1181
|
|
|
1158
|
-
var __awaiter$
|
|
1182
|
+
var __awaiter$1i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1159
1183
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1160
1184
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1161
1185
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -1181,7 +1205,7 @@ class SkipButtonInfoService {
|
|
|
1181
1205
|
this._imageBody = value;
|
|
1182
1206
|
}
|
|
1183
1207
|
getSkipButtonImageAndText(goodId) {
|
|
1184
|
-
return __awaiter$
|
|
1208
|
+
return __awaiter$1i(this, void 0, void 0, function* () {
|
|
1185
1209
|
if (!this.text || !this.imageBody) {
|
|
1186
1210
|
const skipButtonInfo = yield this._connector.getSkipButtonImageAndText(goodId);
|
|
1187
1211
|
this.text = skipButtonInfo.oText;
|
|
@@ -1249,7 +1273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
1249
1273
|
}]
|
|
1250
1274
|
}] });
|
|
1251
1275
|
|
|
1252
|
-
var __awaiter$
|
|
1276
|
+
var __awaiter$1h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1253
1277
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1254
1278
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1255
1279
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -1334,7 +1358,7 @@ class PermanentStoreService {
|
|
|
1334
1358
|
this._registerFormID = value;
|
|
1335
1359
|
}
|
|
1336
1360
|
updateRegisterForm(furniture) {
|
|
1337
|
-
return __awaiter$
|
|
1361
|
+
return __awaiter$1h(this, void 0, void 0, function* () {
|
|
1338
1362
|
const collectiveSheetKey = '13V6FBPWbICfjonrtAEReucHkE61ijWRmau806u5EGZs';
|
|
1339
1363
|
const collectiveSheetScriptURL = 'https://script.google.com/macros/s/AKfycbwtgNNj0PjBPdNiiYgKtYAAUVFu1GwKzMkwMFnEDm7Va-QiYdc/exec';
|
|
1340
1364
|
const customSheetScriptURL = 'https://script.google.com/macros/s/AKfycby-iJ_RdsdeCZ3TJN_qEMiv_DGhetyFMFIeNJGqvi-jQmDA2NBuSWFI-wmF-NtNQDLL/exec';
|
|
@@ -1458,7 +1482,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
1458
1482
|
}]
|
|
1459
1483
|
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }, { type: PermanentStoreService }]; } });
|
|
1460
1484
|
|
|
1461
|
-
var __awaiter$
|
|
1485
|
+
var __awaiter$1g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1462
1486
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1463
1487
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1464
1488
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -1481,7 +1505,6 @@ class HomedecoratorConnectorService {
|
|
|
1481
1505
|
this.articleReceived = new Subject();
|
|
1482
1506
|
this.selectionsReceived = new Subject();
|
|
1483
1507
|
// public readonly decoNodesReceived: Subject<DecoNode[]> = new Subject<DecoNode[]>();
|
|
1484
|
-
this.answerCountReceived = new Subject();
|
|
1485
1508
|
this.answersReceived = new Subject();
|
|
1486
1509
|
this.extraAnswerDataLoaded = new Subject();
|
|
1487
1510
|
// public readonly moodImagesReceived: Subject<{ answerOrSelection: Answer | Selection, imageData: string }> =
|
|
@@ -1489,12 +1512,11 @@ class HomedecoratorConnectorService {
|
|
|
1489
1512
|
this.selectionsAndDecosLinked = new Subject();
|
|
1490
1513
|
this.connectionReset = new Subject();
|
|
1491
1514
|
this.selectionsToDisplay = [];
|
|
1515
|
+
this.activeAnswers = [];
|
|
1492
1516
|
this._hideLoaderTimerTimeout = 500;
|
|
1493
1517
|
this._selections = [];
|
|
1494
1518
|
this._currentSelections = [];
|
|
1495
1519
|
this._decoNodes = [];
|
|
1496
|
-
// private _activeQuestion: Question;
|
|
1497
|
-
this._activeAnswers = [];
|
|
1498
1520
|
this._articlePrice = 0;
|
|
1499
1521
|
this._connectorOptions = new Options();
|
|
1500
1522
|
this._subs = [];
|
|
@@ -1524,12 +1546,6 @@ class HomedecoratorConnectorService {
|
|
|
1524
1546
|
get currentSelections() {
|
|
1525
1547
|
return this._currentSelections;
|
|
1526
1548
|
}
|
|
1527
|
-
// public get activeQuestion(): Question {
|
|
1528
|
-
// return this._activeQuestion;
|
|
1529
|
-
// }
|
|
1530
|
-
get activeAnswers() {
|
|
1531
|
-
return this._activeAnswers;
|
|
1532
|
-
}
|
|
1533
1549
|
get activeSelection() {
|
|
1534
1550
|
return this._activeSelection;
|
|
1535
1551
|
}
|
|
@@ -1555,19 +1571,19 @@ class HomedecoratorConnectorService {
|
|
|
1555
1571
|
this._imageCache.clear();
|
|
1556
1572
|
}
|
|
1557
1573
|
getWebViewStartupInfo(request) {
|
|
1558
|
-
return __awaiter$
|
|
1574
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1559
1575
|
return this._connector.getWebViewStartupInfo(request);
|
|
1560
1576
|
});
|
|
1561
1577
|
}
|
|
1562
1578
|
initNodeInstance(sku) {
|
|
1563
|
-
return __awaiter$
|
|
1579
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1564
1580
|
const goodId = yield this._connector.getGoodIdFromArticleNr(sku);
|
|
1565
1581
|
const response = yield this._connector.initNodeInstance(goodId);
|
|
1566
1582
|
return this._handleInstanceResponse(response);
|
|
1567
1583
|
});
|
|
1568
1584
|
}
|
|
1569
1585
|
changeConnection(instanceId, oldConnection, newConnection) {
|
|
1570
|
-
return __awaiter$
|
|
1586
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1571
1587
|
const response = yield this._connector.changeConnection(instanceId, oldConnection, newConnection);
|
|
1572
1588
|
return response && response.validationResult && response.validationResult.success;
|
|
1573
1589
|
});
|
|
@@ -1577,6 +1593,10 @@ class HomedecoratorConnectorService {
|
|
|
1577
1593
|
this.selectionsToDisplay.length = 0;
|
|
1578
1594
|
this.decoNodes.length = 0;
|
|
1579
1595
|
}
|
|
1596
|
+
emptyAnswersAndQuestion() {
|
|
1597
|
+
this.activeAnswers.length = 0;
|
|
1598
|
+
this.activeQuestion = undefined;
|
|
1599
|
+
}
|
|
1580
1600
|
/**
|
|
1581
1601
|
* Used for obsolete furniture
|
|
1582
1602
|
* @param selections
|
|
@@ -1594,7 +1614,7 @@ class HomedecoratorConnectorService {
|
|
|
1594
1614
|
this._decoNodes = decoNodes;
|
|
1595
1615
|
}
|
|
1596
1616
|
initConnection(forceReload) {
|
|
1597
|
-
return __awaiter$
|
|
1617
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1598
1618
|
if ((this._initialized || this._initializing) && !forceReload) {
|
|
1599
1619
|
return;
|
|
1600
1620
|
}
|
|
@@ -1627,7 +1647,7 @@ class HomedecoratorConnectorService {
|
|
|
1627
1647
|
// return this._connector.getJsonMatchTableArticles();
|
|
1628
1648
|
// }
|
|
1629
1649
|
setInstance(id) {
|
|
1630
|
-
return __awaiter$
|
|
1650
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1631
1651
|
const response = yield this._connector.setInstanceToConfigure(id).catch(error => {
|
|
1632
1652
|
console.log(error);
|
|
1633
1653
|
return new DataServiceResponseData();
|
|
@@ -1642,7 +1662,7 @@ class HomedecoratorConnectorService {
|
|
|
1642
1662
|
return this._copyInstance(instanceId, false, result);
|
|
1643
1663
|
}
|
|
1644
1664
|
saveConfigurations() {
|
|
1645
|
-
return __awaiter$
|
|
1665
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1646
1666
|
const success = yield this._connector.saveConfigurations();
|
|
1647
1667
|
if (!success) {
|
|
1648
1668
|
console.error('error saving configurations');
|
|
@@ -1650,9 +1670,9 @@ class HomedecoratorConnectorService {
|
|
|
1650
1670
|
});
|
|
1651
1671
|
}
|
|
1652
1672
|
getArticle(sku, branch) {
|
|
1653
|
-
return __awaiter$
|
|
1654
|
-
this.
|
|
1655
|
-
this.
|
|
1673
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1674
|
+
this.emptySelections();
|
|
1675
|
+
this.emptyAnswersAndQuestion();
|
|
1656
1676
|
const article = yield this._connector.getArticle(sku, branch)
|
|
1657
1677
|
.catch(e => {
|
|
1658
1678
|
return Promise.reject(e);
|
|
@@ -1673,14 +1693,25 @@ class HomedecoratorConnectorService {
|
|
|
1673
1693
|
// this._connector.getQuestionAndAnswers();
|
|
1674
1694
|
// }
|
|
1675
1695
|
getQuestionAndAnswersAsync() {
|
|
1676
|
-
return __awaiter$
|
|
1696
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1677
1697
|
const questionAndAnswers = yield this._connector.getQuestionAndAnswersAsync();
|
|
1678
1698
|
questionAndAnswers.answers = questionAndAnswers.answers.filter(a => this._isAnswerPublished(a));
|
|
1699
|
+
// if (questionAndAnswers.question && !questionAndAnswers.question.grouped) {
|
|
1700
|
+
this.handleAnswersReceived(questionAndAnswers.answers);
|
|
1701
|
+
// }
|
|
1702
|
+
this._appEventService.answerCountReceived.next(questionAndAnswers.answers.length);
|
|
1703
|
+
if (questionAndAnswers.answers.length === 0) {
|
|
1704
|
+
this.emptyAnswersAndQuestion();
|
|
1705
|
+
}
|
|
1706
|
+
else {
|
|
1707
|
+
this.activeQuestion = questionAndAnswers.question;
|
|
1708
|
+
this.activeAnswers = questionAndAnswers.answers;
|
|
1709
|
+
}
|
|
1679
1710
|
return questionAndAnswers;
|
|
1680
1711
|
});
|
|
1681
1712
|
}
|
|
1682
1713
|
getSelectionsAsync() {
|
|
1683
|
-
return __awaiter$
|
|
1714
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1684
1715
|
// this.selectionsToDisplay.length = 0;
|
|
1685
1716
|
this.selections.length = 0;
|
|
1686
1717
|
const selections = yield this._connector.getSelectionsAsync()
|
|
@@ -1691,7 +1722,7 @@ class HomedecoratorConnectorService {
|
|
|
1691
1722
|
});
|
|
1692
1723
|
}
|
|
1693
1724
|
getDecosAsync() {
|
|
1694
|
-
return __awaiter$
|
|
1725
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1695
1726
|
this._decoNodes = yield this._connector.getDecosAsync()
|
|
1696
1727
|
.catch(() => {
|
|
1697
1728
|
return [];
|
|
@@ -1716,13 +1747,13 @@ class HomedecoratorConnectorService {
|
|
|
1716
1747
|
return this._connector.replaceSelection(selection);
|
|
1717
1748
|
}
|
|
1718
1749
|
getAnswerInfo(answer) {
|
|
1719
|
-
return __awaiter$
|
|
1750
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1720
1751
|
const articleTexts = yield this._connector.getAnswerInfo(answer);
|
|
1721
1752
|
this._onAnswerInfoReceived({ answer: answer, info: articleTexts });
|
|
1722
1753
|
});
|
|
1723
1754
|
}
|
|
1724
1755
|
extendWithAnswerTextAndImage(answer, showLoader = true) {
|
|
1725
|
-
return __awaiter$
|
|
1756
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1726
1757
|
if (answer.nodeId) {
|
|
1727
1758
|
if (!this._imageCache.has(answer.nodeId)) {
|
|
1728
1759
|
this._connector.getImageForAnswerOrSelection(answer, 4, true, showLoader).then((imageData) => {
|
|
@@ -1743,7 +1774,7 @@ class HomedecoratorConnectorService {
|
|
|
1743
1774
|
});
|
|
1744
1775
|
}
|
|
1745
1776
|
extendWithSelectionImage(selection, showLoader = true) {
|
|
1746
|
-
return __awaiter$
|
|
1777
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1747
1778
|
if (selection.nodeId) {
|
|
1748
1779
|
if (!this._imageCache.has(selection.nodeId)) {
|
|
1749
1780
|
this._connector.getImageForAnswerOrSelection(selection, 4, true, showLoader).then((imageData) => {
|
|
@@ -1860,7 +1891,7 @@ class HomedecoratorConnectorService {
|
|
|
1860
1891
|
});
|
|
1861
1892
|
}
|
|
1862
1893
|
addToCart(goodId, goodType, quantity, instanceId, externalSource) {
|
|
1863
|
-
return __awaiter$
|
|
1894
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1864
1895
|
let json;
|
|
1865
1896
|
const statistics = new ConfiguratorStatisticsEnvironment();
|
|
1866
1897
|
statistics.userType = 'Homedecorator';
|
|
@@ -1881,15 +1912,11 @@ class HomedecoratorConnectorService {
|
|
|
1881
1912
|
});
|
|
1882
1913
|
}
|
|
1883
1914
|
handleAnswersReceived(answers) {
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
this.
|
|
1888
|
-
|
|
1889
|
-
if (this._activeAnswers) {
|
|
1890
|
-
this._loadPricesOfActiveAnswers();
|
|
1891
|
-
}
|
|
1892
|
-
});
|
|
1915
|
+
this._preloadCachedImages(answers);
|
|
1916
|
+
this.answersReceived.next(answers);
|
|
1917
|
+
if (this.activeAnswers && this.activeAnswers.length > 0) {
|
|
1918
|
+
this._loadPricesOfActiveAnswers();
|
|
1919
|
+
}
|
|
1893
1920
|
}
|
|
1894
1921
|
_prepareSelectionsToDisplayImages() {
|
|
1895
1922
|
if (this.selectionsToDisplay && this.selectionsToDisplay.length > 0) {
|
|
@@ -1989,12 +2016,12 @@ class HomedecoratorConnectorService {
|
|
|
1989
2016
|
}
|
|
1990
2017
|
// POSTCONDITION: current activeAnswers have price values.
|
|
1991
2018
|
_loadPricesOfActiveAnswers() {
|
|
1992
|
-
return __awaiter$
|
|
2019
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
1993
2020
|
const answerPrices = yield this._connector.getAnswerPrices();
|
|
1994
2021
|
if (answerPrices) {
|
|
1995
2022
|
// paste price data onto our current answer objects; AnswerPrice.selId corresponds to Answer.node
|
|
1996
2023
|
answerPrices.forEach(answerPrice => {
|
|
1997
|
-
const answerMatch = this.
|
|
2024
|
+
const answerMatch = this.activeAnswers.find(ans => ans.node === answerPrice.selId);
|
|
1998
2025
|
if (answerMatch) {
|
|
1999
2026
|
answerMatch.price = // temp fix for price until backend is ready
|
|
2000
2027
|
answerMatch.nodeLevel === 0 && answerPrice.addRetailPrice && answerMatch.seqO === 1 ?
|
|
@@ -2007,7 +2034,7 @@ class HomedecoratorConnectorService {
|
|
|
2007
2034
|
});
|
|
2008
2035
|
}
|
|
2009
2036
|
_copyInstance(originalInstanceId, shouldSaveCurrentInstanceId, result) {
|
|
2010
|
-
return __awaiter$
|
|
2037
|
+
return __awaiter$1g(this, void 0, void 0, function* () {
|
|
2011
2038
|
const copyInstanceResponse = yield this._connector.copyInstance(originalInstanceId, shouldSaveCurrentInstanceId).catch((e) => {
|
|
2012
2039
|
if (e === 'ECONNABORTED' || e === undefined) {
|
|
2013
2040
|
result.resultType = ResultType.Timeout;
|
|
@@ -2044,7 +2071,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
2044
2071
|
}]
|
|
2045
2072
|
}], ctorParameters: function () { return [{ type: HomedecoratorConnectorAdapterService }, { type: JsonUtilsService }, { type: HomedecoratorSettingsService }, { type: SkipButtonInfoService }, { type: MessageBusService }, { type: HomedecoratorAppEventService }, { type: GoogleTagManagerService }]; } });
|
|
2046
2073
|
|
|
2047
|
-
var __awaiter$
|
|
2074
|
+
var __awaiter$1f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2048
2075
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2049
2076
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
2050
2077
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -2084,13 +2111,13 @@ class AppStateService {
|
|
|
2084
2111
|
window.history.replaceState(data, title, url);
|
|
2085
2112
|
}
|
|
2086
2113
|
undo() {
|
|
2087
|
-
return __awaiter$
|
|
2114
|
+
return __awaiter$1f(this, void 0, void 0, function* () {
|
|
2088
2115
|
this.currentStateIndex -= 1;
|
|
2089
2116
|
yield this.applyStateFn(this.getValue(this.currentStateIndex));
|
|
2090
2117
|
});
|
|
2091
2118
|
}
|
|
2092
2119
|
redo() {
|
|
2093
|
-
return __awaiter$
|
|
2120
|
+
return __awaiter$1f(this, void 0, void 0, function* () {
|
|
2094
2121
|
this.currentStateIndex += 1;
|
|
2095
2122
|
yield this.applyStateFn(this.getValue(this.currentStateIndex));
|
|
2096
2123
|
});
|
|
@@ -2353,7 +2380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
2353
2380
|
}]
|
|
2354
2381
|
}], ctorParameters: function () { return []; } });
|
|
2355
2382
|
|
|
2356
|
-
var __awaiter$
|
|
2383
|
+
var __awaiter$1e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2357
2384
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2358
2385
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
2359
2386
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -2388,7 +2415,7 @@ class LocalStorageService {
|
|
|
2388
2415
|
}
|
|
2389
2416
|
}
|
|
2390
2417
|
getRecoverySaveState() {
|
|
2391
|
-
return __awaiter$
|
|
2418
|
+
return __awaiter$1e(this, void 0, void 0, function* () {
|
|
2392
2419
|
const indexedDBSave = yield this.getIndexedDBSaveState();
|
|
2393
2420
|
const localStorageSave = this._getSaveStateInLocalStorage();
|
|
2394
2421
|
if (indexedDBSave) {
|
|
@@ -2403,13 +2430,13 @@ class LocalStorageService {
|
|
|
2403
2430
|
});
|
|
2404
2431
|
}
|
|
2405
2432
|
getIndexedDBSaveState() {
|
|
2406
|
-
return __awaiter$
|
|
2433
|
+
return __awaiter$1e(this, void 0, void 0, function* () {
|
|
2407
2434
|
const getMessage = yield this._webWorkerService.postMessage(WebWorkerType.IndexedDB, { messageType: WebWorkerMessage.GetRecoverySaveDataFromIndexedDB });
|
|
2408
2435
|
return getMessage.data;
|
|
2409
2436
|
});
|
|
2410
2437
|
}
|
|
2411
2438
|
writeIndexedDBSaveState(saveState) {
|
|
2412
|
-
return __awaiter$
|
|
2439
|
+
return __awaiter$1e(this, void 0, void 0, function* () {
|
|
2413
2440
|
const saveMessage = yield this._webWorkerService.postMessage(WebWorkerType.IndexedDB, { messageType: WebWorkerMessage.WriteCurrentSaveDataToIndexedDB, messageData: saveState });
|
|
2414
2441
|
if (!this.saveStateExists && saveMessage.data) {
|
|
2415
2442
|
this.saveStateExists = true;
|
|
@@ -2419,7 +2446,7 @@ class LocalStorageService {
|
|
|
2419
2446
|
});
|
|
2420
2447
|
}
|
|
2421
2448
|
checkForLocalSave() {
|
|
2422
|
-
return __awaiter$
|
|
2449
|
+
return __awaiter$1e(this, void 0, void 0, function* () {
|
|
2423
2450
|
if (!this.saveStateExists) {
|
|
2424
2451
|
const indexedDBSave = yield this.getIndexedDBSaveState();
|
|
2425
2452
|
if (indexedDBSave || this._getSaveStateInLocalStorage() !== null) {
|
|
@@ -2441,7 +2468,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
2441
2468
|
}]
|
|
2442
2469
|
}], ctorParameters: function () { return [{ type: WebWorkerService }]; } });
|
|
2443
2470
|
|
|
2444
|
-
var __awaiter$
|
|
2471
|
+
var __awaiter$1d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2445
2472
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2446
2473
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
2447
2474
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -2520,7 +2547,7 @@ class FileUtils {
|
|
|
2520
2547
|
}
|
|
2521
2548
|
}
|
|
2522
2549
|
static SaveGLBFile(data, assetPath) {
|
|
2523
|
-
return __awaiter$
|
|
2550
|
+
return __awaiter$1d(this, void 0, void 0, function* () {
|
|
2524
2551
|
return new Promise((resolve, reject) => {
|
|
2525
2552
|
const xhr = new XMLHttpRequest();
|
|
2526
2553
|
xhr.open('POST', `${assetPath}saveGLBFile.php`, true);
|
|
@@ -2675,7 +2702,7 @@ class FileUtils {
|
|
|
2675
2702
|
}
|
|
2676
2703
|
FileUtils._cachedTextureUploads = new Map();
|
|
2677
2704
|
|
|
2678
|
-
var __awaiter$
|
|
2705
|
+
var __awaiter$1c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2679
2706
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2680
2707
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
2681
2708
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -2689,7 +2716,7 @@ class FileService {
|
|
|
2689
2716
|
this._settingsService = _settingsService;
|
|
2690
2717
|
}
|
|
2691
2718
|
getTotalDownloadSize(files) {
|
|
2692
|
-
return __awaiter$
|
|
2719
|
+
return __awaiter$1c(this, void 0, void 0, function* () {
|
|
2693
2720
|
const url = `${this._settingsService.settings.assetPath}/fileSize.php`;
|
|
2694
2721
|
const data = {
|
|
2695
2722
|
files: files
|
|
@@ -2716,7 +2743,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
2716
2743
|
}]
|
|
2717
2744
|
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }]; } });
|
|
2718
2745
|
|
|
2719
|
-
var __awaiter$
|
|
2746
|
+
var __awaiter$1b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2720
2747
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2721
2748
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
2722
2749
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -2739,7 +2766,7 @@ class ProgressService {
|
|
|
2739
2766
|
return (current / this.total) * 100;
|
|
2740
2767
|
}
|
|
2741
2768
|
prepareDownloads(furniture) {
|
|
2742
|
-
return __awaiter$
|
|
2769
|
+
return __awaiter$1b(this, void 0, void 0, function* () {
|
|
2743
2770
|
this._reset();
|
|
2744
2771
|
const files = [];
|
|
2745
2772
|
if (furniture && furniture.length > 0) {
|
|
@@ -3628,7 +3655,7 @@ class RelativePositionUtils {
|
|
|
3628
3655
|
RelativePositionUtils.appOffsetTop = 0;
|
|
3629
3656
|
RelativePositionUtils.appOffsetLeft = 0;
|
|
3630
3657
|
|
|
3631
|
-
var __awaiter$
|
|
3658
|
+
var __awaiter$1a = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3632
3659
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3633
3660
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
3634
3661
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -3827,7 +3854,7 @@ Controls = function (camera, domElement) {
|
|
|
3827
3854
|
scope.pan(new THREE.Vector2(x, y));
|
|
3828
3855
|
};
|
|
3829
3856
|
this.animateCamera = function (type, change) {
|
|
3830
|
-
return __awaiter$
|
|
3857
|
+
return __awaiter$1a(this, void 0, void 0, function* () {
|
|
3831
3858
|
const changing = new THREE.Vector2();
|
|
3832
3859
|
const tween = new TWEEN.Tween(changing).to(new THREE.Vector2(change, 0), 200);
|
|
3833
3860
|
tween.easing(TWEEN.Easing.Quadratic.In);
|
|
@@ -3838,7 +3865,7 @@ Controls = function (camera, domElement) {
|
|
|
3838
3865
|
});
|
|
3839
3866
|
};
|
|
3840
3867
|
this.animateCameraMovement = function (endPosition, endTarget, endDuration) {
|
|
3841
|
-
return __awaiter$
|
|
3868
|
+
return __awaiter$1a(this, void 0, void 0, function* () {
|
|
3842
3869
|
if (!isFinite(endPosition.x) || !isFinite(endPosition.y) || !isFinite(endPosition.z)) {
|
|
3843
3870
|
return;
|
|
3844
3871
|
}
|
|
@@ -3910,7 +3937,7 @@ Controls = function (camera, domElement) {
|
|
|
3910
3937
|
this.updatePositionTarget(this.camera.position, this.target);
|
|
3911
3938
|
};
|
|
3912
3939
|
this.animateMoveTo = function (target) {
|
|
3913
|
-
return __awaiter$
|
|
3940
|
+
return __awaiter$1a(this, void 0, void 0, function* () {
|
|
3914
3941
|
const position = scope.target.clone();
|
|
3915
3942
|
const distance = target.distanceTo(position);
|
|
3916
3943
|
const tween = new TWEEN.Tween(position).to(target, distance);
|
|
@@ -4094,7 +4121,7 @@ Controls = function (camera, domElement) {
|
|
|
4094
4121
|
return event && event.target && event.target === document.body;
|
|
4095
4122
|
}
|
|
4096
4123
|
function onMouseMove(event) {
|
|
4097
|
-
return __awaiter$
|
|
4124
|
+
return __awaiter$1a(this, void 0, void 0, function* () {
|
|
4098
4125
|
if (!isMouseEventAllowed(event)) {
|
|
4099
4126
|
return;
|
|
4100
4127
|
}
|
|
@@ -4443,7 +4470,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
4443
4470
|
}]
|
|
4444
4471
|
}] });
|
|
4445
4472
|
|
|
4446
|
-
var __awaiter$
|
|
4473
|
+
var __awaiter$19 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4447
4474
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4448
4475
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4449
4476
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -4628,7 +4655,7 @@ class CameraService {
|
|
|
4628
4655
|
this.cameraMovementChanged.next();
|
|
4629
4656
|
}
|
|
4630
4657
|
moveCameraToFitObject(object, offset) {
|
|
4631
|
-
return __awaiter$
|
|
4658
|
+
return __awaiter$19(this, void 0, void 0, function* () {
|
|
4632
4659
|
if (!object) {
|
|
4633
4660
|
return;
|
|
4634
4661
|
}
|
|
@@ -4699,7 +4726,7 @@ class CameraService {
|
|
|
4699
4726
|
return target.clone().add(new Vector3(0, targetDistance, targetDistance));
|
|
4700
4727
|
}
|
|
4701
4728
|
_placeWalkThroughCameraInCorner(viewCorner) {
|
|
4702
|
-
return __awaiter$
|
|
4729
|
+
return __awaiter$19(this, void 0, void 0, function* () {
|
|
4703
4730
|
const center2d = this._viewCenter;
|
|
4704
4731
|
const center = new Vector3(center2d.x, this.cameraDefaultHeight, center2d.y);
|
|
4705
4732
|
// place in a corner to have a better view
|
|
@@ -4874,7 +4901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
4874
4901
|
}]
|
|
4875
4902
|
}], ctorParameters: function () { return []; } });
|
|
4876
4903
|
|
|
4877
|
-
var __awaiter$
|
|
4904
|
+
var __awaiter$18 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4878
4905
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4879
4906
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4880
4907
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -4890,7 +4917,7 @@ class MessageBoardService {
|
|
|
4890
4917
|
this.messages = [];
|
|
4891
4918
|
}
|
|
4892
4919
|
init(scene) {
|
|
4893
|
-
return __awaiter$
|
|
4920
|
+
return __awaiter$18(this, void 0, void 0, function* () {
|
|
4894
4921
|
this.scene = scene;
|
|
4895
4922
|
if (this._settingsService.settings.options.xrDebug) {
|
|
4896
4923
|
this._createMessageBoard();
|
|
@@ -4928,7 +4955,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
4928
4955
|
}]
|
|
4929
4956
|
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }, { type: FontService }]; } });
|
|
4930
4957
|
|
|
4931
|
-
var __awaiter$
|
|
4958
|
+
var __awaiter$17 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4932
4959
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4933
4960
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4934
4961
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -4958,7 +4985,7 @@ class XrService {
|
|
|
4958
4985
|
this._subs.forEach(s => s.unsubscribe());
|
|
4959
4986
|
}
|
|
4960
4987
|
init(renderer, scene, camera) {
|
|
4961
|
-
return __awaiter$
|
|
4988
|
+
return __awaiter$17(this, void 0, void 0, function* () {
|
|
4962
4989
|
if (!this._settingsService.settings.options.vrEnabled && !this._settingsService.settings.options.arEnabled) {
|
|
4963
4990
|
return;
|
|
4964
4991
|
}
|
|
@@ -5314,7 +5341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
5314
5341
|
}]
|
|
5315
5342
|
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }, { type: DebugService }, { type: MessageBoardService }]; } });
|
|
5316
5343
|
|
|
5317
|
-
var __awaiter$
|
|
5344
|
+
var __awaiter$16 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5318
5345
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5319
5346
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5320
5347
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -5368,7 +5395,7 @@ class Reticle extends Object3D {
|
|
|
5368
5395
|
* @param {XRCoordinateSystem} frameOfRef
|
|
5369
5396
|
*/
|
|
5370
5397
|
update(session, camera, frameOfRef) {
|
|
5371
|
-
return __awaiter$
|
|
5398
|
+
return __awaiter$16(this, void 0, void 0, function* () {
|
|
5372
5399
|
this._rayCaster = this._rayCaster || new Raycaster();
|
|
5373
5400
|
this._rayCaster.setFromCamera(new THREE.Vector2(0, 0), camera);
|
|
5374
5401
|
const ray = this._rayCaster.ray;
|
|
@@ -5963,7 +5990,7 @@ class BaseItem extends Object3D {
|
|
|
5963
5990
|
class ServiceLocator {
|
|
5964
5991
|
}
|
|
5965
5992
|
|
|
5966
|
-
var __awaiter$
|
|
5993
|
+
var __awaiter$15 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5967
5994
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5968
5995
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5969
5996
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -6034,7 +6061,7 @@ class OutlineService {
|
|
|
6034
6061
|
this._outlinePass.selectedObjects = [item];
|
|
6035
6062
|
}
|
|
6036
6063
|
showOutline(item) {
|
|
6037
|
-
return __awaiter$
|
|
6064
|
+
return __awaiter$15(this, void 0, void 0, function* () {
|
|
6038
6065
|
// if (item && (item instanceof FloorPin || item instanceof WallPin)) {
|
|
6039
6066
|
// return;
|
|
6040
6067
|
// }
|
|
@@ -6053,7 +6080,7 @@ class OutlineService {
|
|
|
6053
6080
|
});
|
|
6054
6081
|
}
|
|
6055
6082
|
hideOutline() {
|
|
6056
|
-
return __awaiter$
|
|
6083
|
+
return __awaiter$15(this, void 0, void 0, function* () {
|
|
6057
6084
|
if (this._outlinePass.selectedObjects.length > 0) {
|
|
6058
6085
|
// await this._animatedOutlineStrength(300, 0);
|
|
6059
6086
|
this._outlinePass.selectedObjects = [];
|
|
@@ -6886,7 +6913,7 @@ var TextureType;
|
|
|
6886
6913
|
TextureType[TextureType["PBR"] = 3] = "PBR";
|
|
6887
6914
|
})(TextureType || (TextureType = {}));
|
|
6888
6915
|
|
|
6889
|
-
var __awaiter$
|
|
6916
|
+
var __awaiter$14 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6890
6917
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6891
6918
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6892
6919
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -6943,13 +6970,13 @@ class MaterialUtils {
|
|
|
6943
6970
|
}
|
|
6944
6971
|
// use canvas to create rotated textures
|
|
6945
6972
|
static RotatedCanvasTexture(texture, textureURL, dimensions, adjustScale, repeatX, repeatY) {
|
|
6946
|
-
return __awaiter$
|
|
6973
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
6947
6974
|
const img = yield MaterialUtils.LoadImageCached(textureURL);
|
|
6948
6975
|
return MaterialUtils.CreateTileMap(img, texture, dimensions, adjustScale, repeatX, repeatY);
|
|
6949
6976
|
});
|
|
6950
6977
|
}
|
|
6951
6978
|
static CustomTileMapTexture(texture, dimensions) {
|
|
6952
|
-
return __awaiter$
|
|
6979
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
6953
6980
|
let img = yield MaterialUtils.LoadImageCached(texture.data);
|
|
6954
6981
|
if (MaterialUtils.TextureSourceModified(texture)) {
|
|
6955
6982
|
img = yield MaterialUtils.CreateShiftedDataUrl(img, texture);
|
|
@@ -6982,7 +7009,7 @@ class MaterialUtils {
|
|
|
6982
7009
|
}
|
|
6983
7010
|
// use canvas to create texture from photo
|
|
6984
7011
|
static FromImage(texture /*, dimensions: THREE.Vector2*/) {
|
|
6985
|
-
return __awaiter$
|
|
7012
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
6986
7013
|
const img = yield MaterialUtils.LoadImageCached(texture.data);
|
|
6987
7014
|
const canvas = yield MaterialUtils.GetCanvasFromImageTexture(img, texture, true);
|
|
6988
7015
|
const threeTexture = new THREE.Texture(canvas);
|
|
@@ -6992,7 +7019,7 @@ class MaterialUtils {
|
|
|
6992
7019
|
});
|
|
6993
7020
|
}
|
|
6994
7021
|
static ReadAndResizePhotoAsDataURL(file) {
|
|
6995
|
-
return __awaiter$
|
|
7022
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
6996
7023
|
const imageSrc = yield MaterialUtils.ReadFileAsDataURL(file);
|
|
6997
7024
|
return MaterialUtils.LoadImageCached(imageSrc, false);
|
|
6998
7025
|
// const image = new Image();
|
|
@@ -7015,7 +7042,8 @@ class MaterialUtils {
|
|
|
7015
7042
|
let srcKey = src;
|
|
7016
7043
|
let type = 'image/jpeg';
|
|
7017
7044
|
if (isDataUri) {
|
|
7018
|
-
srcKey = md5(src);
|
|
7045
|
+
// srcKey = md5(src);
|
|
7046
|
+
srcKey = src;
|
|
7019
7047
|
if (src.indexOf('image/png') > -1) {
|
|
7020
7048
|
type = 'image/png';
|
|
7021
7049
|
}
|
|
@@ -7062,7 +7090,7 @@ class MaterialUtils {
|
|
|
7062
7090
|
});
|
|
7063
7091
|
}
|
|
7064
7092
|
static GetMaterialMaps(material, texture, dimensions) {
|
|
7065
|
-
return __awaiter$
|
|
7093
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7066
7094
|
if (!texture) {
|
|
7067
7095
|
return;
|
|
7068
7096
|
}
|
|
@@ -7094,7 +7122,7 @@ class MaterialUtils {
|
|
|
7094
7122
|
});
|
|
7095
7123
|
}
|
|
7096
7124
|
static loadMaterializeMaps(material, texture) {
|
|
7097
|
-
return __awaiter$
|
|
7125
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7098
7126
|
material.map = yield MaterialUtils.FromUrl(texture.materializeUrl + '_diffuseOriginal.jpg', texture.stretch, texture.tileSize, texture.repeatX, texture.repeatY, texture.dimensions, texture.tileRotation);
|
|
7099
7127
|
material.normalMap = yield MaterialUtils.FromUrl(texture.materializeUrl + '_normal.jpg', texture.stretch, texture.tileSize, texture.repeatX, texture.repeatY, texture.dimensions, texture.tileRotation);
|
|
7100
7128
|
material.roughnessMap = yield MaterialUtils.FromUrl(texture.materializeUrl + '_smoothness.jpg', texture.stretch, texture.tileSize, texture.repeatX, texture.repeatY, texture.dimensions, texture.tileRotation);
|
|
@@ -7153,7 +7181,7 @@ class MaterialUtils {
|
|
|
7153
7181
|
}
|
|
7154
7182
|
// use canvas to create texture from flipped photo
|
|
7155
7183
|
static FromFlippedImage(texture, dimensions) {
|
|
7156
|
-
return __awaiter$
|
|
7184
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7157
7185
|
const origImg = yield MaterialUtils.LoadImageCached(texture.data);
|
|
7158
7186
|
const canvas = yield MaterialUtils.GetCanvasFromImageTexture(origImg, texture, false, true);
|
|
7159
7187
|
const threeTexture = new THREE.Texture(canvas);
|
|
@@ -7182,21 +7210,21 @@ class MaterialUtils {
|
|
|
7182
7210
|
}
|
|
7183
7211
|
// use canvas to create custom textures
|
|
7184
7212
|
static CustomTileTexture(texture) {
|
|
7185
|
-
return __awaiter$
|
|
7213
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7186
7214
|
const img = yield MaterialUtils.LoadImageCached(texture.data);
|
|
7187
7215
|
const canvas = yield MaterialUtils.GetCanvasFromImageTexture(img, texture, true, true);
|
|
7188
7216
|
return MaterialUtils.CreateTileFromTexture(canvas, texture);
|
|
7189
7217
|
});
|
|
7190
7218
|
}
|
|
7191
7219
|
static RotatedImageTexture(texture, textureURL) {
|
|
7192
|
-
return __awaiter$
|
|
7220
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7193
7221
|
const img = yield MaterialUtils.LoadImageCached(textureURL);
|
|
7194
7222
|
const canvas = yield MaterialUtils.GetCanvasFromImageTexture(img, texture, false, true);
|
|
7195
7223
|
return MaterialUtils.CreateTileFromTexture(canvas, texture);
|
|
7196
7224
|
});
|
|
7197
7225
|
}
|
|
7198
7226
|
static CreateTileDataUrl(img, texture) {
|
|
7199
|
-
return __awaiter$
|
|
7227
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7200
7228
|
if (typeof img === 'string') {
|
|
7201
7229
|
img = yield this.CreateImageElementFromSource(img);
|
|
7202
7230
|
}
|
|
@@ -7210,7 +7238,7 @@ class MaterialUtils {
|
|
|
7210
7238
|
});
|
|
7211
7239
|
}
|
|
7212
7240
|
static CreateTileMap(img, texture, oDimensions, adjustScale, repeatX, repeatY) {
|
|
7213
|
-
return __awaiter$
|
|
7241
|
+
return __awaiter$14(this, void 0, void 0, function* () {
|
|
7214
7242
|
if (typeof img === 'string') {
|
|
7215
7243
|
img = yield this.CreateImageElementFromSource(img);
|
|
7216
7244
|
}
|
|
@@ -7289,7 +7317,7 @@ MaterialUtils.imgElement = undefined;
|
|
|
7289
7317
|
MaterialUtils.imageCache = new Map();
|
|
7290
7318
|
MaterialUtils.textureCache = new Map();
|
|
7291
7319
|
|
|
7292
|
-
var __awaiter$
|
|
7320
|
+
var __awaiter$13 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7293
7321
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7294
7322
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7295
7323
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
@@ -7333,7 +7361,7 @@ class ArService {
|
|
|
7333
7361
|
Utils$1.DisposeObject(this._pointRepresentation);
|
|
7334
7362
|
}
|
|
7335
7363
|
resetPlaneDetection() {
|
|
7336
|
-
return __awaiter$
|
|
7364
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7337
7365
|
this._reticle.visible = false;
|
|
7338
7366
|
this._activeARModel.visible = false;
|
|
7339
7367
|
this._vertexList = [];
|
|
@@ -7352,7 +7380,7 @@ class ArService {
|
|
|
7352
7380
|
this._session.end();
|
|
7353
7381
|
}
|
|
7354
7382
|
arIOSSupported() {
|
|
7355
|
-
return __awaiter$
|
|
7383
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7356
7384
|
const isIOS = /iPad|iPhone|iPod/.test(navigator.platform) ||
|
|
7357
7385
|
(navigator.userAgent.includes('Mac') && 'ontouchend' in document);
|
|
7358
7386
|
if (isIOS) {
|
|
@@ -7365,7 +7393,7 @@ class ArService {
|
|
|
7365
7393
|
});
|
|
7366
7394
|
}
|
|
7367
7395
|
arSupported() {
|
|
7368
|
-
return __awaiter$
|
|
7396
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7369
7397
|
if (navigator.xr) {
|
|
7370
7398
|
return yield navigator.xr.isSessionSupported('immersive-ar');
|
|
7371
7399
|
}
|
|
@@ -7531,6 +7559,7 @@ class ArService {
|
|
|
7531
7559
|
this._lightProbe.addEventListener('reflectionchange', () => {
|
|
7532
7560
|
const rawData = this._glBinding.getReflectionCubeMap(this._lightProbe);
|
|
7533
7561
|
const texProps = this._renderer.properties.get(this._cubeMapTexture);
|
|
7562
|
+
// @ts-ignore
|
|
7534
7563
|
texProps.__webglTexture = rawData;
|
|
7535
7564
|
});
|
|
7536
7565
|
}
|
|
@@ -7687,7 +7716,7 @@ class ArService {
|
|
|
7687
7716
|
}
|
|
7688
7717
|
}
|
|
7689
7718
|
_createPlaneMaterial() {
|
|
7690
|
-
return __awaiter$
|
|
7719
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7691
7720
|
const pm = new MeshPhongMaterial({ transparent: true, side: DoubleSide });
|
|
7692
7721
|
pm.map = yield MaterialUtils.FromUrl('assets/textures/Floor/Tiles/ar_floor_texture.png', false, 1, 2, 2);
|
|
7693
7722
|
pm.map.flipY = false;
|
|
@@ -7696,7 +7725,7 @@ class ArService {
|
|
|
7696
7725
|
});
|
|
7697
7726
|
}
|
|
7698
7727
|
_onSessionStarted(session) {
|
|
7699
|
-
return __awaiter$
|
|
7728
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7700
7729
|
const domOverlay = document.getElementById('ar-root');
|
|
7701
7730
|
session.addEventListener('end', this._onSessionEnded.bind(this));
|
|
7702
7731
|
session.addEventListener('select', () => this._handleTouchEvent());
|
|
@@ -7818,7 +7847,7 @@ class ArService {
|
|
|
7818
7847
|
}
|
|
7819
7848
|
}
|
|
7820
7849
|
_checkIfHoldTouchEvent($event) {
|
|
7821
|
-
return __awaiter$
|
|
7850
|
+
return __awaiter$13(this, void 0, void 0, function* () {
|
|
7822
7851
|
setTimeout(() => {
|
|
7823
7852
|
if (!this.userInSelectionMenu && this._lastEventTimestamp === $event.timeStamp && this._session.inputSources.length === 1) {
|
|
7824
7853
|
this._holdingTouch = true;
|
|
@@ -8163,37 +8192,87 @@ class PostProcessingService {
|
|
|
8163
8192
|
this._renderer = renderer;
|
|
8164
8193
|
this._scene = scene;
|
|
8165
8194
|
this._camera = camera;
|
|
8166
|
-
this.
|
|
8195
|
+
this._width = width;
|
|
8196
|
+
this._height = height;
|
|
8197
|
+
this._postProcessingGui = new GUI();
|
|
8198
|
+
this._postProcessingGui.hide();
|
|
8199
|
+
this._renderPass = new RenderPass(this._scene, this._camera);
|
|
8200
|
+
this._outputPass = new OutputPass();
|
|
8201
|
+
this._initAoComposer();
|
|
8202
|
+
this._initAaComposer();
|
|
8203
|
+
this._initBlendComposer();
|
|
8204
|
+
}
|
|
8205
|
+
_initAaComposer() {
|
|
8206
|
+
this._aaRenderTarget = new WebGLRenderTarget(this._width, this._height, {
|
|
8207
|
+
samples: 4,
|
|
8208
|
+
type: HalfFloatType /*,
|
|
8167
8209
|
minFilter: NearestFilter,
|
|
8168
8210
|
magFilter: NearestFilter,
|
|
8169
8211
|
format: RGBAFormat,
|
|
8170
|
-
colorSpace: SRGBColorSpace
|
|
8171
|
-
});
|
|
8172
|
-
this.
|
|
8173
|
-
this.
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
8178
|
-
|
|
8212
|
+
colorSpace: SRGBColorSpace*/
|
|
8213
|
+
});
|
|
8214
|
+
this._aaComposer = new EffectComposer(this._renderer, this._aaRenderTarget);
|
|
8215
|
+
this._aaComposer.renderToScreen = false;
|
|
8216
|
+
const fxaaPass = new ShaderPass(FXAAShader);
|
|
8217
|
+
const pixelRatio = this._renderer.getPixelRatio();
|
|
8218
|
+
// fxaaPass.material.uniforms[ 'resolution' ].value.x = 1 / (this._width * pixelRatio);
|
|
8219
|
+
// fxaaPass.material.uniforms[ 'resolution' ].value.y = 1 / (this._height * pixelRatio);
|
|
8220
|
+
fxaaPass.uniforms['resolution'].value.x = 1 / (this._width * pixelRatio);
|
|
8221
|
+
fxaaPass.uniforms['resolution'].value.y = 1 / (this._height * pixelRatio);
|
|
8222
|
+
// this._taaRenderPass = new TAARenderPass(this._scene, this._camera, 0x000000, 0);
|
|
8223
|
+
// this._taaRenderPass.unbiased = true;
|
|
8224
|
+
// this._taaRenderPass.sampleLevel = 4;
|
|
8225
|
+
// this._renderPass.enabled = false;
|
|
8226
|
+
// sao
|
|
8227
|
+
// this._saoPass = new SAOPass( this._scene, this._camera, new Vector2(2048, 2048));
|
|
8228
|
+
// this._saoPass.resolution.set(2048, 2048);
|
|
8229
|
+
// this._saoPass.renderToScreen = true;
|
|
8230
|
+
// this._saoPass.enabled = true;
|
|
8231
|
+
this._aaComposer.addPass(this._renderPass);
|
|
8232
|
+
// this._aaComposer.addPass(this._taaRenderPass);
|
|
8233
|
+
this._aaComposer.addPass(fxaaPass);
|
|
8234
|
+
this._aaComposer.addPass(this._outputPass);
|
|
8235
|
+
this._createGuiTaaPass();
|
|
8236
|
+
}
|
|
8237
|
+
_initAoComposer() {
|
|
8238
|
+
this._aoRenderTarget = new WebGLRenderTarget(this._width, this._height, {
|
|
8239
|
+
samples: 4,
|
|
8240
|
+
type: HalfFloatType /*,
|
|
8241
|
+
minFilter: NearestFilter,
|
|
8242
|
+
magFilter: NearestFilter,
|
|
8243
|
+
format: RGBAFormat,
|
|
8244
|
+
colorSpace: SRGBColorSpace*/
|
|
8245
|
+
});
|
|
8246
|
+
this._aoComposer = new EffectComposer(this._renderer, this._aoRenderTarget);
|
|
8247
|
+
this._aoComposer.renderToScreen = false;
|
|
8248
|
+
this._n8aoPass = new N8AOPass(this._scene, this._camera, this._width, this._height);
|
|
8249
|
+
// this._n8aoPass.configuration.gammaCorrection = false;
|
|
8250
|
+
// this._n8aoPass.renderToScreen = false;
|
|
8251
|
+
// this._n8aoPass.debugMode = true;
|
|
8179
8252
|
// const smaaPass = new SMAAPass(width, height);
|
|
8180
8253
|
// this._composer.addPass(smaaPass);
|
|
8181
|
-
// const fxaaPass = new ShaderPass(FXAAShader);
|
|
8182
|
-
// const pixelRatio = this._renderer.getPixelRatio();
|
|
8183
|
-
// fxaaPass.material.uniforms[ 'resolution' ].value.x = 1 / (width * pixelRatio);
|
|
8184
|
-
// fxaaPass.material.uniforms[ 'resolution' ].value.y = 1 / (height * pixelRatio);
|
|
8185
|
-
this._outputPass = new OutputPass();
|
|
8186
|
-
this._taaRenderPass = new TAARenderPass(this._scene, this._camera, 0x000000, 0);
|
|
8187
|
-
this._taaRenderPass.unbiased = false;
|
|
8188
|
-
this._taaRenderPass.sampleLevel = 4;
|
|
8189
|
-
this._renderPass = new RenderPass(this._scene, this._camera);
|
|
8190
8254
|
// this._renderPass.enabled = false;
|
|
8191
|
-
|
|
8192
|
-
this.
|
|
8193
|
-
this.
|
|
8194
|
-
this.
|
|
8255
|
+
// sao
|
|
8256
|
+
// this._saoPass = new SAOPass( this._scene, this._camera, new Vector2(2048, 2048));
|
|
8257
|
+
// this._saoPass.resolution.set(2048, 2048);
|
|
8258
|
+
// this._saoPass.renderToScreen = true;
|
|
8259
|
+
// this._saoPass.enabled = true;
|
|
8260
|
+
this._aoComposer.addPass(this._renderPass);
|
|
8261
|
+
this._aoComposer.addPass(this._n8aoPass);
|
|
8262
|
+
this._aoComposer.addPass(this._outputPass);
|
|
8263
|
+
// this._composer.addPass(this._saoPass);
|
|
8264
|
+
// this._aoComposer.addPass(this._aoOutputPass);
|
|
8195
8265
|
this._createGui();
|
|
8196
|
-
|
|
8266
|
+
}
|
|
8267
|
+
_initBlendComposer() {
|
|
8268
|
+
this._blendShader = new ShaderPass(BlendShader);
|
|
8269
|
+
this._blendShader.uniforms.tDiffuse1.value = this._aaRenderTarget.texture;
|
|
8270
|
+
this._blendShader.uniforms.tDiffuse2.value = this._aoRenderTarget.texture;
|
|
8271
|
+
// blendShader.uniforms['mixRatio'].value = 0.9;
|
|
8272
|
+
this._blendComposer = new EffectComposer(this._renderer);
|
|
8273
|
+
this._blendComposer.renderToScreen = true;
|
|
8274
|
+
this._blendComposer.addPass(this._renderPass);
|
|
8275
|
+
this._blendComposer.addPass(this._blendShader);
|
|
8197
8276
|
}
|
|
8198
8277
|
_updatePass() {
|
|
8199
8278
|
this._n8aoPass.configuration.aoRadius = this._effectController.aoRadius;
|
|
@@ -8214,10 +8293,8 @@ class PostProcessingService {
|
|
|
8214
8293
|
this.render();
|
|
8215
8294
|
}
|
|
8216
8295
|
_createGuiTaaPass() {
|
|
8217
|
-
this._taaPassGui = new GUI();
|
|
8218
|
-
this._taaPassGui.hide();
|
|
8219
8296
|
const param = { TAAEnabled: '1', TAASampleLevel: 0 };
|
|
8220
|
-
this.
|
|
8297
|
+
this._postProcessingGui.add(param, 'TAAEnabled', {
|
|
8221
8298
|
'Disabled': '0',
|
|
8222
8299
|
'Enabled': '1'
|
|
8223
8300
|
}).onFinishChange(() => {
|
|
@@ -8226,7 +8303,7 @@ class PostProcessingService {
|
|
|
8226
8303
|
}
|
|
8227
8304
|
this.render();
|
|
8228
8305
|
});
|
|
8229
|
-
this.
|
|
8306
|
+
this._postProcessingGui.add(param, 'TAASampleLevel', {
|
|
8230
8307
|
'Level 0: 1 Sample': 0,
|
|
8231
8308
|
'Level 1: 2 Samples': 1,
|
|
8232
8309
|
'Level 2: 4 Samples': 2,
|
|
@@ -8239,13 +8316,16 @@ class PostProcessingService {
|
|
|
8239
8316
|
}
|
|
8240
8317
|
this.render();
|
|
8241
8318
|
});
|
|
8242
|
-
this._taaPassGui.open();
|
|
8243
8319
|
}
|
|
8244
8320
|
setSize(width, height) {
|
|
8245
|
-
this.
|
|
8321
|
+
this._aoComposer.setSize(width, height);
|
|
8322
|
+
this._aaComposer.setSize(width, height);
|
|
8323
|
+
this._blendComposer.setSize(width, height);
|
|
8246
8324
|
}
|
|
8247
8325
|
render() {
|
|
8248
|
-
this.
|
|
8326
|
+
this._aaComposer.render();
|
|
8327
|
+
this._aoComposer.render();
|
|
8328
|
+
this._blendComposer.render();
|
|
8249
8329
|
}
|
|
8250
8330
|
showGui() {
|
|
8251
8331
|
this._postProcessingGui.show(true);
|
|
@@ -8257,8 +8337,16 @@ class PostProcessingService {
|
|
|
8257
8337
|
show ? this.showGui() : this.hideGui();
|
|
8258
8338
|
}
|
|
8259
8339
|
_createGui() {
|
|
8260
|
-
|
|
8261
|
-
this._postProcessingGui.
|
|
8340
|
+
const param = { Enabled: '1' };
|
|
8341
|
+
this._postProcessingGui.add(param, 'Enabled', {
|
|
8342
|
+
'Disabled': '0',
|
|
8343
|
+
'Enabled': '1'
|
|
8344
|
+
}).onFinishChange(() => {
|
|
8345
|
+
if (this._aoComposer) {
|
|
8346
|
+
this._aoComposer.renderToScreen = (param.Enabled === '1');
|
|
8347
|
+
}
|
|
8348
|
+
this.render();
|
|
8349
|
+
});
|
|
8262
8350
|
this._postProcessingGui.add(this._effectController, 'aoSamples', 1.0, 64.0, 1.0).onChange(() => this._updatePass());
|
|
8263
8351
|
this._postProcessingGui.add(this._effectController, 'denoiseSamples', 1.0, 64.0, 1.0).onChange(() => this._updatePass());
|
|
8264
8352
|
this._postProcessingGui.add(this._effectController, 'denoiseRadius', 0.0, 24.0, 0.01).onChange(() => this._updatePass());
|
|
@@ -8305,15 +8393,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
8305
8393
|
}]
|
|
8306
8394
|
}], ctorParameters: function () { return [{ type: ConfigurationService }]; } });
|
|
8307
8395
|
|
|
8308
|
-
var __awaiter$13 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8309
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8310
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8311
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8312
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8313
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8314
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8315
|
-
});
|
|
8316
|
-
};
|
|
8317
8396
|
class SsrService {
|
|
8318
8397
|
constructor(_settingsService) {
|
|
8319
8398
|
this._settingsService = _settingsService;
|
|
@@ -8332,48 +8411,6 @@ class SsrService {
|
|
|
8332
8411
|
ngOnDestroy() {
|
|
8333
8412
|
this._subs.forEach(s => s.unsubscribe());
|
|
8334
8413
|
}
|
|
8335
|
-
init() {
|
|
8336
|
-
const socket = new WebSocket('ws://localhost:7005');
|
|
8337
|
-
const peerConnection = new RTCPeerConnection({
|
|
8338
|
-
iceServers: [{ urls: 'stun:stun.1.google.com:19302' }]
|
|
8339
|
-
});
|
|
8340
|
-
peerConnection.onicecandidate = (event) => {
|
|
8341
|
-
if (event.candidate) {
|
|
8342
|
-
socket.send(JSON.stringify({ candidate: event.candidate }));
|
|
8343
|
-
}
|
|
8344
|
-
};
|
|
8345
|
-
peerConnection.ontrack = (event) => {
|
|
8346
|
-
const remoteVideo = document.getElementById('remoteVideo');
|
|
8347
|
-
// @ts-ignore
|
|
8348
|
-
if (remoteVideo.srcObject !== event.streams[0]) {
|
|
8349
|
-
// @ts-ignore
|
|
8350
|
-
remoteVideo.srcObject = event.streams[0];
|
|
8351
|
-
}
|
|
8352
|
-
};
|
|
8353
|
-
socket.onmessage = (message) => __awaiter$13(this, void 0, void 0, function* () {
|
|
8354
|
-
try {
|
|
8355
|
-
const text = yield message.data.text();
|
|
8356
|
-
const data = JSON.parse(text);
|
|
8357
|
-
if (data.offer) {
|
|
8358
|
-
yield peerConnection.setRemoteDescription(new RTCSessionDescription(data.offer));
|
|
8359
|
-
const answer = yield peerConnection.createAnswer();
|
|
8360
|
-
yield peerConnection.setLocalDescription(answer);
|
|
8361
|
-
socket.send(JSON.stringify({ answer: peerConnection.localDescription }));
|
|
8362
|
-
}
|
|
8363
|
-
else if (data.candidate) {
|
|
8364
|
-
try {
|
|
8365
|
-
yield peerConnection.addIceCandidate(new RTCIceCandidate(data.candidate));
|
|
8366
|
-
}
|
|
8367
|
-
catch (e) {
|
|
8368
|
-
console.error('Error adding ICE-Candidate', e);
|
|
8369
|
-
}
|
|
8370
|
-
}
|
|
8371
|
-
}
|
|
8372
|
-
catch (e) {
|
|
8373
|
-
console.error(e);
|
|
8374
|
-
}
|
|
8375
|
-
});
|
|
8376
|
-
}
|
|
8377
8414
|
sceneChanged(scene) {
|
|
8378
8415
|
if (this._websocket.readyState === WebSocket.OPEN) {
|
|
8379
8416
|
const sceneClone = scene.clone(true);
|
|
@@ -8622,7 +8659,7 @@ class SceneService {
|
|
|
8622
8659
|
// throw new Error('No WebGPU or WebGL2 support');
|
|
8623
8660
|
// }
|
|
8624
8661
|
const canvasElement = document.createElement('canvas');
|
|
8625
|
-
const context = canvasElement.getContext('webgl2'
|
|
8662
|
+
const context = canvasElement.getContext('webgl2');
|
|
8626
8663
|
this.webGL2Available = context !== undefined;
|
|
8627
8664
|
// this.renderer = new WebGPURenderer({ alpha: true, antialias: true });
|
|
8628
8665
|
// this.renderer =
|
|
@@ -8636,15 +8673,21 @@ class SceneService {
|
|
|
8636
8673
|
// logarithmicDepthBuffer: true*/
|
|
8637
8674
|
// });
|
|
8638
8675
|
// this.renderer = new WebGLRenderer({alpha: true, antialias: false, preserveDrawingBuffer: true, premultipliedAlpha: true});
|
|
8639
|
-
this.renderer = new WebGLRenderer(
|
|
8640
|
-
|
|
8641
|
-
|
|
8642
|
-
|
|
8643
|
-
|
|
8644
|
-
|
|
8645
|
-
|
|
8676
|
+
this.renderer = new WebGLRenderer({
|
|
8677
|
+
/*
|
|
8678
|
+
precision: 'highp',
|
|
8679
|
+
powerPreference: 'high-performance',
|
|
8680
|
+
*/
|
|
8681
|
+
/*
|
|
8682
|
+
antialias: true,
|
|
8683
|
+
*/
|
|
8684
|
+
/*
|
|
8685
|
+
stencil: false,
|
|
8686
|
+
depth: false
|
|
8687
|
+
*/
|
|
8688
|
+
});
|
|
8646
8689
|
this.renderer.outputColorSpace = SRGBColorSpace;
|
|
8647
|
-
this.renderer.autoClear =
|
|
8690
|
+
this.renderer.autoClear = true;
|
|
8648
8691
|
this.renderer.setPixelRatio(window.devicePixelRatio);
|
|
8649
8692
|
this.renderer.toneMapping = NoToneMapping; // ACESFilmicToneMapping; // LinearToneMapping;
|
|
8650
8693
|
this.renderer.shadowMap.enabled = true;
|
|
@@ -8707,7 +8750,7 @@ class SceneService {
|
|
|
8707
8750
|
}
|
|
8708
8751
|
else {
|
|
8709
8752
|
this._postProcessing.render();
|
|
8710
|
-
this._outlineService.render();
|
|
8753
|
+
// this._outlineService.render();
|
|
8711
8754
|
}
|
|
8712
8755
|
// this.renderer.render(this.scene, this._cameraService.camera);
|
|
8713
8756
|
}
|
|
@@ -8788,7 +8831,7 @@ const modelEmpty = JSON.stringify(presetEmpty);
|
|
|
8788
8831
|
// }
|
|
8789
8832
|
//
|
|
8790
8833
|
class PresetsService {
|
|
8791
|
-
constructor(_appStateService, _permanentStoreService, _jsonUtils, _messageService, _settingsService, _configurationService, _storageService, _progressService, _sceneService) {
|
|
8834
|
+
constructor(_appStateService, _permanentStoreService, _jsonUtils, _messageService, _settingsService, _configurationService, _storageService, _progressService, _sceneService, _eventService) {
|
|
8792
8835
|
this._appStateService = _appStateService;
|
|
8793
8836
|
this._permanentStoreService = _permanentStoreService;
|
|
8794
8837
|
this._jsonUtils = _jsonUtils;
|
|
@@ -8798,6 +8841,7 @@ class PresetsService {
|
|
|
8798
8841
|
this._storageService = _storageService;
|
|
8799
8842
|
this._progressService = _progressService;
|
|
8800
8843
|
this._sceneService = _sceneService;
|
|
8844
|
+
this._eventService = _eventService;
|
|
8801
8845
|
// public static presetsPath = '/assets/presets';
|
|
8802
8846
|
this.isLoading = false;
|
|
8803
8847
|
this.beforeLoad = new Subject();
|
|
@@ -8854,11 +8898,17 @@ class PresetsService {
|
|
|
8854
8898
|
preset.model = JSON.stringify(json);
|
|
8855
8899
|
}
|
|
8856
8900
|
const modelObj = JSON.parse(preset.model);
|
|
8901
|
+
if (modelObj.floorplan && modelObj.floorplan.corners && Object.keys(modelObj.floorplan.corners).length > 0) {
|
|
8902
|
+
this._eventService.dirty.next(true);
|
|
8903
|
+
}
|
|
8857
8904
|
return JSON.stringify(!modelObj.hasOwnProperty('needRescale') ? this._reScaleModel(modelObj) : modelObj);
|
|
8858
8905
|
}));
|
|
8859
8906
|
}
|
|
8860
8907
|
_loadSavedRoomFromCloud(code) {
|
|
8861
|
-
this._loadRoomPlan(() => new Promise(resolve =>
|
|
8908
|
+
this._loadRoomPlan(() => new Promise(resolve => {
|
|
8909
|
+
this._eventService.dirty.next(true);
|
|
8910
|
+
this._permanentStoreService.load(code).subscribe((json) => resolve(JSON.stringify(json)));
|
|
8911
|
+
}));
|
|
8862
8912
|
}
|
|
8863
8913
|
_clear() {
|
|
8864
8914
|
return __awaiter$11(this, void 0, void 0, function* () {
|
|
@@ -9036,14 +9086,14 @@ class PresetsService {
|
|
|
9036
9086
|
}
|
|
9037
9087
|
}
|
|
9038
9088
|
}
|
|
9039
|
-
PresetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PresetsService, deps: [{ token: AppStateService }, { token: PermanentStoreService }, { token: JsonUtilsService }, { token: MessageBusService }, { token: HomedecoratorSettingsService }, { token: ConfigurationService }, { token: LocalStorageService }, { token: ProgressService }, { token: SceneService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9089
|
+
PresetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PresetsService, deps: [{ token: AppStateService }, { token: PermanentStoreService }, { token: JsonUtilsService }, { token: MessageBusService }, { token: HomedecoratorSettingsService }, { token: ConfigurationService }, { token: LocalStorageService }, { token: ProgressService }, { token: SceneService }, { token: HomedecoratorAppEventService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9040
9090
|
PresetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PresetsService, providedIn: 'root' });
|
|
9041
9091
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PresetsService, decorators: [{
|
|
9042
9092
|
type: Injectable,
|
|
9043
9093
|
args: [{
|
|
9044
9094
|
providedIn: 'root'
|
|
9045
9095
|
}]
|
|
9046
|
-
}], ctorParameters: function () { return [{ type: AppStateService }, { type: PermanentStoreService }, { type: JsonUtilsService }, { type: MessageBusService }, { type: HomedecoratorSettingsService }, { type: ConfigurationService }, { type: LocalStorageService }, { type: ProgressService }, { type: SceneService }]; } });
|
|
9096
|
+
}], ctorParameters: function () { return [{ type: AppStateService }, { type: PermanentStoreService }, { type: JsonUtilsService }, { type: MessageBusService }, { type: HomedecoratorSettingsService }, { type: ConfigurationService }, { type: LocalStorageService }, { type: ProgressService }, { type: SceneService }, { type: HomedecoratorAppEventService }]; } });
|
|
9047
9097
|
|
|
9048
9098
|
var DeviceSizeType;
|
|
9049
9099
|
(function (DeviceSizeType) {
|
|
@@ -12167,8 +12217,8 @@ class MediaResource {
|
|
|
12167
12217
|
/* tslint:disable */
|
|
12168
12218
|
const VersionInfo = {
|
|
12169
12219
|
application: "Homedecorator",
|
|
12170
|
-
appVersion: "255.1.
|
|
12171
|
-
revision: "
|
|
12220
|
+
appVersion: "255.1.4",
|
|
12221
|
+
revision: "112028"
|
|
12172
12222
|
};
|
|
12173
12223
|
/* tslint:enable */
|
|
12174
12224
|
|
|
@@ -12780,7 +12830,7 @@ class CustomShapeFloorItem extends FloorItem {
|
|
|
12780
12830
|
});
|
|
12781
12831
|
const origScale = this.metadata.scale ? new Vector3(1, 1, 1).divide(this.metadata.scale) : new Vector3(1, 1, 1);
|
|
12782
12832
|
const metadata = Object.assign({}, this.metadata);
|
|
12783
|
-
metadata.skin = this.skin;
|
|
12833
|
+
metadata.skin = Object.assign({}, this.skin);
|
|
12784
12834
|
const copy = new CustomShapeFloorItem(metadata, new Mesh(this.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z), materialsCloned));
|
|
12785
12835
|
copy.scaleGeometry(this.scale.x, this.scale.y, this.scale.z);
|
|
12786
12836
|
copy.calculateHalfSize();
|
|
@@ -12826,7 +12876,7 @@ class CustomCylinderFloorItem extends FloorItem {
|
|
|
12826
12876
|
});
|
|
12827
12877
|
const origScale = this.metadata.scale ? new Vector3(1, 1, 1).divide(this.metadata.scale) : new Vector3(1, 1, 1);
|
|
12828
12878
|
const metadata = Object.assign({}, this.metadata);
|
|
12829
|
-
metadata.skin = this.skin;
|
|
12879
|
+
metadata.skin = Object.assign({}, this.skin);
|
|
12830
12880
|
const copy = new CustomCylinderFloorItem(metadata, new Mesh(this.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z), materialsCloned));
|
|
12831
12881
|
copy.scaleGeometry(this.scale.x, this.scale.y, this.scale.z);
|
|
12832
12882
|
copy.calculateHalfSize();
|
|
@@ -13261,11 +13311,12 @@ var __awaiter$X = (this && this.__awaiter) || function (thisArg, _arguments, P,
|
|
|
13261
13311
|
});
|
|
13262
13312
|
};
|
|
13263
13313
|
class FloorService {
|
|
13264
|
-
constructor(_sceneService, _outlineService, _itemService, _settingsService) {
|
|
13314
|
+
constructor(_sceneService, _outlineService, _itemService, _settingsService, _messageService) {
|
|
13265
13315
|
this._sceneService = _sceneService;
|
|
13266
13316
|
this._outlineService = _outlineService;
|
|
13267
13317
|
this._itemService = _itemService;
|
|
13268
13318
|
this._settingsService = _settingsService;
|
|
13319
|
+
this._messageService = _messageService;
|
|
13269
13320
|
this._floors = [];
|
|
13270
13321
|
this._subs = [];
|
|
13271
13322
|
this._subs.push(this._sceneService.sceneInitialized.subscribe((initialized) => {
|
|
@@ -13310,6 +13361,8 @@ class FloorService {
|
|
|
13310
13361
|
else {
|
|
13311
13362
|
this._updateFloorMaterial(this._floors[0], floorMaterial, texture);
|
|
13312
13363
|
}
|
|
13364
|
+
// emit new texture for appearance-section
|
|
13365
|
+
this._messageService.emit(MessageType.ChangeTexture, texture);
|
|
13313
13366
|
// room.floorColor = null;
|
|
13314
13367
|
});
|
|
13315
13368
|
}
|
|
@@ -13461,14 +13514,14 @@ class FloorService {
|
|
|
13461
13514
|
return floorCenter;
|
|
13462
13515
|
}
|
|
13463
13516
|
}
|
|
13464
|
-
FloorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorService, deps: [{ token: SceneService }, { token: OutlineService }, { token: ItemService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13517
|
+
FloorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorService, deps: [{ token: SceneService }, { token: OutlineService }, { token: ItemService }, { token: HomedecoratorSettingsService }, { token: MessageBusService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13465
13518
|
FloorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorService, providedIn: 'root' });
|
|
13466
13519
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorService, decorators: [{
|
|
13467
13520
|
type: Injectable,
|
|
13468
13521
|
args: [{
|
|
13469
13522
|
providedIn: 'root'
|
|
13470
13523
|
}]
|
|
13471
|
-
}], ctorParameters: function () { return [{ type: SceneService }, { type: OutlineService }, { type: ItemService }, { type: HomedecoratorSettingsService }]; } });
|
|
13524
|
+
}], ctorParameters: function () { return [{ type: SceneService }, { type: OutlineService }, { type: ItemService }, { type: HomedecoratorSettingsService }, { type: MessageBusService }]; } });
|
|
13472
13525
|
|
|
13473
13526
|
class CeilingService {
|
|
13474
13527
|
constructor(_sceneService, _configurationService) {
|
|
@@ -13595,7 +13648,7 @@ class RoomService {
|
|
|
13595
13648
|
this._subs = [];
|
|
13596
13649
|
this._subs.push(this._appService.floorTexturesLoaded.subscribe((floors) => {
|
|
13597
13650
|
if (floors) {
|
|
13598
|
-
this._defaultFloorTexture = floors.find(f => f.default === true);
|
|
13651
|
+
this._defaultFloorTexture = floors.find(f => f.default === true && !f.useStandalone);
|
|
13599
13652
|
}
|
|
13600
13653
|
}), this._cameraService.cameraMovementChanged.subscribe(() => this._updateEdgeVisibility(this._cameraService.camera.position)), this._presetService.afterLoad.subscribe(() => this._updateEdgeVisibility(this._cameraService.camera.position)), this._viewModeService.viewModeChanged.subscribe((mode) => __awaiter$W(this, void 0, void 0, function* () {
|
|
13601
13654
|
if ((mode === ViewMode.RoomPlan3D || mode === ViewMode.TopView) && !_arService.arModeHasBeenActive()) {
|
|
@@ -13814,6 +13867,9 @@ class RoomService {
|
|
|
13814
13867
|
}
|
|
13815
13868
|
});
|
|
13816
13869
|
}
|
|
13870
|
+
resetAllRooms() {
|
|
13871
|
+
this.rooms = [];
|
|
13872
|
+
}
|
|
13817
13873
|
_showHideWalls(show) {
|
|
13818
13874
|
this.walls.forEach(w => w.showHideWall(show));
|
|
13819
13875
|
this._sceneService.needsRender = true;
|
|
@@ -14954,7 +15010,7 @@ class CustomShapeWallItem extends WallItem {
|
|
|
14954
15010
|
});
|
|
14955
15011
|
const origScale = this.metadata.scale ? new Vector3(1, 1, 1).divide(this.metadata.scale) : new Vector3(1, 1, 1);
|
|
14956
15012
|
const metadata = Object.assign({}, this.metadata);
|
|
14957
|
-
metadata.skin = this.skin;
|
|
15013
|
+
metadata.skin = Object.assign({}, this.skin);
|
|
14958
15014
|
const copy = new CustomShapeWallItem(metadata, new Mesh(this.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z), materialsCloned));
|
|
14959
15015
|
copy.scaleGeometry(this.scale.x, this.scale.y, this.scale.z);
|
|
14960
15016
|
copy.calculateHalfSize();
|
|
@@ -14998,7 +15054,7 @@ class CustomCylinderWallItem extends WallItem {
|
|
|
14998
15054
|
});
|
|
14999
15055
|
const origScale = this.metadata.scale ? new Vector3(1, 1, 1).divide(this.metadata.scale) : new Vector3(1, 1, 1);
|
|
15000
15056
|
const metadata = Object.assign({}, this.metadata);
|
|
15001
|
-
metadata.skin = this.skin;
|
|
15057
|
+
metadata.skin = Object.assign({}, this.skin);
|
|
15002
15058
|
const copy = new CustomCylinderWallItem(metadata, new Mesh(this.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z), materialsCloned));
|
|
15003
15059
|
copy.scaleGeometry(this.scale.x, this.scale.y, this.scale.z);
|
|
15004
15060
|
copy.calculateHalfSize();
|
|
@@ -16908,7 +16964,7 @@ class ApiServiceModule {
|
|
|
16908
16964
|
this.messageService.emit(MessageType.ShowLoadingIndicator, { title: 'Rendering...' });
|
|
16909
16965
|
this.requestRender(filename, camera, standalone, renderParameters);
|
|
16910
16966
|
}).catch(error => {
|
|
16911
|
-
|
|
16967
|
+
this.messageService.emit(MessageType.RenderError, { title: 'Upload error', message: error.message });
|
|
16912
16968
|
});
|
|
16913
16969
|
});
|
|
16914
16970
|
}
|
|
@@ -16946,8 +17002,8 @@ class ApiServiceModule {
|
|
|
16946
17002
|
return dataURL;
|
|
16947
17003
|
};
|
|
16948
17004
|
}
|
|
16949
|
-
}).catch(
|
|
16950
|
-
|
|
17005
|
+
}).catch(error => {
|
|
17006
|
+
this.messageService.emit(MessageType.RenderError, { title: 'Render error', message: error.message });
|
|
16951
17007
|
});
|
|
16952
17008
|
});
|
|
16953
17009
|
}
|
|
@@ -21461,7 +21517,7 @@ class FloorTileIntersectionService {
|
|
|
21461
21517
|
edge: 0,
|
|
21462
21518
|
total: 0,
|
|
21463
21519
|
};
|
|
21464
|
-
console.log(floorMesh.position);
|
|
21520
|
+
// console.log(floorMesh.position);
|
|
21465
21521
|
const { floorHits, edgeHits } = this._checkIntersection2(floorMesh, floorPattern, geometry);
|
|
21466
21522
|
for (const floorHit of floorHits) {
|
|
21467
21523
|
if (floorHit.isLeft) {
|
|
@@ -21610,7 +21666,6 @@ class BuildFurnitureService {
|
|
|
21610
21666
|
this.arPlacementUpdate = new Subject();
|
|
21611
21667
|
this.showElementToolbar = false;
|
|
21612
21668
|
this.isMouseOverObject = false;
|
|
21613
|
-
this.activeAnswers = [];
|
|
21614
21669
|
this.standAloneFirstBuildReady = false;
|
|
21615
21670
|
this._useNodeIdToLink = true;
|
|
21616
21671
|
this._standAlone = false;
|
|
@@ -21826,21 +21881,13 @@ class BuildFurnitureService {
|
|
|
21826
21881
|
}
|
|
21827
21882
|
result.instanceId = result.metaData.itemId;
|
|
21828
21883
|
this.startPosition = result.metaData.position ? result.metaData.position.clone() : new Vector3();
|
|
21829
|
-
|
|
21830
|
-
if (
|
|
21831
|
-
this._iOne.handleAnswersReceived(questionAndAnswers.answers);
|
|
21832
|
-
}
|
|
21833
|
-
this._appEventService.answerCountReceived.next(questionAndAnswers.answers.length);
|
|
21834
|
-
if (questionAndAnswers.answers.length === 0) {
|
|
21835
|
-
this.activeAnswers = [];
|
|
21836
|
-
this.activeQuestion = undefined;
|
|
21884
|
+
yield this._iOne.getQuestionAndAnswersAsync(); // see if there is user input needed
|
|
21885
|
+
if (this._iOne.activeAnswers.length === 0) {
|
|
21837
21886
|
yield this._prepareSelectionsAndDecos(result)
|
|
21838
21887
|
.catch((e) => Promise.reject(e));
|
|
21839
21888
|
return this.build(result);
|
|
21840
21889
|
}
|
|
21841
21890
|
else {
|
|
21842
|
-
this.activeQuestion = questionAndAnswers.question;
|
|
21843
|
-
this.activeAnswers = questionAndAnswers.answers;
|
|
21844
21891
|
if (firstBuild) {
|
|
21845
21892
|
yield this._prepareSelectionsAndDecos(result)
|
|
21846
21893
|
.catch((e) => Promise.reject(e));
|
|
@@ -22422,9 +22469,7 @@ class BuildFurnitureService {
|
|
|
22422
22469
|
this._startToBuildFromConfigurator(metadata);
|
|
22423
22470
|
}
|
|
22424
22471
|
else if (getAnswers) { // if not rebuild then check if we need to get answers
|
|
22425
|
-
|
|
22426
|
-
this._iOne.handleAnswersReceived(questionAndAnswers.answers);
|
|
22427
|
-
this._appEventService.answerCountReceived.next(questionAndAnswers.answers.length);
|
|
22472
|
+
yield this._iOne.getQuestionAndAnswersAsync(); // see if there is user input needed
|
|
22428
22473
|
}
|
|
22429
22474
|
});
|
|
22430
22475
|
}
|
|
@@ -23640,7 +23685,7 @@ SelectedChildMaterialTextureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
|
|
|
23640
23685
|
</div>
|
|
23641
23686
|
</div>
|
|
23642
23687
|
<input #inputFile [accept]="'image/*'" (change)="handleFileChange($event)" type="file" hidden/>
|
|
23643
|
-
`, 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;grid-column-gap:10px;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 .no-image,.map-title-wrapper img{cursor:pointer;display:flex;height:30px;width:30px;border:1px solid;position:relative}.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}.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:rgba(0,0,0,.5);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:rgba(255,255,255,.5)}\n"], components: [{ type: i4.ɵb, selector: "co-icon", inputs: ["icon", "iconData"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type:
|
|
23688
|
+
`, 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;grid-column-gap:10px;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 .no-image,.map-title-wrapper img{cursor:pointer;display:flex;height:30px;width:30px;border:1px solid;position:relative}.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}.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:rgba(0,0,0,.5);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:rgba(255,255,255,.5)}\n"], components: [{ type: i4.ɵb, selector: "co-icon", inputs: ["icon", "iconData"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }], animations: [
|
|
23644
23689
|
trigger('showHideMapContent', [
|
|
23645
23690
|
state('void', style({ 'height': '0', opacity: 0 })),
|
|
23646
23691
|
state('*', style({ 'height': '*', opacity: 1 })),
|
|
@@ -24311,7 +24356,7 @@ SelectedChildMaterialComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
24311
24356
|
</div>
|
|
24312
24357
|
</div>
|
|
24313
24358
|
</ng-container>
|
|
24314
|
-
`, isInline: true, styles: [".development-selected-child-material-wrapper{font-size:12px;position:fixed;right:0;top:65px;width:400px;height:100%;background:white;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:bold;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"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.ɵb, selector: "co-icon", inputs: ["icon", "iconData"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type:
|
|
24359
|
+
`, isInline: true, styles: [".development-selected-child-material-wrapper{font-size:12px;position:fixed;right:0;top:65px;width:400px;height:100%;background:white;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:bold;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"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.ɵb, selector: "co-icon", inputs: ["icon", "iconData"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: SelectedChildMaterialTextureComponent, selector: "development-selected-child-material-texture", inputs: ["map", "title"], outputs: ["mapChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }], pipes: { "localize": LocalizePipe } });
|
|
24315
24360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectedChildMaterialComponent, decorators: [{
|
|
24316
24361
|
type: Component,
|
|
24317
24362
|
args: [{
|
|
@@ -25558,7 +25603,7 @@ class EditLightComponent {
|
|
|
25558
25603
|
}
|
|
25559
25604
|
}
|
|
25560
25605
|
EditLightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditLightComponent, deps: [{ token: SceneService }, { token: LightsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
25561
|
-
EditLightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditLightComponent, 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 <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"hasPosition && !light.userData.topDownDirectional\">\r\n\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\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\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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\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 <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 <mat-option *ngFor=\"let mapSize of mapSizes\" [value]=\"mapSize\" (click)=\"updateShadowMapSize(mapSize)\">\r\n {{ mapSize }}\r\n </mat-option>\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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\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:white;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"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i1$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "color", "tabIndex", "invert", "max", "min", "step", "thumbLabel", "tickInterval", "value", "vertical", "displayWith", "valueText"], outputs: ["change", "input", "valueChange"], exportAs: ["matSlider"] }, { type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i7.MatLabel, selector: "mat-label" }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "localize": LocalizePipe }, animations: [
|
|
25606
|
+
EditLightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditLightComponent, 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 <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"hasPosition && !light.userData.topDownDirectional\">\r\n\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\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\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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\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 <ng-container *ngIf=\"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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 <mat-option *ngFor=\"let mapSize of mapSizes\" [value]=\"mapSize\" (click)=\"updateShadowMapSize(mapSize)\">\r\n {{ mapSize }}\r\n </mat-option>\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 </ng-container>\r\n\r\n <ng-container *ngIf=\"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 </ng-container>\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:white;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"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i1$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "color", "tabIndex", "invert", "max", "min", "step", "thumbLabel", "tickInterval", "value", "vertical", "displayWith", "valueText"], outputs: ["change", "input", "valueChange"], exportAs: ["matSlider"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i7.MatLabel, selector: "mat-label" }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "localize": LocalizePipe }, animations: [
|
|
25562
25607
|
trigger('showHideDialog', [
|
|
25563
25608
|
state('void', style({ opacity: 0 })),
|
|
25564
25609
|
state('*', style({ opacity: 1 })),
|
|
@@ -25715,7 +25760,7 @@ EditLightplanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
25715
25760
|
</button>
|
|
25716
25761
|
</div>
|
|
25717
25762
|
</div>
|
|
25718
|
-
`, 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:white;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"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type:
|
|
25763
|
+
`, 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:white;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"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "color", "tabIndex", "invert", "max", "min", "step", "thumbLabel", "tickInterval", "value", "vertical", "displayWith", "valueText"], outputs: ["change", "input", "valueChange"], exportAs: ["matSlider"] }, { type: i1$2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.MatLabel, selector: "mat-label" }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }], pipes: { "localize": LocalizePipe, "keys": KeysPipe } });
|
|
25719
25764
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditLightplanComponent, decorators: [{
|
|
25720
25765
|
type: Component,
|
|
25721
25766
|
args: [{
|
|
@@ -26102,7 +26147,7 @@ LightplanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
26102
26147
|
(saveClick)="savePreset($event)"
|
|
26103
26148
|
(cancelClick)="showPlanEditPopup = false"
|
|
26104
26149
|
></edit-lightplan>
|
|
26105
|
-
`, isInline: true, styles: [":host.popup-showing .lightplan-wrapper{opacity:.1!important}:host.show{display:flex}:host .lightplan-wrapper{opacity:1;position:fixed;background:white;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:white;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-select-panel .mat-option-text{display:flex;justify-content:space-between;align-items:center}\n"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type:
|
|
26150
|
+
`, isInline: true, styles: [":host.popup-showing .lightplan-wrapper{opacity:.1!important}:host.show{display:flex}:host .lightplan-wrapper{opacity:1;position:fixed;background:white;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:white;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-select-panel .mat-option-text{display:flex;justify-content:space-between;align-items:center}\n"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: EditLightComponent, selector: "edit-light", inputs: ["light"], outputs: ["okClick", "cancelClick"] }, { type: EditLightplanComponent, selector: "edit-lightplan", inputs: ["lightPreset"], outputs: ["saveClick", "cancelClick"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i12.MatSelectTrigger, selector: "mat-select-trigger" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "localize": LocalizePipe }, animations: [
|
|
26106
26151
|
trigger('showHideDialog', [
|
|
26107
26152
|
state('void', style({ opacity: 0 })),
|
|
26108
26153
|
state('*', style({ opacity: 1 })),
|
|
@@ -26335,7 +26380,7 @@ class SceneControlComponent {
|
|
|
26335
26380
|
this.addRenderOptions(this._sceneService.renderer);
|
|
26336
26381
|
this.addLights(this._sceneService.scene);
|
|
26337
26382
|
}
|
|
26338
|
-
addRenderOptions(renderer) {
|
|
26383
|
+
addRenderOptions(renderer /*| WebGPURenderer*/) {
|
|
26339
26384
|
const folder = this.gui.addFolder('renderer');
|
|
26340
26385
|
folder.add(renderer, 'toneMappingExposure', 0, 5).onChange(() => {
|
|
26341
26386
|
this._updateScene();
|
|
@@ -28093,7 +28138,7 @@ var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P,
|
|
|
28093
28138
|
});
|
|
28094
28139
|
};
|
|
28095
28140
|
class RenderDialogComponent {
|
|
28096
|
-
constructor(cameraService, renderService, messageService, _utilsService, _domSanitizer, _settingsService, _newRenderService, _3dmRenderApi) {
|
|
28141
|
+
constructor(cameraService, renderService, messageService, _utilsService, _domSanitizer, _settingsService, _newRenderService, _3dmRenderApi, _dialog) {
|
|
28097
28142
|
this.cameraService = cameraService;
|
|
28098
28143
|
this.renderService = renderService;
|
|
28099
28144
|
this.messageService = messageService;
|
|
@@ -28102,6 +28147,7 @@ class RenderDialogComponent {
|
|
|
28102
28147
|
this._settingsService = _settingsService;
|
|
28103
28148
|
this._newRenderService = _newRenderService;
|
|
28104
28149
|
this._3dmRenderApi = _3dmRenderApi;
|
|
28150
|
+
this._dialog = _dialog;
|
|
28105
28151
|
this.renderStatus = RenderStatus;
|
|
28106
28152
|
this.iconName = IconName;
|
|
28107
28153
|
this.renderModes = RenderModes;
|
|
@@ -28269,6 +28315,10 @@ class RenderDialogComponent {
|
|
|
28269
28315
|
this.messageService.emit(MessageType.ShowLoadingIndicator, { title: 'Uploading...' });
|
|
28270
28316
|
this._utilsService.prepRoomForRender(false, renderInput);
|
|
28271
28317
|
}
|
|
28318
|
+
cancelBlenderRender() {
|
|
28319
|
+
this.messageService.emit(MessageType.HideLoadingIndicator);
|
|
28320
|
+
this._dialog.closeAll();
|
|
28321
|
+
}
|
|
28272
28322
|
saveImage(url) {
|
|
28273
28323
|
const link = document.createElement('a');
|
|
28274
28324
|
link.setAttribute('target', '_blank');
|
|
@@ -28338,8 +28388,8 @@ class RenderDialogComponent {
|
|
|
28338
28388
|
}
|
|
28339
28389
|
}
|
|
28340
28390
|
}
|
|
28341
|
-
RenderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RenderDialogComponent, deps: [{ token: CameraService }, { token: RenderService }, { token: MessageBusService }, { token: UtilsService }, { token: i1.DomSanitizer }, { token: HomedecoratorSettingsService }, { token: NewRenderService }, { token: ApiServiceModule }], target: i0.ɵɵFactoryTarget.Component });
|
|
28342
|
-
RenderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RenderDialogComponent, selector: "rp-render-dialog", viewQueries: [{ propertyName: "renderImageField", first: true, predicate: ["render_image"], descendants: true, static: true }, { propertyName: "imageWidthField", first: true, predicate: ["render_image_width"], descendants: true, static: true }, { propertyName: "imageHeightField", first: true, predicate: ["render_image_height"], descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"renderService.serverData.renderMode === renderModes.RenderIone\">\r\n <div mat-dialog-content>\r\n <div class=\"render-camera-positions\">\r\n <div class=\"render-camera-positions-left\">\r\n <!--\r\n <button mat-raised-button class=\"matrixToggle\" (click)=\"toggleCameraPosition()\">{{ showMatrix ? ('HIDE_MATRIX' | localize) : ('SHOW_MATRIX' | localize) }}</button>\r\n <div class=\"position-matrix-container\" *ngIf=\"showMatrix\">\r\n <mat-grid-list [cols]=\"4\" rowHeight=\"35px\" class=\"camera_position_grid\">\r\n <ng-container *ngFor=\"let item of cameraMatrix; let i = index\">\r\n <mat-grid-tile colspan=\"1\"><b>{{ i }}:</b></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><span>{{item}}</span></mat-grid-tile>\r\n </ng-container>\r\n </mat-grid-list>\r\n </div>\r\n -->\r\n\r\n <h4>{{'LIGHTNING' | localize}}</h4>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-select [(ngModel)]=\"inputLight\">\r\n <mat-option *ngFor=\"let light of renderService.lightnings\" [value]=\"light.id\">{{ light.name }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <h4>{{'SIZE' | localize}}</h4>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-select [(value)]=\"inputSize\">\r\n <mat-option *ngFor=\"let size of renderService.imageSizes\" [value]=\"size.id\">{{ size.name }} | <em>{{ size.width }}x{{ size.height }}</em></mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <p>You selected: {{inputSize}}</p>\r\n <div class=\"position-separator\"></div>\r\n\r\n <h4>{{'NAME' | localize}}</h4>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [(ngModel)]=\"inputName\"\r\n />\r\n </mat-form-field>\r\n\r\n <p>{{ 'ADD_CURRENT_CAMERA_POSITION_TO_RENDER' | localize }}</p>\r\n\r\n <button mat-raised-button class=\"add_camera_position\" color=\"primary\" title=\"{{'ADD_CURRENT_POSITION' | localize}}\" (click)=\"addRenderCustom()\">\r\n {{'ADD_CURRENT_POSITION' | localize}}\r\n </button>\r\n\r\n <ng-container *ngIf=\"this.galleryInfo.items === 0\">\r\n\r\n <div class=\"position-separator\"></div>\r\n\r\n <p>{{ 'ADD_GALLERY_POSITIONS_TO_RENDER_INFO' | localize }}</p>\r\n\r\n <button mat-raised-button class=\"add_gallery_positions\" color=\"primary\" title=\"{{'ADD_GALLERY_POSITIONS' | localize}}\" (click)=\"addRenderGallery()\">\r\n {{'ADD_GALLERY_POSITIONS' | localize}}\r\n </button>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"render-camera-positions-right\">\r\n <mat-grid-list [cols]=\"16\" rowHeight=\"35px\" class=\"camera_positions_grid\">\r\n <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-head\"></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'AVAILABLE' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"5\"><div class=\"grid-tile-head\">{{'NAME' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'LIGHT' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'SIZE' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\"></mat-grid-tile>\r\n </mat-grid-list>\r\n <mat-grid-list [cols]=\"16\" rowHeight=\"55px\" class=\"camera_positions_grid\">\r\n <ng-container *ngFor=\"let render of renderService.renders; index as i\">\r\n <ng-container *ngIf=\"render.cameraPosition.type === 'custom' && render.productHash === renderService.currentProductHash\" class=\"grid_head\">\r\n <mat-grid-tile colspan=\"1\">\r\n <div class=\"grid-tile-content no-padding\" [hidden]=\"render.status === renderStatus.IsWaiting || render.status === renderStatus.IsRunning\">\r\n <input type=\"checkbox\" [(ngModel)]=\"inputReRenderChecked[i]\" [value]=\"render.id\" (change)=\"renderOnChange()\">\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\">\r\n <div class=\"grid-tile-content grid-tile-image\">\r\n <div class=\"image-container\">\r\n <mat-icon class=\"homedecorator-material-icons\" *ngIf=\"render.url === '' && render.status !== renderStatus.IsRunning\">camera_alt</mat-icon>\r\n <a href=\"{{ render.url }}\" target=\"_blank\" download *ngIf=\"render.url !== '' && render.status !== renderStatus.IsRunning\">\r\n <img src=\"{{ render.url }}\">\r\n </a>\r\n <mat-spinner *ngIf=\"render.status === renderStatus.IsRunning\" [diameter]=\"25\" [mode]=\"'determinate'\" [value]=\"render.progress > 10 ? render.progress : 10\"></mat-spinner>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"5\"><div class=\"grid-tile-content\">{{ render.cameraPosition.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-content\">{{ render.lightning.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-content\">{{ render.imageSize.name }} | <em>{{ render.imageSize.width }}x{{ render.imageSize.height }}</em></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-content no-padding right\"><button (click)=\"removeCameraPosition(render)\" class=\"remove-btn\" [hidden]=\"render.status === renderStatus.IsWaiting || render.status === renderStatus.IsRunning\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div></mat-grid-tile>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"this.galleryInfo.items > 0\">\r\n <ng-container>\r\n <mat-grid-tile colspan=\"1\" class=\"grid_head\">\r\n <div class=\"grid-tile-content no-padding\" [hidden]=\"galleryInfo.renderInfo.status === renderStatus.IsWaiting || galleryInfo.renderInfo.status === renderStatus.IsRunning\">\r\n <input type=\"checkbox\" (change)=\"galleryRenderOnChange($event)\">\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"8\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ 'GALLERY_IMAGES_FROM' | localize }} {{ galleryInfo.items }} {{ 'CAMERA_POSITIONS' | localize }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ galleryInfo.renderInfo.lightning.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ galleryInfo.renderInfo.imageSize.name }} | <em>{{ galleryInfo.renderInfo.imageSize.width }}x{{ galleryInfo.renderInfo.imageSize.height }}</em></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\" class=\"grid_head\"><div class=\"grid-tile-content no-padding right\"><button (click)=\"removeCameraPosition('gallery')\" class=\"remove-btn\" [hidden]=\"galleryInfo.renderInfo.status === renderStatus.IsWaiting || galleryInfo.renderInfo.status === renderStatus.IsRunning\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div></mat-grid-tile>\r\n </ng-container>\r\n <ng-container *ngFor=\"let render of renderService.renders; index as i\">\r\n <ng-container *ngIf=\"render.cameraPosition.type === 'gallery' && render.productHash === renderService.currentProductHash\">\r\n <mat-grid-tile colspan=\"2\">\r\n <div class=\"grid-tile-content\" [hidden]=\"true\"><input type=\"checkbox\" [(ngModel)]=\"inputReRenderChecked[i]\" [value]=\"render.id\" (change)=\"renderOnChange()\"></div>\r\n <div class=\"grid-tile-content small-padding grid-tile-image\">\r\n <div class=\"image-container\">\r\n <mat-icon class=\"homedecorator-material-icons\" *ngIf=\"render.url === '' && render.status !== renderStatus.IsRunning\">camera_alt</mat-icon>\r\n <a href=\"{{ render.url }}\" target=\"_blank\" download *ngIf=\"render.url !== '' && render.status !== renderStatus.IsRunning\">\r\n <img src=\"{{ render.url }}\">\r\n </a>\r\n <mat-spinner *ngIf=\"render.status === renderStatus.IsRunning\" [diameter]=\"25\" [mode]=\"'determinate'\" [value]=\"render.progress > 10 ? render.progress : 10\"></mat-spinner>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-grid-list>\r\n </div>\r\n </div>\r\n\r\n <button mat-raised-button class=\"render_btn\" (click)=\"addRendersToQueue()\" color=\"primary\" title=\"{{'CREATE_RENDERS' | localize}}\" [disabled]=\"!canRender || renderService.renderQueue.length > 0\">\r\n {{'CREATE_RENDERS' | localize}}\r\n </button>\r\n\r\n </div>\r\n\r\n <button mat-button mat-dialog-close class=\"close_btn\">X</button>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n\r\n <div mat-dialog-content>\r\n <div class=\"render-camera-positions\">\r\n <div class=\"render-camera-positions-left large\">\r\n <div *ngIf=\"imageRenderSource != ''\" class=\"render-image-content\">\r\n <img [src]=\"imageRenderSource\" #render_image>\r\n <div class=\"loader\" [ngClass]=\"(renderProgress == 100 ? 'ready' : '')\">\r\n <span class=\"loader_progress\" [style.width.%]=\"(renderProgress ? renderProgress : 0)\">\r\n <span>{{ (renderProgress ? renderProgress : 0) }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"imageRenderSource == ''\" class=\"image_spacer\">\r\n <mat-icon class=\"homedecorator-material-icons\">camera_alt</mat-icon>\r\n </div>\r\n <div class=\"position-separator\"></div>\r\n <mat-form-field class=\"face-select-form\" *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n <mat-label>{{\"IMAGE_SIZE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"renderService.selectedImageSize\">\r\n <mat-option *ngFor=\"let size of renderService.imageSizes\" [value]=\"size.id\">{{ size.name }} {{ size.width }}x{{ size.height }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"renderService.blenderRenderService\">\r\n <mat-form-field\r\n class=\"face-select-form\"\r\n *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n <mat-label>{{ \"ENVIRONMENT\" | localize }}</mat-label>\r\n <mat-select [(ngModel)]=\"renderService.selectedRenderScene\">\r\n <mat-option\r\n *ngFor=\"let scene of renderService.renderScenes\"\r\n [value]=\"scene.sceneAssetId\">{{ scene.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n\r\n\r\n<!-- <mat-form-field class=\"face-select-form\" *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">-->\r\n<!-- <mat-label>{{\"ENVIRONMENT\" | localize}}</mat-label>-->\r\n<!-- <mat-select [(ngModel)]=\"renderService.selectedEnvironment\">-->\r\n<!-- <mat-option *ngFor=\"let renderEnvironment of renderService.renderEnvironments\" [value]=\"renderEnvironment.id\">{{ renderEnvironment.name }}</mat-option>-->\r\n<!-- </mat-select>-->\r\n<!-- </mat-form-field>-->\r\n\r\n <button *ngIf=\"!renderService.blenderRenderService\" mat-raised-button (click)=\"startRenderingRoom()\" color=\"primary\" title=\"{{'MAKE_A_PICTURE' | localize}}\" [disabled]=\"disablePictureButton\">\r\n {{'MAKE_A_PICTURE' | localize}}\r\n </button>\r\n\r\n <button *ngIf=\"renderService.blenderRenderService\" mat-raised-button (click)=\"createBlenderRender()\" color=\"primary\" title=\"{{'MAKE_A_PICTURE' | localize}}\" [disabled]=\"disablePictureButton\">\r\n {{'MAKE_A_PICTURE' | localize}}\r\n </button>\r\n\r\n </div>\r\n\r\n\r\n<!-- <div class=\"render-camera-positions-right small\">-->\r\n<!-- <mat-grid-list [cols]=\"10\" rowHeight=\"35px\" class=\"camera_positions_grid\">-->\r\n<!-- <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'IMAGE' | localize}}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"6\"><div class=\"grid-tile-head\">{{'NAME' | localize}}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-head\"></div></mat-grid-tile>-->\r\n<!-- </mat-grid-list>-->\r\n<!-- <mat-grid-list [cols]=\"11\" rowHeight=\"55px\" class=\"camera_positions_grid\">-->\r\n<!-- <ng-container *ngFor=\"let image of renderedImages; let index = index\">-->\r\n<!-- <mat-grid-tile colspan=\"3\">-->\r\n<!-- <div class=\"grid-tile-content grid-tile-image\">-->\r\n<!-- <div class=\"image-container\">-->\r\n<!-- <a href=\"{{ image }}\" target=\"_blank\" download>-->\r\n<!-- <img src=\"{{ image }}\">-->\r\n<!-- </a>-->\r\n<!-- </div>-->\r\n<!-- </div>-->\r\n<!-- </mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"6\"><div class=\"grid-tile-content\">{{ 'IMAGE' | localize }}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"2\">-->\r\n<!-- <div class=\"grid-tile-content\">-->\r\n<!-- <button mat-icon-button (click)=\"saveImage(image)\" title=\"{{'DOWNLOAD_IMAGE' | localize}}\">-->\r\n<!-- <mat-icon class=\"homedecorator-material-icons\">get_app</mat-icon>-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n<!-- <div class=\"grid-tile-content no-padding right\"><button (click)=\"removeRender(image, index)\" class=\"remove-btn\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div>-->\r\n<!-- </mat-grid-tile>-->\r\n<!-- </ng-container>-->\r\n<!-- </mat-grid-list>-->\r\n<!-- </div>-->\r\n </div>\r\n\r\n <button mat-button mat-dialog-close class=\"close_btn\">X</button>\r\n\r\n </div>\r\n\r\n</ng-container>\r\n", styles: ["::ng-deep .render-dialog-content .mat-dialog-container{margin:0;padding:0}::ng-deep .render-dialog-content .mat-dialog-container .mat-dialog-content{margin:0;padding:0}:host{display:block;max-width:100%;position:relative;box-sizing:border-box}:host *{box-sizing:border-box}:host [hidden]{display:none!important}:host .close_btn{position:absolute;top:0;right:0;font-size:30px;padding:0;width:50px;min-width:0px;line-height:45px}:host .render_btn{position:absolute;left:65%;margin:0 0 0 -83px;bottom:15px}:host .render-camera-positions{display:flex;font-size:14px}:host .render-camera-positions .render-camera-positions-left{min-width:300px;background:#e4edf4;padding:15px;text-align:center}:host .render-camera-positions .render-camera-positions-left h3{text-align:left}:host .render-camera-positions .render-camera-positions-left h4{text-align:left;margin:0}:host .render-camera-positions .render-camera-positions-left .position-separator{width:100%;font-size:0;height:1px;background:#fff;margin:15px 0}:host .render-camera-positions .render-camera-positions-left p{font-size:12px;text-align:center;line-height:170%}:host .render-camera-positions .render-camera-positions-left button{font-size:12px;line-height:32px}:host .render-camera-positions .render-camera-positions-left button.matrixToggle{margin:0 0 5px}:host .render-camera-positions .render-camera-positions-left mat-grid-list{text-align:left}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile .mat-figure{justify-content:left}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile b{text-align:left;width:100%}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile span{display:inline-block;text-align:right;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 10px;background:#fff;border-radius:5px;line-height:30px;font-size:90%}:host .render-camera-positions .render-camera-positions-left .mat-form-field{width:100%}:host .render-camera-positions .render-camera-positions-left mat-slide-toggle{float:right}:host .render-camera-positions .render-camera-positions-left .render-image-content{width:100%;align-self:start;position:relative}:host .render-camera-positions .render-camera-positions-left .render-image-content img{width:100%;max-width:100%;align-self:start;border-radius:5px}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader{align-self:start;width:calc(100% - 20px);font-size:0;line-height:0;height:6px;position:absolute;left:10px;bottom:15px;z-index:2;text-align:left}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader.ready .loader_progress{background:#74B77F}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader.ready .loader_progress span{color:#74b77f;border-color:#74b77f}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader .loader_progress{vertical-align:top;display:inline-block;background:#3760a1;height:6px;position:relative;transition:.2s ease-in-out;-moz-transition:.2s ease-in-out;-webkit-transition:.2s ease-in-out;border-radius:5px;min-width:25px}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader .loader_progress span{float:left;width:25px;height:16px;line-height:16px;border-radius:4px;text-align:center;position:absolute;top:-5px;font-size:9px;font-weight:bold;background:#fff;right:0px}:host .render-camera-positions .render-camera-positions-left .image_spacer{position:relative;background:#fafafa;width:100%;height:200px;border-radius:5px}:host .render-camera-positions .render-camera-positions-left .image_spacer .mat-icon{position:absolute;margin:auto;left:0;top:0;right:0;bottom:0;width:60px;height:60px;font-size:60px}:host .render-camera-positions .render-camera-positions-right{width:70%;padding:15px 15px 66px;font-size:12px}:host .render-camera-positions .render-camera-positions-right.large{width:60%}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile{border-bottom:1px solid #e4edf4}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile.grid_head{border-color:#fff}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-head{width:100%;text-align:left;font-weight:bold;padding:0 15px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content{width:100%;text-align:left;padding:0 15px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.no-padding{padding:0}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.small-padding{padding:0 2px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.right{text-align:right}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container{width:100%;height:46px;border:1px solid #e4edf4;border-radius:5px;vertical-align:top;text-align:center;display:table;font-size:0}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container a{display:table-cell;vertical-align:middle}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container a img{max-width:100%;max-height:46px;display:inline-block}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container .mat-icon{height:46px;line-height:46px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container .mat-spinner{margin:11px 0 0;display:inline-block}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn{border:none;background:transparent;color:#0003;cursor:pointer}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn:hover{color:red}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn .mat-icon{height:18px;width:18px;font-size:18px}\n"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$2.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i3$2.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i15.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.MatLabel, selector: "mat-label" }], pipes: { "localize": LocalizePipe }, animations: [
|
|
28391
|
+
RenderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RenderDialogComponent, deps: [{ token: CameraService }, { token: RenderService }, { token: MessageBusService }, { token: UtilsService }, { token: i1.DomSanitizer }, { token: HomedecoratorSettingsService }, { token: NewRenderService }, { token: ApiServiceModule }, { token: i1$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
28392
|
+
RenderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RenderDialogComponent, selector: "rp-render-dialog", viewQueries: [{ propertyName: "renderImageField", first: true, predicate: ["render_image"], descendants: true, static: true }, { propertyName: "imageWidthField", first: true, predicate: ["render_image_width"], descendants: true, static: true }, { propertyName: "imageHeightField", first: true, predicate: ["render_image_height"], descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"renderService.serverData.renderMode === renderModes.RenderIone\">\r\n <div mat-dialog-content>\r\n <div class=\"render-camera-positions\">\r\n <div class=\"render-camera-positions-left\">\r\n <!--\r\n <button mat-raised-button class=\"matrixToggle\" (click)=\"toggleCameraPosition()\">{{ showMatrix ? ('HIDE_MATRIX' | localize) : ('SHOW_MATRIX' | localize) }}</button>\r\n <div class=\"position-matrix-container\" *ngIf=\"showMatrix\">\r\n <mat-grid-list [cols]=\"4\" rowHeight=\"35px\" class=\"camera_position_grid\">\r\n <ng-container *ngFor=\"let item of cameraMatrix; let i = index\">\r\n <mat-grid-tile colspan=\"1\"><b>{{ i }}:</b></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><span>{{item}}</span></mat-grid-tile>\r\n </ng-container>\r\n </mat-grid-list>\r\n </div>\r\n -->\r\n\r\n <h4>{{'LIGHTNING' | localize}}</h4>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-select [(ngModel)]=\"inputLight\">\r\n <mat-option *ngFor=\"let light of renderService.lightnings\" [value]=\"light.id\">{{ light.name }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <h4>{{'SIZE' | localize}}</h4>\r\n <mat-form-field class=\"face-select-form\">\r\n <mat-select [(value)]=\"inputSize\">\r\n <mat-option *ngFor=\"let size of renderService.imageSizes\" [value]=\"size.id\">{{ size.name }} | <em>{{ size.width }}x{{ size.height }}</em></mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <p>You selected: {{inputSize}}</p>\r\n <div class=\"position-separator\"></div>\r\n\r\n <h4>{{'NAME' | localize}}</h4>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [(ngModel)]=\"inputName\"\r\n />\r\n </mat-form-field>\r\n\r\n <p>{{ 'ADD_CURRENT_CAMERA_POSITION_TO_RENDER' | localize }}</p>\r\n\r\n <button mat-raised-button class=\"add_camera_position\" color=\"primary\" title=\"{{'ADD_CURRENT_POSITION' | localize}}\" (click)=\"addRenderCustom()\">\r\n {{'ADD_CURRENT_POSITION' | localize}}\r\n </button>\r\n\r\n <ng-container *ngIf=\"this.galleryInfo.items === 0\">\r\n\r\n <div class=\"position-separator\"></div>\r\n\r\n <p>{{ 'ADD_GALLERY_POSITIONS_TO_RENDER_INFO' | localize }}</p>\r\n\r\n <button mat-raised-button class=\"add_gallery_positions\" color=\"primary\" title=\"{{'ADD_GALLERY_POSITIONS' | localize}}\" (click)=\"addRenderGallery()\">\r\n {{'ADD_GALLERY_POSITIONS' | localize}}\r\n </button>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"render-camera-positions-right\">\r\n <mat-grid-list [cols]=\"16\" rowHeight=\"35px\" class=\"camera_positions_grid\">\r\n <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-head\"></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'AVAILABLE' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"5\"><div class=\"grid-tile-head\">{{'NAME' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'LIGHT' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'SIZE' | localize}}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\"></mat-grid-tile>\r\n </mat-grid-list>\r\n <mat-grid-list [cols]=\"16\" rowHeight=\"55px\" class=\"camera_positions_grid\">\r\n <ng-container *ngFor=\"let render of renderService.renders; index as i\">\r\n <ng-container *ngIf=\"render.cameraPosition.type === 'custom' && render.productHash === renderService.currentProductHash\" class=\"grid_head\">\r\n <mat-grid-tile colspan=\"1\">\r\n <div class=\"grid-tile-content no-padding\" [hidden]=\"render.status === renderStatus.IsWaiting || render.status === renderStatus.IsRunning\">\r\n <input type=\"checkbox\" [(ngModel)]=\"inputReRenderChecked[i]\" [value]=\"render.id\" (change)=\"renderOnChange()\">\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\">\r\n <div class=\"grid-tile-content grid-tile-image\">\r\n <div class=\"image-container\">\r\n <mat-icon class=\"homedecorator-material-icons\" *ngIf=\"render.url === '' && render.status !== renderStatus.IsRunning\">camera_alt</mat-icon>\r\n <a href=\"{{ render.url }}\" target=\"_blank\" download *ngIf=\"render.url !== '' && render.status !== renderStatus.IsRunning\">\r\n <img src=\"{{ render.url }}\">\r\n </a>\r\n <mat-spinner *ngIf=\"render.status === renderStatus.IsRunning\" [diameter]=\"25\" [mode]=\"'determinate'\" [value]=\"render.progress > 10 ? render.progress : 10\"></mat-spinner>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"5\"><div class=\"grid-tile-content\">{{ render.cameraPosition.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-content\">{{ render.lightning.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-content\">{{ render.imageSize.name }} | <em>{{ render.imageSize.width }}x{{ render.imageSize.height }}</em></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-content no-padding right\"><button (click)=\"removeCameraPosition(render)\" class=\"remove-btn\" [hidden]=\"render.status === renderStatus.IsWaiting || render.status === renderStatus.IsRunning\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div></mat-grid-tile>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"this.galleryInfo.items > 0\">\r\n <ng-container>\r\n <mat-grid-tile colspan=\"1\" class=\"grid_head\">\r\n <div class=\"grid-tile-content no-padding\" [hidden]=\"galleryInfo.renderInfo.status === renderStatus.IsWaiting || galleryInfo.renderInfo.status === renderStatus.IsRunning\">\r\n <input type=\"checkbox\" (change)=\"galleryRenderOnChange($event)\">\r\n </div>\r\n </mat-grid-tile>\r\n <mat-grid-tile colspan=\"8\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ 'GALLERY_IMAGES_FROM' | localize }} {{ galleryInfo.items }} {{ 'CAMERA_POSITIONS' | localize }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ galleryInfo.renderInfo.lightning.name }}</div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"3\" class=\"grid_head\"><div class=\"grid-tile-content\">{{ galleryInfo.renderInfo.imageSize.name }} | <em>{{ galleryInfo.renderInfo.imageSize.width }}x{{ galleryInfo.renderInfo.imageSize.height }}</em></div></mat-grid-tile>\r\n <mat-grid-tile colspan=\"1\" class=\"grid_head\"><div class=\"grid-tile-content no-padding right\"><button (click)=\"removeCameraPosition('gallery')\" class=\"remove-btn\" [hidden]=\"galleryInfo.renderInfo.status === renderStatus.IsWaiting || galleryInfo.renderInfo.status === renderStatus.IsRunning\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div></mat-grid-tile>\r\n </ng-container>\r\n <ng-container *ngFor=\"let render of renderService.renders; index as i\">\r\n <ng-container *ngIf=\"render.cameraPosition.type === 'gallery' && render.productHash === renderService.currentProductHash\">\r\n <mat-grid-tile colspan=\"2\">\r\n <div class=\"grid-tile-content\" [hidden]=\"true\"><input type=\"checkbox\" [(ngModel)]=\"inputReRenderChecked[i]\" [value]=\"render.id\" (change)=\"renderOnChange()\"></div>\r\n <div class=\"grid-tile-content small-padding grid-tile-image\">\r\n <div class=\"image-container\">\r\n <mat-icon class=\"homedecorator-material-icons\" *ngIf=\"render.url === '' && render.status !== renderStatus.IsRunning\">camera_alt</mat-icon>\r\n <a href=\"{{ render.url }}\" target=\"_blank\" download *ngIf=\"render.url !== '' && render.status !== renderStatus.IsRunning\">\r\n <img src=\"{{ render.url }}\">\r\n </a>\r\n <mat-spinner *ngIf=\"render.status === renderStatus.IsRunning\" [diameter]=\"25\" [mode]=\"'determinate'\" [value]=\"render.progress > 10 ? render.progress : 10\"></mat-spinner>\r\n </div>\r\n </div>\r\n </mat-grid-tile>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-grid-list>\r\n </div>\r\n </div>\r\n\r\n <button mat-raised-button class=\"render_btn\" (click)=\"addRendersToQueue()\" color=\"primary\" title=\"{{'CREATE_RENDERS' | localize}}\" [disabled]=\"!canRender || renderService.renderQueue.length > 0\">\r\n {{'CREATE_RENDERS' | localize}}\r\n </button>\r\n\r\n </div>\r\n\r\n <button mat-button mat-dialog-close class=\"close_btn\">X</button>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n\r\n <div mat-dialog-content>\r\n <div class=\"render-camera-positions\">\r\n <div class=\"render-camera-positions-left large\">\r\n <div *ngIf=\"imageRenderSource != ''\" class=\"render-image-content\">\r\n <img [src]=\"imageRenderSource\" #render_image>\r\n <div class=\"loader\" [ngClass]=\"(renderProgress == 100 ? 'ready' : '')\">\r\n <span class=\"loader_progress\" [style.width.%]=\"(renderProgress ? renderProgress : 0)\">\r\n <span>{{ (renderProgress ? renderProgress : 0) }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"imageRenderSource == ''\" class=\"image_spacer\">\r\n <mat-icon class=\"homedecorator-material-icons\">camera_alt</mat-icon>\r\n </div>\r\n <div class=\"position-separator\"></div>\r\n <mat-form-field class=\"face-select-form\" *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n <mat-label>{{\"IMAGE_SIZE\" | localize}}</mat-label>\r\n <mat-select [(ngModel)]=\"renderService.selectedImageSize\">\r\n <mat-option *ngFor=\"let size of renderService.imageSizes\" [value]=\"size.id\">{{ size.name }} {{ size.width }}x{{ size.height }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"renderService.blenderRenderService\">\r\n <mat-form-field\r\n class=\"face-select-form\"\r\n *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">\r\n <mat-label>{{ \"ENVIRONMENT\" | localize }}</mat-label>\r\n <mat-select [(ngModel)]=\"renderService.selectedRenderScene\">\r\n <mat-option\r\n *ngFor=\"let scene of renderService.renderScenes\"\r\n [value]=\"scene.sceneAssetId\">{{ scene.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n\r\n\r\n<!-- <mat-form-field class=\"face-select-form\" *ngIf=\"renderService.serverData.renderMode === renderModes.RenderRoom\">-->\r\n<!-- <mat-label>{{\"ENVIRONMENT\" | localize}}</mat-label>-->\r\n<!-- <mat-select [(ngModel)]=\"renderService.selectedEnvironment\">-->\r\n<!-- <mat-option *ngFor=\"let renderEnvironment of renderService.renderEnvironments\" [value]=\"renderEnvironment.id\">{{ renderEnvironment.name }}</mat-option>-->\r\n<!-- </mat-select>-->\r\n<!-- </mat-form-field>-->\r\n\r\n <button *ngIf=\"!renderService.blenderRenderService\" mat-raised-button (click)=\"startRenderingRoom()\" color=\"primary\" title=\"{{'MAKE_A_PICTURE' | localize}}\" [disabled]=\"disablePictureButton\">\r\n {{'MAKE_A_PICTURE' | localize}}\r\n </button>\r\n\r\n <button *ngIf=\"renderService.blenderRenderService\" mat-raised-button (click)=\"createBlenderRender()\" color=\"primary\" title=\"{{'MAKE_A_PICTURE' | localize}}\" [disabled]=\"disablePictureButton\">\r\n {{'MAKE_A_PICTURE' | localize}}\r\n </button>\r\n\r\n <button *ngIf=\"renderService.blenderRenderService\" mat-raised-button (click)=\"cancelBlenderRender()\" color=\"accent\" title=\"{{'CANCEL' | localize}}\" [disabled]=\"disablePictureButton\">\r\n {{'CANCEL' | localize}}\r\n </button>\r\n\r\n </div>\r\n\r\n\r\n<!-- <div class=\"render-camera-positions-right small\">-->\r\n<!-- <mat-grid-list [cols]=\"10\" rowHeight=\"35px\" class=\"camera_positions_grid\">-->\r\n<!-- <mat-grid-tile colspan=\"3\"><div class=\"grid-tile-head\">{{'IMAGE' | localize}}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"6\"><div class=\"grid-tile-head\">{{'NAME' | localize}}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"1\"><div class=\"grid-tile-head\"></div></mat-grid-tile>-->\r\n<!-- </mat-grid-list>-->\r\n<!-- <mat-grid-list [cols]=\"11\" rowHeight=\"55px\" class=\"camera_positions_grid\">-->\r\n<!-- <ng-container *ngFor=\"let image of renderedImages; let index = index\">-->\r\n<!-- <mat-grid-tile colspan=\"3\">-->\r\n<!-- <div class=\"grid-tile-content grid-tile-image\">-->\r\n<!-- <div class=\"image-container\">-->\r\n<!-- <a href=\"{{ image }}\" target=\"_blank\" download>-->\r\n<!-- <img src=\"{{ image }}\">-->\r\n<!-- </a>-->\r\n<!-- </div>-->\r\n<!-- </div>-->\r\n<!-- </mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"6\"><div class=\"grid-tile-content\">{{ 'IMAGE' | localize }}</div></mat-grid-tile>-->\r\n<!-- <mat-grid-tile colspan=\"2\">-->\r\n<!-- <div class=\"grid-tile-content\">-->\r\n<!-- <button mat-icon-button (click)=\"saveImage(image)\" title=\"{{'DOWNLOAD_IMAGE' | localize}}\">-->\r\n<!-- <mat-icon class=\"homedecorator-material-icons\">get_app</mat-icon>-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n<!-- <div class=\"grid-tile-content no-padding right\"><button (click)=\"removeRender(image, index)\" class=\"remove-btn\"><mat-icon class=\"homedecorator-material-icons\">delete</mat-icon></button></div>-->\r\n<!-- </mat-grid-tile>-->\r\n<!-- </ng-container>-->\r\n<!-- </mat-grid-list>-->\r\n<!-- </div>-->\r\n </div>\r\n\r\n <button mat-button mat-dialog-close class=\"close_btn\">X</button>\r\n\r\n </div>\r\n\r\n</ng-container>\r\n", styles: ["::ng-deep .render-dialog-content .mat-dialog-container{margin:0;padding:0}::ng-deep .render-dialog-content .mat-dialog-container .mat-dialog-content{margin:0;padding:0}:host{display:block;max-width:100%;position:relative;box-sizing:border-box}:host *{box-sizing:border-box}:host [hidden]{display:none!important}:host .close_btn{position:absolute;top:0;right:0;font-size:30px;padding:0;width:50px;min-width:0px;line-height:45px}:host .render_btn{position:absolute;left:65%;margin:0 0 0 -83px;bottom:15px}:host .render-camera-positions{display:flex;font-size:14px}:host .render-camera-positions .render-camera-positions-left{min-width:300px;background:#e4edf4;padding:15px;text-align:center}:host .render-camera-positions .render-camera-positions-left h3{text-align:left}:host .render-camera-positions .render-camera-positions-left h4{text-align:left;margin:0}:host .render-camera-positions .render-camera-positions-left .position-separator{width:100%;font-size:0;height:1px;background:#fff;margin:15px 0}:host .render-camera-positions .render-camera-positions-left p{font-size:12px;text-align:center;line-height:170%}:host .render-camera-positions .render-camera-positions-left button{font-size:12px;line-height:32px}:host .render-camera-positions .render-camera-positions-left button.matrixToggle{margin:0 0 5px}:host .render-camera-positions .render-camera-positions-left mat-grid-list{text-align:left}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile .mat-figure{justify-content:left}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile b{text-align:left;width:100%}:host .render-camera-positions .render-camera-positions-left mat-grid-list mat-grid-tile span{display:inline-block;text-align:right;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 10px;background:#fff;border-radius:5px;line-height:30px;font-size:90%}:host .render-camera-positions .render-camera-positions-left .mat-form-field{width:100%}:host .render-camera-positions .render-camera-positions-left mat-slide-toggle{float:right}:host .render-camera-positions .render-camera-positions-left .render-image-content{width:100%;align-self:start;position:relative}:host .render-camera-positions .render-camera-positions-left .render-image-content img{width:100%;max-width:100%;align-self:start;border-radius:5px}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader{align-self:start;width:calc(100% - 20px);font-size:0;line-height:0;height:6px;position:absolute;left:10px;bottom:15px;z-index:2;text-align:left}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader.ready .loader_progress{background:#74B77F}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader.ready .loader_progress span{color:#74b77f;border-color:#74b77f}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader .loader_progress{vertical-align:top;display:inline-block;background:#3760a1;height:6px;position:relative;transition:.2s ease-in-out;-moz-transition:.2s ease-in-out;-webkit-transition:.2s ease-in-out;border-radius:5px;min-width:25px}:host .render-camera-positions .render-camera-positions-left .render-image-content .loader .loader_progress span{float:left;width:25px;height:16px;line-height:16px;border-radius:4px;text-align:center;position:absolute;top:-5px;font-size:9px;font-weight:bold;background:#fff;right:0px}:host .render-camera-positions .render-camera-positions-left .image_spacer{position:relative;background:#fafafa;width:100%;height:200px;border-radius:5px}:host .render-camera-positions .render-camera-positions-left .image_spacer .mat-icon{position:absolute;margin:auto;left:0;top:0;right:0;bottom:0;width:60px;height:60px;font-size:60px}:host .render-camera-positions .render-camera-positions-right{width:70%;padding:15px 15px 66px;font-size:12px}:host .render-camera-positions .render-camera-positions-right.large{width:60%}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile{border-bottom:1px solid #e4edf4}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile.grid_head{border-color:#fff}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-head{width:100%;text-align:left;font-weight:bold;padding:0 15px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content{width:100%;text-align:left;padding:0 15px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.no-padding{padding:0}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.small-padding{padding:0 2px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.right{text-align:right}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container{width:100%;height:46px;border:1px solid #e4edf4;border-radius:5px;vertical-align:top;text-align:center;display:table;font-size:0}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container a{display:table-cell;vertical-align:middle}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container a img{max-width:100%;max-height:46px;display:inline-block}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container .mat-icon{height:46px;line-height:46px}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content.grid-tile-image .image-container .mat-spinner{margin:11px 0 0;display:inline-block}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn{border:none;background:transparent;color:#0003;cursor:pointer}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn:hover{color:red}:host .render-camera-positions .render-camera-positions-right .mat-grid-tile .grid-tile-content .remove-btn .mat-icon{height:18px;width:18px;font-size:18px}\n"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$2.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i3$2.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.MatLabel, selector: "mat-label" }], pipes: { "localize": LocalizePipe }, animations: [
|
|
28343
28393
|
trigger('slideInOut', [
|
|
28344
28394
|
state('1', style({ 'max-height': '*' })),
|
|
28345
28395
|
state('0', style({ 'max-height': '0px' })),
|
|
@@ -28360,7 +28410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
28360
28410
|
templateUrl: './render-dialog.component.html',
|
|
28361
28411
|
styleUrls: ['./render-dialog.component.scss']
|
|
28362
28412
|
}]
|
|
28363
|
-
}], ctorParameters: function () { return [{ type: CameraService }, { type: RenderService }, { type: MessageBusService }, { type: UtilsService }, { type: i1.DomSanitizer }, { type: HomedecoratorSettingsService }, { type: NewRenderService }, { type: ApiServiceModule }]; }, propDecorators: { renderImageField: [{
|
|
28413
|
+
}], ctorParameters: function () { return [{ type: CameraService }, { type: RenderService }, { type: MessageBusService }, { type: UtilsService }, { type: i1.DomSanitizer }, { type: HomedecoratorSettingsService }, { type: NewRenderService }, { type: ApiServiceModule }, { type: i1$1.MatDialog }]; }, propDecorators: { renderImageField: [{
|
|
28364
28414
|
type: ViewChild,
|
|
28365
28415
|
args: ['render_image', { static: true }]
|
|
28366
28416
|
}], imageWidthField: [{
|
|
@@ -30364,7 +30414,7 @@ class LiteSelectorComponent {
|
|
|
30364
30414
|
}
|
|
30365
30415
|
}
|
|
30366
30416
|
LiteSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LiteSelectorComponent, deps: [{ token: HomedecoratorConnectorService }, { token: BuildFurnitureService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30367
|
-
LiteSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LiteSelectorComponent, selector: "rp-lite-selector", inputs: { showAnswers: "showAnswers", show: "show", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", metadata: "metadata", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"show\">\r\n <rp-selections-summary *ngIf=\"showSelections && iOne.selectionsToDisplay.length > 0\" @showSelections [@.disabled]=\"!animateSlideout\"\r\n class=\"rp-selections-summary\"\r\n [showLabel]=\"showLabel\"\r\n [canClose]=\"canClose\"\r\n [customDimensions]=\"customDimensions\"\r\n [answersTemplate]=\"inlineAnswers ? templateAnswers : undefined\"\r\n [answerToShowFromSelectionText]=\"answerToShowFromSelectionText\"\r\n [selections]=\"iOne.selectionsToDisplay\"\r\n (selectSelection)=\"onSelectionsSummarySelectSelection($event)\"\r\n (closeClick)=\"onCloseLiteSelectorButtonClick()\"\r\n >\r\n </rp-selections-summary>\r\n <ng-container *ngIf=\"!inlineAnswers\" [ngTemplateOutlet]=\"templateAnswers\"></ng-container>\r\n</ng-container>\r\n\r\n<ng-template #templateAnswers>\r\n <rp-answers-slideout\r\n class=\"rp-answers-slideout\"\r\n [metadata]=\"metadata\"\r\n [isShown]=\"showAnswers &&
|
|
30417
|
+
LiteSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LiteSelectorComponent, selector: "rp-lite-selector", inputs: { showAnswers: "showAnswers", show: "show", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", metadata: "metadata", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"show\">\r\n <rp-selections-summary *ngIf=\"showSelections && iOne.selectionsToDisplay.length > 0\" @showSelections [@.disabled]=\"!animateSlideout\"\r\n class=\"rp-selections-summary\"\r\n [showLabel]=\"showLabel\"\r\n [canClose]=\"canClose\"\r\n [customDimensions]=\"customDimensions\"\r\n [answersTemplate]=\"inlineAnswers ? templateAnswers : undefined\"\r\n [answerToShowFromSelectionText]=\"answerToShowFromSelectionText\"\r\n [selections]=\"iOne.selectionsToDisplay\"\r\n (selectSelection)=\"onSelectionsSummarySelectSelection($event)\"\r\n (closeClick)=\"onCloseLiteSelectorButtonClick()\"\r\n >\r\n </rp-selections-summary>\r\n <ng-container *ngIf=\"!inlineAnswers\" [ngTemplateOutlet]=\"templateAnswers\"></ng-container>\r\n</ng-container>\r\n\r\n<ng-template #templateAnswers>\r\n <rp-answers-slideout\r\n class=\"rp-answers-slideout\"\r\n [metadata]=\"metadata\"\r\n [isShown]=\"showAnswers && iOne.activeAnswers.length > 0\"\r\n [showTitle]=\"!inlineAnswers\"\r\n [showFilter]=\"!inlineAnswers\"\r\n [useSlideout]=\"!inlineAnswers\"\r\n [customDimensions]=\"customDimensions\"\r\n [question]=\"iOne.activeQuestion\"\r\n [answers]=\"iOne.activeAnswers\"\r\n (answerChosen)=\"onAnswersSlideoutAnswerChosen($event)\"\r\n ></rp-answers-slideout>\r\n</ng-template>\r\n", styles: [":host.floating ::ng-deep rp-selections-summary{position:absolute;right:0;max-height:calc(100vh - 120px)}:host:not(.custom-dimensions).floating ::ng-deep rp-selections-summary{top:64px;max-height:calc(100vh - 184px)}\n"], components: [{ type: SelectionsSummaryComponent, selector: "rp-selections-summary", inputs: ["selections", "showLabel", "canClose", "answersTemplate", "answerToShowFromSelectionText", "customDimensions"], outputs: ["closeClick", "cancelAnswers", "selectSelection"] }, { type: AnswersSlideoutComponent, selector: "rp-answers-slideout", inputs: ["isShown", "question", "showTitle", "showFilter", "metadata", "answers", "useSlideout", "customDimensions"], outputs: ["isShownChange", "answerChosen"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
|
|
30368
30418
|
trigger('showSelections', [
|
|
30369
30419
|
state('void', style({ 'transform': 'translateX(100%)', opacity: 0 })),
|
|
30370
30420
|
state('*', style({ 'transform': 'translateX(0%)', opacity: 1 })),
|
|
@@ -31063,12 +31113,13 @@ var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P,
|
|
|
31063
31113
|
});
|
|
31064
31114
|
};
|
|
31065
31115
|
class FloorplannerComponent {
|
|
31066
|
-
constructor(_floorplanService, _messageBusService, _configurationService, _dimensionService, _viewModeService) {
|
|
31116
|
+
constructor(_floorplanService, _messageBusService, _configurationService, _dimensionService, _viewModeService, _roomService) {
|
|
31067
31117
|
this._floorplanService = _floorplanService;
|
|
31068
31118
|
this._messageBusService = _messageBusService;
|
|
31069
31119
|
this._configurationService = _configurationService;
|
|
31070
31120
|
this._dimensionService = _dimensionService;
|
|
31071
31121
|
this._viewModeService = _viewModeService;
|
|
31122
|
+
this._roomService = _roomService;
|
|
31072
31123
|
this.selectedWallChange = new Subject();
|
|
31073
31124
|
this._viewScaleMin = 50;
|
|
31074
31125
|
this._viewScaleMax = 300;
|
|
@@ -31182,7 +31233,11 @@ class FloorplannerComponent {
|
|
|
31182
31233
|
}
|
|
31183
31234
|
}
|
|
31184
31235
|
showStartMessage() {
|
|
31185
|
-
this._diagramBackground
|
|
31236
|
+
if (this._diagramBackground) {
|
|
31237
|
+
this._diagramBackground.src = '';
|
|
31238
|
+
}
|
|
31239
|
+
this._floorplanService.reset();
|
|
31240
|
+
this._draw();
|
|
31186
31241
|
this.showStartingMessages = true;
|
|
31187
31242
|
}
|
|
31188
31243
|
setMode(mode) {
|
|
@@ -31656,7 +31711,13 @@ class FloorplannerComponent {
|
|
|
31656
31711
|
this.setSelectedMode(value);
|
|
31657
31712
|
}
|
|
31658
31713
|
setDiagramSettings(input) {
|
|
31714
|
+
this.reset();
|
|
31715
|
+
this._resetOrigin();
|
|
31716
|
+
this._viewScale = 100;
|
|
31717
|
+
this._updateCmPerPixel();
|
|
31718
|
+
this._draw();
|
|
31659
31719
|
this._floorplanService.reset();
|
|
31720
|
+
this._roomService.resetAllRooms();
|
|
31660
31721
|
this._diagramBackground = input.background;
|
|
31661
31722
|
this._diagramBackgroundHeight = input.backgroundHeight;
|
|
31662
31723
|
this._diagramBackgroundWidth = input.backgroundWidth;
|
|
@@ -32308,8 +32369,8 @@ class FloorplannerComponent {
|
|
|
32308
32369
|
this._wallLength = null;
|
|
32309
32370
|
}
|
|
32310
32371
|
}
|
|
32311
|
-
FloorplannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorplannerComponent, deps: [{ token: FloorplanService }, { token: MessageBusService }, { token: ConfigurationService }, { token: DimensioningService }, { token: ViewModeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32312
|
-
FloorplannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FloorplannerComponent, selector: "floor-planner", outputs: { selectedWallChange: "selectedWallChange" }, host: { listeners: { "document:keydown": "handleDocKeyDown($event)", "document:keyup": "handleDocKeyUp($event)", "window:resize": "resizeGrid()" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["floorplannerCanvas"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<canvas #floorplannerCanvas\r\n (contextmenu)=\"handleContextMenu($event)\"\r\n (mousedown)=\"handleMouseDown($event)\"\r\n (mousemove)=\"handleMouseMove($event)\"\r\n (mouseup)=\"handleMouseUp($event)\"\r\n (mouseleave)=\"handleMouseLeave($event)\"\r\n (wheel)=\"handleMouseWheel($event)\"\r\n (touchstart)=\"handleTouchStart($event)\"\r\n (touchmove)=\"handleTouchMove($event)\"\r\n (touchend)=\"handleTouchUp($event)\"\r\n (touchcancel)=\"handleTouchEnd($event)\"\r\n></canvas>\r\n\r\n<wall-length-input></wall-length-input>\r\n\r\n<div class=\"controls-top\">\r\n <mat-button-toggle-group class=\"mode-toggle\"\r\n (change)=\"changeFloorplannerMode($event.value)\"\r\n [value]=\"selectedMode\"\r\n >\r\n <mat-button-toggle [value]=\"floorplannerMode.Draw\" [matTooltip]=\"'DRAW_WALLS' | localize\">\r\n <mat-icon class=\"homedecorator-material-icons\">edit</mat-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"floorplannerMode.Move\" [matTooltip]=\"'SELECT_AND_MOVE_WALLS' | localize\">\r\n <mat-icon class=\"homedecorator-material-icons\" svgIcon=\"hand-pointer\"></mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div class=\"hint\" *ngIf=\"mode === floorplannerMode.Drawing\" (click)=\"changeFloorplannerMode(floorplannerMode.Draw)\">\r\n {{ 'CLICK_HERE_TO_EXIT_DRAWING_MODE_OR_PRESS_THE_ESC_KEY' | localize }}\r\n</div>\r\n\r\n<div class=\"hint\" *ngIf=\"mode === floorplannerMode.Draw && this.showStartingMessages\">\r\n {{ 'TAB_ANYWHERE_TO_START' | localize }}\r\n</div>\r\n", 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>*{pointer-events:all;background:#fff;margin:0 3px}.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}.mode-toggle>.mat-button-toggle-checked{color:#fff;background-color:#3760a1}\n"], components: [{ type: WallLengthInputComponent, selector: "wall-length-input" }, { type:
|
|
32372
|
+
FloorplannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorplannerComponent, deps: [{ token: FloorplanService }, { token: MessageBusService }, { token: ConfigurationService }, { token: DimensioningService }, { token: ViewModeService }, { token: RoomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32373
|
+
FloorplannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FloorplannerComponent, selector: "floor-planner", outputs: { selectedWallChange: "selectedWallChange" }, host: { listeners: { "document:keydown": "handleDocKeyDown($event)", "document:keyup": "handleDocKeyUp($event)", "window:resize": "resizeGrid()" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["floorplannerCanvas"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<canvas #floorplannerCanvas\r\n (contextmenu)=\"handleContextMenu($event)\"\r\n (mousedown)=\"handleMouseDown($event)\"\r\n (mousemove)=\"handleMouseMove($event)\"\r\n (mouseup)=\"handleMouseUp($event)\"\r\n (mouseleave)=\"handleMouseLeave($event)\"\r\n (wheel)=\"handleMouseWheel($event)\"\r\n (touchstart)=\"handleTouchStart($event)\"\r\n (touchmove)=\"handleTouchMove($event)\"\r\n (touchend)=\"handleTouchUp($event)\"\r\n (touchcancel)=\"handleTouchEnd($event)\"\r\n></canvas>\r\n\r\n<wall-length-input></wall-length-input>\r\n\r\n<div class=\"controls-top\">\r\n <mat-button-toggle-group class=\"mode-toggle\"\r\n (change)=\"changeFloorplannerMode($event.value)\"\r\n [value]=\"selectedMode\"\r\n >\r\n <mat-button-toggle [value]=\"floorplannerMode.Draw\" [matTooltip]=\"'DRAW_WALLS' | localize\">\r\n <mat-icon class=\"homedecorator-material-icons\">edit</mat-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"floorplannerMode.Move\" [matTooltip]=\"'SELECT_AND_MOVE_WALLS' | localize\">\r\n <mat-icon class=\"homedecorator-material-icons\" svgIcon=\"hand-pointer\"></mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div class=\"hint\" *ngIf=\"mode === floorplannerMode.Drawing\" (click)=\"changeFloorplannerMode(floorplannerMode.Draw)\">\r\n {{ 'CLICK_HERE_TO_EXIT_DRAWING_MODE_OR_PRESS_THE_ESC_KEY' | localize }}\r\n</div>\r\n\r\n<div class=\"hint\" *ngIf=\"mode === floorplannerMode.Draw && this.showStartingMessages\">\r\n {{ 'TAB_ANYWHERE_TO_START' | localize }}\r\n</div>\r\n", 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>*{pointer-events:all;background:#fff;margin:0 3px}.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}.mode-toggle>.mat-button-toggle-checked{color:#fff;background-color:#3760a1}\n"], components: [{ type: WallLengthInputComponent, selector: "wall-length-input" }, { type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": LocalizePipe } });
|
|
32313
32374
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FloorplannerComponent, decorators: [{
|
|
32314
32375
|
type: Component,
|
|
32315
32376
|
args: [{
|
|
@@ -32317,7 +32378,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
32317
32378
|
templateUrl: './floorplanner.component.html',
|
|
32318
32379
|
styleUrls: ['./floorplanner.component.scss']
|
|
32319
32380
|
}]
|
|
32320
|
-
}], ctorParameters: function () { return [{ type: FloorplanService }, { type: MessageBusService }, { type: ConfigurationService }, { type: DimensioningService }, { type: ViewModeService }]; }, propDecorators: { canvasElement: [{
|
|
32381
|
+
}], ctorParameters: function () { return [{ type: FloorplanService }, { type: MessageBusService }, { type: ConfigurationService }, { type: DimensioningService }, { type: ViewModeService }, { type: RoomService }]; }, propDecorators: { canvasElement: [{
|
|
32321
32382
|
type: ViewChild,
|
|
32322
32383
|
args: ['floorplannerCanvas', { read: ElementRef, static: true }]
|
|
32323
32384
|
}], selectedWallChange: [{
|
|
@@ -33431,7 +33492,8 @@ var TextureEditorOptions;
|
|
|
33431
33492
|
TextureEditorOptions[TextureEditorOptions["Both"] = 3] = "Both";
|
|
33432
33493
|
})(TextureEditorOptions || (TextureEditorOptions = {}));
|
|
33433
33494
|
class TextureEditorComponent {
|
|
33434
|
-
constructor(_settingsService) {
|
|
33495
|
+
constructor(messageService, _settingsService) {
|
|
33496
|
+
this.messageService = messageService;
|
|
33435
33497
|
this._settingsService = _settingsService;
|
|
33436
33498
|
this.textureType = TextureType;
|
|
33437
33499
|
this.dragNDropEnforced = false;
|
|
@@ -33473,6 +33535,7 @@ class TextureEditorComponent {
|
|
|
33473
33535
|
};
|
|
33474
33536
|
};
|
|
33475
33537
|
// this.dampSetTexture = this.createDampener(this.setTexture);
|
|
33538
|
+
this._subs.push(this.messageService.subscribe(MessageType.ChangeTexture, (texture) => this.setNewTexture(texture)));
|
|
33476
33539
|
}
|
|
33477
33540
|
ngOnInit() {
|
|
33478
33541
|
this.setTiled(false);
|
|
@@ -33492,7 +33555,9 @@ class TextureEditorComponent {
|
|
|
33492
33555
|
}
|
|
33493
33556
|
ngOnDestroy() {
|
|
33494
33557
|
// this.dampSetTexture.release();
|
|
33495
|
-
this._subs.forEach((s) => {
|
|
33558
|
+
this._subs.forEach((s) => {
|
|
33559
|
+
s.unsubscribe();
|
|
33560
|
+
});
|
|
33496
33561
|
this.canvas.nativeElement.removeEventListener('mousedown', () => this.onMouseDown());
|
|
33497
33562
|
this.canvas.nativeElement.removeEventListener('mouseup', () => this.onMouseUp());
|
|
33498
33563
|
this.canvas.nativeElement.removeEventListener('mousemove', e => this.onMouseMove(e));
|
|
@@ -33516,6 +33581,9 @@ class TextureEditorComponent {
|
|
|
33516
33581
|
this.initializeTexture();
|
|
33517
33582
|
}
|
|
33518
33583
|
}
|
|
33584
|
+
setNewTexture(texture) {
|
|
33585
|
+
this.plainTexture = texture;
|
|
33586
|
+
}
|
|
33519
33587
|
handleRemoveTextureClick(event) {
|
|
33520
33588
|
this.imageHasBeenResized = false;
|
|
33521
33589
|
this.removeTexture.emit(event);
|
|
@@ -33655,7 +33723,13 @@ class TextureEditorComponent {
|
|
|
33655
33723
|
}
|
|
33656
33724
|
initializeTexture() {
|
|
33657
33725
|
return __awaiter$p(this, void 0, void 0, function* () {
|
|
33658
|
-
|
|
33726
|
+
let texture;
|
|
33727
|
+
if (this.texturePlane && this.texturePlane.getTexture() !== undefined) {
|
|
33728
|
+
texture = this.texturePlane.getTexture();
|
|
33729
|
+
}
|
|
33730
|
+
else {
|
|
33731
|
+
texture = this.plainTexture;
|
|
33732
|
+
}
|
|
33659
33733
|
if (texture) {
|
|
33660
33734
|
yield this._loadTextureData(texture, false);
|
|
33661
33735
|
}
|
|
@@ -33776,6 +33850,7 @@ class TextureEditorComponent {
|
|
|
33776
33850
|
// this.dampSetTexture.emit(texture);
|
|
33777
33851
|
this.imageHasBeenResized = resized;
|
|
33778
33852
|
this.setTexture.emit(texture);
|
|
33853
|
+
// this.setNewTexture(texture);
|
|
33779
33854
|
});
|
|
33780
33855
|
}
|
|
33781
33856
|
onMouseMove(event) {
|
|
@@ -33980,8 +34055,8 @@ class TextureEditorComponent {
|
|
|
33980
34055
|
return destCanvas;
|
|
33981
34056
|
}
|
|
33982
34057
|
}
|
|
33983
|
-
TextureEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextureEditorComponent, deps: [{ token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
33984
|
-
TextureEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextureEditorComponent, selector: "rp-texture-editor", inputs: { width: "width", height: "height", texturePlane: "texturePlane", plainTexture: "plainTexture", changedTexture: "changedTexture", 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<div class=\"resize-message-wrapper\" *ngIf=\"imageHasBeenResized\">\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\r\n 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 >\r\n <div\r\n class=\"canvas-wrapper\"\r\n fxLayout=\"column inline\"\r\n fxLayoutAlign=\"center center\"\r\n >\r\n <canvas [hidden]=\"texture && texture.stretch\" #canvas></canvas>\r\n <mat-button-toggle-group\r\n *ngIf=\"options === Options.Both\"\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 </div>\r\n </div>\r\n\r\n <div class=\"sliders\" *ngIf=\"texture?.type === textureType.CustomPattern\r\n || ((texture?.type === textureType.Basic || texture?.type === textureType.PBR)\r\n && options === Options.None)\r\n\"\r\n >\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 <div class=\"sliders\" *ngIf=\"!isBasic(texture) && !isPBR(texture)\">\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 <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:bold;font-size:.9em}\n"], components: [{ type: FileDropComponent, selector: "rp-file-drop", inputs: ["showDragDrop", "showRemove"], outputs: ["fileContentChanged", "removeClick"] }, { type:
|
|
34058
|
+
TextureEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextureEditorComponent, deps: [{ token: MessageBusService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34059
|
+
TextureEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextureEditorComponent, selector: "rp-texture-editor", inputs: { width: "width", height: "height", texturePlane: "texturePlane", plainTexture: "plainTexture", changedTexture: "changedTexture", 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<div class=\"resize-message-wrapper\" *ngIf=\"imageHasBeenResized\">\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\r\n 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 >\r\n <div\r\n class=\"canvas-wrapper\"\r\n fxLayout=\"column inline\"\r\n fxLayoutAlign=\"center center\"\r\n >\r\n <canvas [hidden]=\"texture && texture.stretch\" #canvas></canvas>\r\n <mat-button-toggle-group\r\n *ngIf=\"options === Options.Both\"\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 </div>\r\n </div>\r\n\r\n <div class=\"sliders\" *ngIf=\"texture?.type === textureType.CustomPattern\r\n || ((texture?.type === textureType.Basic || texture?.type === textureType.PBR)\r\n && options === Options.None)\r\n\"\r\n >\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 <div class=\"sliders\" *ngIf=\"!isBasic(texture) && !isPBR(texture)\">\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 <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:bold;font-size:.9em}\n"], components: [{ type: FileDropComponent, selector: "rp-file-drop", inputs: ["showDragDrop", "showRemove"], outputs: ["fileContentChanged", "removeClick"] }, { type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: SliderInputComponent, selector: "rp-slider-input", inputs: ["title", "min", "max", "step", "value"], outputs: ["onChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.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"] }, { type: i3$3.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"] }, { type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }], pipes: { "localize": LocalizePipe } });
|
|
33985
34060
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextureEditorComponent, decorators: [{
|
|
33986
34061
|
type: Component,
|
|
33987
34062
|
args: [{
|
|
@@ -33989,7 +34064,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
33989
34064
|
templateUrl: './texture-editor.component.html',
|
|
33990
34065
|
styleUrls: ['./texture-editor.component.scss']
|
|
33991
34066
|
}]
|
|
33992
|
-
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }]; }, propDecorators: { fileInput: [{
|
|
34067
|
+
}], ctorParameters: function () { return [{ type: MessageBusService }, { type: HomedecoratorSettingsService }]; }, propDecorators: { fileInput: [{
|
|
33993
34068
|
type: ViewChild,
|
|
33994
34069
|
args: ['fileInput', { static: true }]
|
|
33995
34070
|
}], canvas: [{
|
|
@@ -34743,7 +34818,7 @@ class CustomShapeCreatorComponent {
|
|
|
34743
34818
|
}
|
|
34744
34819
|
}
|
|
34745
34820
|
CustomShapeCreatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomShapeCreatorComponent, deps: [{ token: HudService }, { token: SceneService }, { token: RoomService }, { token: ItemService }, { token: SceneEventService }, { token: MessageBusService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34746
|
-
CustomShapeCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomShapeCreatorComponent, 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-body-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-subheading-2\"> {{ 'MEASUREMENTS' | localize}}</h3>\r\n <div>\r\n <rp-dimension-input\r\n title=\"{{'HEIGHT' | localize}}\"\r\n [sourceValue]=\"height * scaleFactor\"\r\n [minValue]=\"
|
|
34821
|
+
CustomShapeCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomShapeCreatorComponent, 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-body-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-subheading-2\"> {{ '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-subheading-2\"> {{ '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-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked", "aria-describedby"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }], directives: [{ type: i3$3.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"] }, { type: i3$3.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"] }, { type: i3$3.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"] }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i7.MatLabel, selector: "mat-label" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "localize": LocalizePipe } });
|
|
34747
34822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomShapeCreatorComponent, decorators: [{
|
|
34748
34823
|
type: Component,
|
|
34749
34824
|
args: [{
|
|
@@ -34919,7 +34994,9 @@ class CustomCylinderCreatorComponent {
|
|
|
34919
34994
|
texture.width = this.skin[face].width();
|
|
34920
34995
|
texture.dimensions = new Vector2(this.skin[face].width(), this.skin[face].height()).multiplyScalar(100);
|
|
34921
34996
|
this.shape.customMesh.material[CylinderFaces.indexOf(face)] = new MeshPhongMaterial({
|
|
34922
|
-
map: yield MaterialUtils.FromImage(texture)
|
|
34997
|
+
map: yield MaterialUtils.FromImage(texture),
|
|
34998
|
+
transparent: true,
|
|
34999
|
+
alphaTest: 0.5
|
|
34923
35000
|
});
|
|
34924
35001
|
}
|
|
34925
35002
|
this.shape.skin[face] = { texture: texture };
|
|
@@ -34932,7 +35009,7 @@ class CustomCylinderCreatorComponent {
|
|
|
34932
35009
|
}
|
|
34933
35010
|
}
|
|
34934
35011
|
CustomCylinderCreatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomCylinderCreatorComponent, deps: [{ token: HudService }, { token: SceneService }, { token: ItemService }, { token: RoomService }, { token: SceneEventService }, { token: MessageBusService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34935
|
-
CustomCylinderCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomCylinderCreatorComponent, 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-body-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-subheading-2\"> {{ '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 <rp-dimension-input\r\n *ngIf=\"isFloorType\"\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-subheading-2\"> {{ '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-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked", "aria-describedby"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { type:
|
|
35012
|
+
CustomCylinderCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomCylinderCreatorComponent, 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-body-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-subheading-2\"> {{ '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 <rp-dimension-input\r\n *ngIf=\"isFloorType\"\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-subheading-2\"> {{ '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-select-panel{max-height:80vh!important}.switcher{margin-right:10px}\n"], components: [{ type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked", "aria-describedby"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: DimensionInputComponent, selector: "rp-dimension-input", inputs: ["minValue", "maxValue", "sourceValue", "title"], outputs: ["dimensionChanged", "focus", "blur"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: AppearanceSectionComponent, selector: "rp-appearance-section", inputs: ["type", "hideTextureTab", "hideColorTab", "hidePhotoTab", "showGlassOption", "texturePlane", "plainTexture", "color", "textureWidth", "textureHeight", "photoOptions", "glassMaterial"], outputs: ["setTexture", "setColor", "setMaterial"] }], directives: [{ type: i3$3.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"] }, { type: i3$3.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"] }, { type: i3$3.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"] }, { type: i19.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatLabel, selector: "mat-label" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "localize": LocalizePipe } });
|
|
34936
35013
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomCylinderCreatorComponent, decorators: [{
|
|
34937
35014
|
type: Component,
|
|
34938
35015
|
args: [{
|
|
@@ -37823,7 +37900,7 @@ ModelDialogFurnitureListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
37823
37900
|
<div class="furniture-item-wrapper">
|
|
37824
37901
|
<co-icon *ngIf="item.errorMessages.length > 0" class="error-expand-handle" [class.expanded]="item.showErrors"
|
|
37825
37902
|
[iconData]="iconService.getIcon(icon.ArrowPointDown)" (click)="item.showErrors = !item.showErrors"></co-icon>
|
|
37826
|
-
<span class="furniture-item-title" [textContent]="item.name"></span>
|
|
37903
|
+
<span class="furniture-item-title" [textContent]="item.name ? item.name : item.sku"></span>
|
|
37827
37904
|
<button *ngIf=showCopy class="furniture-item-copy"
|
|
37828
37905
|
[textContent]="item.toggle ? ('COPIED' | localize) : ('COPY' | localize)"
|
|
37829
37906
|
(click)="copyFurnitureName(item)"></button>
|
|
@@ -37923,7 +38000,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
37923
38000
|
<div class="furniture-item-wrapper">
|
|
37924
38001
|
<co-icon *ngIf="item.errorMessages.length > 0" class="error-expand-handle" [class.expanded]="item.showErrors"
|
|
37925
38002
|
[iconData]="iconService.getIcon(icon.ArrowPointDown)" (click)="item.showErrors = !item.showErrors"></co-icon>
|
|
37926
|
-
<span class="furniture-item-title" [textContent]="item.name"></span>
|
|
38003
|
+
<span class="furniture-item-title" [textContent]="item.name ? item.name : item.sku"></span>
|
|
37927
38004
|
<button *ngIf=showCopy class="furniture-item-copy"
|
|
37928
38005
|
[textContent]="item.toggle ? ('COPIED' | localize) : ('COPY' | localize)"
|
|
37929
38006
|
(click)="copyFurnitureName(item)"></button>
|
|
@@ -41067,7 +41144,7 @@ class SaveDialogComponent {
|
|
|
41067
41144
|
}
|
|
41068
41145
|
}
|
|
41069
41146
|
SaveDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SaveDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: PermanentStoreService }, { token: HomedecoratorIconCacheService }, { token: i1$1.MatDialog }, { token: i1$1.MatDialogRef }, { token: MessageBusService }, { token: PresetsService }, { token: HomedecoratorDictionaryService }, { token: HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41070
|
-
SaveDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SaveDialogComponent, 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 <mat-list-item *ngIf=\"wasPlanSaved\" (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 <button mat-mini-fab class=\"download-button\" (click)=\"download()\"
|
|
41147
|
+
SaveDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SaveDialogComponent, 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 <mat-list-item *ngIf=\"wasPlanSaved\" (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 <ng-container *ngIf=\"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 </ng-container>\r\n </mat-nav-list>\r\n</div>\r\n", styles: [":host .mat-dialog-content{margin:0;padding:0;overflow:hidden}:host .mat-nav-list{display:flex;flex-direction:column}:host .mat-nav-list .mat-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-dialog-actions{margin-bottom:0}.item-description{white-space:inherit!important}\n"], components: [{ type: i2$2.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.ɵb, selector: "co-icon", inputs: ["icon", "iconData"] }], directives: [{ type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3.MatLine, selector: "[mat-line], [matLine]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": LocalizePipe } });
|
|
41071
41148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SaveDialogComponent, decorators: [{
|
|
41072
41149
|
type: Component,
|
|
41073
41150
|
args: [{
|
|
@@ -41100,8 +41177,8 @@ class DrawDialogComponent {
|
|
|
41100
41177
|
this.draftingMode = 'movement';
|
|
41101
41178
|
this.cameraOffset = { x: window.innerWidth / 2, y: window.innerHeight / 2 };
|
|
41102
41179
|
this.cameraZoom = 1;
|
|
41103
|
-
this.maxZoom =
|
|
41104
|
-
this.minZoom = 1;
|
|
41180
|
+
this.maxZoom = 10;
|
|
41181
|
+
this.minZoom = 0.1;
|
|
41105
41182
|
this.scrollSensitivity = 0.005;
|
|
41106
41183
|
this.isDragging = false;
|
|
41107
41184
|
this.dragStart = { x: 0, y: 0 };
|
|
@@ -41140,6 +41217,17 @@ class DrawDialogComponent {
|
|
|
41140
41217
|
this._context.stroke();
|
|
41141
41218
|
}
|
|
41142
41219
|
}
|
|
41220
|
+
if (this.draftingMode === 'movement') {
|
|
41221
|
+
this._canvas.style.cursor = 'pointer';
|
|
41222
|
+
}
|
|
41223
|
+
else {
|
|
41224
|
+
if (this.isDragging) {
|
|
41225
|
+
this._canvas.style.cursor = 'pointer';
|
|
41226
|
+
}
|
|
41227
|
+
else {
|
|
41228
|
+
this._canvas.style.cursor = `url(${drawModeCursorImageUrl}) 0 ${drawModeCursorHeight}, auto`;
|
|
41229
|
+
}
|
|
41230
|
+
}
|
|
41143
41231
|
requestAnimationFrame(() => this.draw());
|
|
41144
41232
|
};
|
|
41145
41233
|
}
|
|
@@ -41175,6 +41263,9 @@ class DrawDialogComponent {
|
|
|
41175
41263
|
this.hiddenImage.nativeElement.src = url;
|
|
41176
41264
|
}
|
|
41177
41265
|
}
|
|
41266
|
+
updateUserValue() {
|
|
41267
|
+
this.customerInputLenght = this.inputLength.nativeElement.value;
|
|
41268
|
+
}
|
|
41178
41269
|
handleMouseDown(event) {
|
|
41179
41270
|
if (this.draftingMode === 'movement') {
|
|
41180
41271
|
this.isDragging = true;
|
|
@@ -41220,16 +41311,13 @@ class DrawDialogComponent {
|
|
|
41220
41311
|
this.cameraZoom = Math.max(this.cameraZoom, this.minZoom);
|
|
41221
41312
|
}
|
|
41222
41313
|
handleMouseWheel(event) {
|
|
41223
|
-
|
|
41224
|
-
|
|
41225
|
-
|
|
41226
|
-
|
|
41227
|
-
if (zoomAmount) {
|
|
41228
|
-
this.cameraZoom -= zoomAmount;
|
|
41229
|
-
}
|
|
41230
|
-
this.cameraZoom = Math.min(this.cameraZoom, this.maxZoom);
|
|
41231
|
-
this.cameraZoom = Math.max(this.cameraZoom, this.minZoom);
|
|
41314
|
+
const zoomAmount = event.deltaY * this.scrollSensitivity;
|
|
41315
|
+
if (!this.isDragging) {
|
|
41316
|
+
if (zoomAmount) {
|
|
41317
|
+
this.cameraZoom -= zoomAmount;
|
|
41232
41318
|
}
|
|
41319
|
+
this.cameraZoom = Math.min(this.cameraZoom, this.maxZoom);
|
|
41320
|
+
this.cameraZoom = Math.max(this.cameraZoom, this.minZoom);
|
|
41233
41321
|
}
|
|
41234
41322
|
}
|
|
41235
41323
|
getEventLocation(e) {
|
|
@@ -41242,12 +41330,6 @@ class DrawDialogComponent {
|
|
|
41242
41330
|
}
|
|
41243
41331
|
setModus(modus) {
|
|
41244
41332
|
this.draftingMode = modus;
|
|
41245
|
-
if (this.draftingMode === 'scaling') {
|
|
41246
|
-
this._canvas.style.cursor = `url(assets/cursors/pencil.png) 0 26}, auto`;
|
|
41247
|
-
}
|
|
41248
|
-
else {
|
|
41249
|
-
this._canvas.style.cursor = '';
|
|
41250
|
-
}
|
|
41251
41333
|
}
|
|
41252
41334
|
submitLength() {
|
|
41253
41335
|
if (this.inputLength.nativeElement.value !== '' && this.measurePoints.length === 2) {
|
|
@@ -41271,6 +41353,7 @@ class DrawDialogComponent {
|
|
|
41271
41353
|
backgroundWidth: this.hiddenImage.nativeElement.width,
|
|
41272
41354
|
cameraZoom: this.cameraZoom
|
|
41273
41355
|
};
|
|
41356
|
+
this._messageService.emit(MessageType.StartWithEmptyRoom);
|
|
41274
41357
|
this._messageService.emit(MessageType.LoadScaledDiagram, output);
|
|
41275
41358
|
this._dialog.closeAll();
|
|
41276
41359
|
}
|
|
@@ -41321,7 +41404,7 @@ class DrawDialogComponent {
|
|
|
41321
41404
|
}
|
|
41322
41405
|
}
|
|
41323
41406
|
DrawDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DrawDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$1.MatDialogRef }, { token: i1$1.MatDialog }, { token: MessageBusService }, { token: UtilsService }, { token: PresetsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41324
|
-
DrawDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DrawDialogComponent, selector: "rp-draw-dialog", viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["drawCanvas"], descendants: true, read: ElementRef, static: true }, { propertyName: "inputLength", first: true, predicate: ["inputLength"], descendants: true }, { propertyName: "hiddenImage", first: true, predicate: ["hiddenImage"], descendants: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{ 'OPEN_A_DIAGRAM' | localize }}</h1>\r\n\r\n\r\n<div class=\"top-bar-container\" >\r\n <div class=\"reference-input-container\" *ngIf=\"draftingMode === 'scaling'\">\r\n <div class=\"input-button-container\">\r\n <input\r\n #inputLength\r\n type=\"number\"\r\n placeholder=\"{{ 'PDF_REFERENCE_PLACEHOLDER' | localize}}\"\r\n [attr.disabled]=\"this.measurePoints.length === 0 ? '' : null\"\r\n >\r\n <button (click)=\"resetPoints()\" title=\"Reset referentie meting\">\r\n <mat-icon class=\"homedecorator-material-icons\">refresh</mat-icon>\r\n </button>\r\n </div>\r\n <p class=\"helper-text\">{{ 'PDF_REFERENCE_HELPER' | localize }}</p>\r\n </div>\r\n\r\n<!-- <div class=\"rotation-input-container\" *ngIf=\"draftingMode === 'scaling'\">-->\r\n<!-- rotatiedingen-->\r\n<!-- </div>-->\r\n\r\n <div class=\"zoom-button-containers\" *ngIf=\"draftingMode === 'movement'\">\r\n <button (click)=\"clickingZoom('in')\">\r\n <mat-icon class=\"homedecorator-material-icons\">zoom_in</mat-icon>\r\n </button>\r\n <button (click)=\"clickingZoom('reset')\">\r\n <mat-icon class=\"homedecorator-material-icons\">all_out</mat-icon>\r\n </button>\r\n <button (click)=\"clickingZoom('out')\">\r\n <mat-icon class=\"homedecorator-material-icons\">zoom_out</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"main-button-container\">\r\n <mat-button-toggle-group\r\n class=\"mode-toggle\"\r\n (change)=\"setModus($event.value)\"\r\n [value]=\"draftingMode\">\r\n <mat-button-toggle [value]=\"'movement'\" [matTooltip]=\"'Zoom / verplaats modus'\">\r\n <mat-icon svgIcon=\"hand-pointer\"></mat-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"'scaling'\" [matTooltip]=\"'Maak referentie meting'\">\r\n <mat-icon svgIcon=\"pen-ruler\"></mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div class=\"canvas-wrapper\">\r\n <canvas\r\n #drawCanvas\r\n (mousedown)=\"handleMouseDown($event)\"\r\n (mousemove)=\"handleMouseMove($event)\"\r\n (mouseup)=\"handleMouseUp($event)\"\r\n (mouseleave)=\"handleMouseLeave($event)\"\r\n (wheel)=\"handleMouseWheel($event)\"\r\n ></canvas>\r\n</div>\r\n\r\n<div class=\"save-cancel-button-container\">\r\n <button (click)=\"cancelAndReset()\">\r\n <mat-icon class=\"homedecorator-material-icons\">cancel</mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n <button (click)=\"submitLength()\" title=\"Opslaan\" *ngIf=\"draftingMode === 'scaling'\">\r\n <mat-icon class=\"homedecorator-material-icons\">check_circle</mat-icon>\r\n <span>Ok</span>\r\n </button>\r\n</div>\r\n\r\n<img #hiddenImage src=\"\" style=\"display: none;\">\r\n", styles: ["canvas{position:relative}button{cursor:pointer;color:#fff;background:#dda73f;border:1px solid #dda73f;border-radius:3px;box-sizing:border-box;padding:5px;display:flex;align-items:center}button:hover{background:#dda73f;color:#fff}.main-button-container{display:flex;justify-content:center;margin-bottom:15px}.main-button-container .mat-button-toggle-checked{background:#dda73f;color:#fff}.reference-input-container .input-button-container{display:flex;align-items:center}.reference-input-container .input-button-container input{min-width:285px;border:1px solid #f7f7f9;border-radius:3px;height:35px;line-height:35px;box-sizing:border-box;padding:10px}.reference-input-container .input-button-container input:disabled{background:#f7f7f9;cursor:default}.reference-input-container .input-button-container button{border:none;display:inline-block}.reference-input-container .helper-text{font-size:13px;font-style:italic;margin:0;padding:0;display:block}.zoom-button-containers{display:flex;justify-items:center;justify-content:right}.zoom-button-containers button{margin:0 5px}.save-cancel-button-container{display:flex;justify-content:center;justify-items:center}.save-cancel-button-container button{margin:3px 10px;padding:8px 15px}.save-cancel-button-container button .homedecorator-material-icons{font-size:18px}.save-cancel-button-container button span{line-height:18px;font-size:15px}.canvas-wrapper{overflow:
|
|
41407
|
+
DrawDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DrawDialogComponent, selector: "rp-draw-dialog", viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["drawCanvas"], descendants: true, read: ElementRef, static: true }, { propertyName: "inputLength", first: true, predicate: ["inputLength"], descendants: true }, { propertyName: "hiddenImage", first: true, predicate: ["hiddenImage"], descendants: true }], ngImport: i0, template: "<h1 mat-dialog-title>{{ 'OPEN_A_DIAGRAM' | localize }}</h1>\r\n\r\n\r\n<div class=\"top-bar-container\" >\r\n <div class=\"reference-input-container\" *ngIf=\"draftingMode === 'scaling'\">\r\n <div class=\"input-button-container\">\r\n <input\r\n (change)=\"updateUserValue()\"\r\n [value]=\"customerInputLenght\"\r\n #inputLength\r\n type=\"number\"\r\n placeholder=\"{{ 'PDF_REFERENCE_PLACEHOLDER' | localize}}\"\r\n [attr.disabled]=\"this.measurePoints.length === 0 ? '' : null\"\r\n >\r\n <button (click)=\"resetPoints()\" title=\"Reset referentie meting\">\r\n <mat-icon class=\"homedecorator-material-icons\">refresh</mat-icon>\r\n </button>\r\n </div>\r\n <p class=\"helper-text\">{{ 'PDF_REFERENCE_HELPER' | localize }}</p>\r\n </div>\r\n\r\n<!-- <div class=\"rotation-input-container\" *ngIf=\"draftingMode === 'scaling'\">-->\r\n<!-- rotatiedingen-->\r\n<!-- </div>-->\r\n\r\n <div class=\"zoom-button-containers\" *ngIf=\"draftingMode === 'movement'\">\r\n <button (click)=\"clickingZoom('in')\">\r\n <mat-icon class=\"homedecorator-material-icons\">zoom_in</mat-icon>\r\n </button>\r\n <button (click)=\"clickingZoom('reset')\">\r\n <mat-icon class=\"homedecorator-material-icons\">all_out</mat-icon>\r\n </button>\r\n <button (click)=\"clickingZoom('out')\">\r\n <mat-icon class=\"homedecorator-material-icons\">zoom_out</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"main-button-container\">\r\n <mat-button-toggle-group\r\n class=\"mode-toggle\"\r\n (change)=\"setModus($event.value)\"\r\n [value]=\"draftingMode\">\r\n <mat-button-toggle [value]=\"'movement'\" [matTooltip]=\"'Zoom / verplaats modus'\">\r\n <mat-icon svgIcon=\"hand-pointer\"></mat-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"'scaling'\" [matTooltip]=\"'Maak referentie meting'\">\r\n <mat-icon svgIcon=\"pen-ruler\"></mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div class=\"canvas-wrapper\">\r\n <canvas\r\n #drawCanvas\r\n (mousedown)=\"handleMouseDown($event)\"\r\n (mousemove)=\"handleMouseMove($event)\"\r\n (mouseup)=\"handleMouseUp($event)\"\r\n (mouseleave)=\"handleMouseLeave($event)\"\r\n (wheel)=\"handleMouseWheel($event)\"\r\n ></canvas>\r\n</div>\r\n\r\n<div class=\"save-cancel-button-container\">\r\n <button (click)=\"cancelAndReset()\">\r\n <mat-icon class=\"homedecorator-material-icons\">cancel</mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n <button (click)=\"submitLength()\" title=\"Opslaan\" *ngIf=\"draftingMode === 'scaling'\">\r\n <mat-icon class=\"homedecorator-material-icons\">check_circle</mat-icon>\r\n <span>Ok</span>\r\n </button>\r\n</div>\r\n\r\n<img #hiddenImage src=\"\" style=\"display: none;\">\r\n", styles: ["canvas{position:relative}button{cursor:pointer;color:#fff;background:#dda73f;border:1px solid #dda73f;border-radius:3px;box-sizing:border-box;padding:5px;display:flex;align-items:center}button:hover{background:#dda73f;color:#fff}.main-button-container{display:flex;justify-content:center;margin-bottom:15px}.main-button-container .mat-button-toggle-checked{background:#dda73f;color:#fff}.reference-input-container .input-button-container{display:flex;align-items:center}.reference-input-container .input-button-container input{min-width:285px;border:1px solid #f7f7f9;border-radius:3px;height:35px;line-height:35px;box-sizing:border-box;padding:10px}.reference-input-container .input-button-container input:disabled{background:#f7f7f9;cursor:default}.reference-input-container .input-button-container button{border:none;display:inline-block}.reference-input-container .helper-text{font-size:13px;font-style:italic;margin:0;padding:0;display:block}.zoom-button-containers{display:flex;justify-items:center;justify-content:right}.zoom-button-containers button{margin:0 5px}.save-cancel-button-container{display:flex;justify-content:center;justify-items:center}.save-cancel-button-container button{margin:3px 10px;padding:8px 15px}.save-cancel-button-container button .homedecorator-material-icons{font-size:18px}.save-cancel-button-container button span{line-height:18px;font-size:15px}.canvas-wrapper{overflow:hidden;max-height:60vh;max-width:80vw}\n"], components: [{ type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "localize": LocalizePipe } });
|
|
41325
41408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DrawDialogComponent, decorators: [{
|
|
41326
41409
|
type: Component,
|
|
41327
41410
|
args: [{
|
|
@@ -41555,9 +41638,10 @@ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P,
|
|
|
41555
41638
|
});
|
|
41556
41639
|
};
|
|
41557
41640
|
class ModelPreviewComponent {
|
|
41558
|
-
constructor(data, settingsService, _dialogRef, _thirdPartyModelService, _messageService, _dialog, _adapterService, _lightPresetsService, _dictionaryService, _fontService) {
|
|
41641
|
+
constructor(data, settingsService, iconCache, _dialogRef, _thirdPartyModelService, _messageService, _dialog, _adapterService, _lightPresetsService, _dictionaryService, _fontService) {
|
|
41559
41642
|
this.data = data;
|
|
41560
41643
|
this.settingsService = settingsService;
|
|
41644
|
+
this.iconCache = iconCache;
|
|
41561
41645
|
this._dialogRef = _dialogRef;
|
|
41562
41646
|
this._thirdPartyModelService = _thirdPartyModelService;
|
|
41563
41647
|
this._messageService = _messageService;
|
|
@@ -41567,6 +41651,7 @@ class ModelPreviewComponent {
|
|
|
41567
41651
|
this._dictionaryService = _dictionaryService;
|
|
41568
41652
|
this._fontService = _fontService;
|
|
41569
41653
|
this.unitsOfMeasurement = 'cm';
|
|
41654
|
+
this.units = ['cm', 'inches'];
|
|
41570
41655
|
this.mathPi = Math.PI;
|
|
41571
41656
|
this.showReferenceModel = true;
|
|
41572
41657
|
this.floorSizeHeight = 10;
|
|
@@ -41576,16 +41661,22 @@ class ModelPreviewComponent {
|
|
|
41576
41661
|
this.distanceStep = 1;
|
|
41577
41662
|
this.stackable = false;
|
|
41578
41663
|
this.heightAdjustable = false;
|
|
41664
|
+
this.selectedPlacement = 0;
|
|
41579
41665
|
this._measurements = [];
|
|
41666
|
+
this.icon = IconEnum;
|
|
41580
41667
|
this.font = this._fontService.hudFont;
|
|
41581
41668
|
}
|
|
41582
41669
|
ngOnInit() {
|
|
41583
41670
|
this.initScene();
|
|
41584
41671
|
this.loadModel(this.data);
|
|
41672
|
+
this._adapterService.getModelPlacementOptions().then(result => {
|
|
41673
|
+
this.placementOptions = result;
|
|
41674
|
+
});
|
|
41585
41675
|
}
|
|
41586
41676
|
ngOnDestroy() {
|
|
41587
41677
|
}
|
|
41588
41678
|
initScene() {
|
|
41679
|
+
const viewScale = 1.3;
|
|
41589
41680
|
// init scene
|
|
41590
41681
|
this.scenePreview = new Scene();
|
|
41591
41682
|
// init renderer
|
|
@@ -41609,11 +41700,11 @@ class ModelPreviewComponent {
|
|
|
41609
41700
|
this.rendererPreview.outputColorSpace = LinearSRGBColorSpace;
|
|
41610
41701
|
canvReference.appendChild(this.rendererPreview.domElement);
|
|
41611
41702
|
this.rendererPreview.domElement.setAttribute('id', 'threed');
|
|
41612
|
-
this.rendererPreview.setSize(window.
|
|
41703
|
+
this.rendererPreview.setSize(window.innerHeight / viewScale, window.innerHeight / viewScale, true);
|
|
41613
41704
|
// init camera
|
|
41614
41705
|
this.cameraPreview = new PerspectiveCamera(45, 1, 0.01, 100000000);
|
|
41615
41706
|
this.cameraPreview.position.set(0, 2, 10);
|
|
41616
|
-
this.cameraPreview.aspect = window.
|
|
41707
|
+
this.cameraPreview.aspect = (window.innerHeight / viewScale) / (window.innerHeight / viewScale);
|
|
41617
41708
|
this.cameraPreview.updateProjectionMatrix();
|
|
41618
41709
|
this.controls = new OrbitControls(this.cameraPreview, this.rendererPreview.domElement);
|
|
41619
41710
|
this.controls.update();
|
|
@@ -41726,6 +41817,7 @@ class ModelPreviewComponent {
|
|
|
41726
41817
|
}, options);
|
|
41727
41818
|
}
|
|
41728
41819
|
scaleArticle() {
|
|
41820
|
+
const model = this.scenePreview.getObjectByName(this.modelName);
|
|
41729
41821
|
const inputHeight = this.heightArticle.nativeElement.value;
|
|
41730
41822
|
let heightInMeter;
|
|
41731
41823
|
if (this.unitsOfMeasurement === 'cm') {
|
|
@@ -41736,7 +41828,8 @@ class ModelPreviewComponent {
|
|
|
41736
41828
|
}
|
|
41737
41829
|
// scale = this.bounding / heightInMeter and use Y as up/ height
|
|
41738
41830
|
const scale = this.boundingBoxSize.y / heightInMeter;
|
|
41739
|
-
|
|
41831
|
+
model.scale.set(model.scale.x / scale, model.scale.y / scale, model.scale.z / scale);
|
|
41832
|
+
this._getBoundingBox(model);
|
|
41740
41833
|
}
|
|
41741
41834
|
rotateModel(axis, degrees) {
|
|
41742
41835
|
const model = this.scenePreview.getObjectByName(this.modelName);
|
|
@@ -41762,12 +41855,15 @@ class ModelPreviewComponent {
|
|
|
41762
41855
|
else if (axis === 'z') {
|
|
41763
41856
|
model.position.z += amount;
|
|
41764
41857
|
}
|
|
41858
|
+
else if (axis === 'all') {
|
|
41859
|
+
model.position.set(0, 0, 0);
|
|
41860
|
+
}
|
|
41765
41861
|
this._getBoundingBox(model);
|
|
41766
41862
|
}
|
|
41767
41863
|
setUnit(event) {
|
|
41768
41864
|
this.unitsOfMeasurement = event.value;
|
|
41769
41865
|
}
|
|
41770
|
-
toggleShowReferenceModel() {
|
|
41866
|
+
toggleShowReferenceModel($event) {
|
|
41771
41867
|
const model = this.scenePreview.getObjectByName('Reference_model');
|
|
41772
41868
|
model.visible = !this.showReferenceModel;
|
|
41773
41869
|
this.showReferenceModel = !this.showReferenceModel;
|
|
@@ -41799,6 +41895,7 @@ class ModelPreviewComponent {
|
|
|
41799
41895
|
}
|
|
41800
41896
|
_sendModelToCDN(fileName, blob) {
|
|
41801
41897
|
return __awaiter$4(this, void 0, void 0, function* () {
|
|
41898
|
+
// console.log(this.placementOptions[this.selectedPlacement]);
|
|
41802
41899
|
const reader = new FileReader();
|
|
41803
41900
|
reader.readAsDataURL(blob);
|
|
41804
41901
|
reader.onloadend = (event) => __awaiter$4(this, void 0, void 0, function* () {
|
|
@@ -41820,6 +41917,8 @@ class ModelPreviewComponent {
|
|
|
41820
41917
|
});
|
|
41821
41918
|
});
|
|
41822
41919
|
}
|
|
41920
|
+
}).catch(error => {
|
|
41921
|
+
this._messageService.emit(MessageType.RenderError, { title: 'Upload error', message: error });
|
|
41823
41922
|
});
|
|
41824
41923
|
});
|
|
41825
41924
|
});
|
|
@@ -41887,6 +41986,8 @@ class ModelPreviewComponent {
|
|
|
41887
41986
|
this.boundingBoxSize = boundingBox.getSize(new Vector3());
|
|
41888
41987
|
this._setMeasurements(this.boundingBoxSize);
|
|
41889
41988
|
this._showMeasurements();
|
|
41989
|
+
const modelBoxhelper = this.scenePreview.getObjectByName('modelBoxhelper');
|
|
41990
|
+
this.scenePreview.remove(modelBoxhelper);
|
|
41890
41991
|
const boxHelper = new BoxHelper(object);
|
|
41891
41992
|
boxHelper.material.color.set(0xFF00FF);
|
|
41892
41993
|
boxHelper.name = 'modelBoxhelper';
|
|
@@ -42009,225 +42110,297 @@ class ModelPreviewComponent {
|
|
|
42009
42110
|
}
|
|
42010
42111
|
}
|
|
42011
42112
|
}
|
|
42012
|
-
ModelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModelPreviewComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: HomedecoratorSettingsService }, { token: i1$1.MatDialogRef }, { token: ThirdPartyModelService }, { token: MessageBusService }, { token: i1$1.MatDialog }, { token: HomedecoratorConnectorAdapterService }, { token: LightPresetsService }, { token: HomedecoratorDictionaryService }, { token: FontService }], target: i0.ɵɵFactoryTarget.Component });
|
|
42113
|
+
ModelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModelPreviewComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: HomedecoratorSettingsService }, { token: HomedecoratorIconCacheService }, { token: i1$1.MatDialogRef }, { token: ThirdPartyModelService }, { token: MessageBusService }, { token: i1$1.MatDialog }, { token: HomedecoratorConnectorAdapterService }, { token: LightPresetsService }, { token: HomedecoratorDictionaryService }, { token: FontService }], target: i0.ɵɵFactoryTarget.Component });
|
|
42013
42114
|
ModelPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ModelPreviewComponent, selector: "rp-model-preview", viewQueries: [{ propertyName: "glbExportName", first: true, predicate: ["fileName"], descendants: true }, { propertyName: "heightArticle", first: true, predicate: ["heightArticle"], descendants: true }], ngImport: i0, template: `
|
|
42014
42115
|
<div class="model-preview">
|
|
42015
|
-
<div class="model-preview-
|
|
42116
|
+
<div class="model-preview-window">
|
|
42117
|
+
<div class="model-preview-container" id="canvasContainer"></div>
|
|
42118
|
+
<div class="model-preview-window-bottom">
|
|
42119
|
+
<div>
|
|
42120
|
+
<mat-slide-toggle
|
|
42121
|
+
[checked]="showReferenceModel"
|
|
42122
|
+
[labelPosition]="'after'"
|
|
42123
|
+
(change)="toggleShowReferenceModel($event)">
|
|
42124
|
+
Show Reference model
|
|
42125
|
+
</mat-slide-toggle>
|
|
42126
|
+
</div>
|
|
42127
|
+
<div class="disclaimer-text-container">
|
|
42128
|
+
<p class="disclaimer-text">
|
|
42129
|
+
Grid scale: 1 tile = 1x1 meter
|
|
42130
|
+
</p>
|
|
42131
|
+
</div>
|
|
42132
|
+
</div>
|
|
42016
42133
|
</div>
|
|
42017
42134
|
<div class="model-preview-actions">
|
|
42018
42135
|
<div class="input-height-container">
|
|
42019
|
-
<
|
|
42020
|
-
<div class="mat-radio-wrapper">
|
|
42021
|
-
<mat-radio-group aria-label="Select an unit" (change)="setUnit($event)">
|
|
42022
|
-
<mat-radio-button [checked]="true" value="cm">Height in cm</mat-radio-button>
|
|
42023
|
-
<mat-radio-button value="inches">Height in inches</mat-radio-button>
|
|
42024
|
-
</mat-radio-group>
|
|
42025
|
-
</div>
|
|
42136
|
+
<h2>Model settings</h2>
|
|
42026
42137
|
<div>
|
|
42027
|
-
<
|
|
42028
|
-
<
|
|
42138
|
+
<h3>Scale:</h3>
|
|
42139
|
+
<input type="text" id="heightArticle" #heightArticle placeholder="Set model height">
|
|
42140
|
+
<mat-form-field class="units-select-form">
|
|
42141
|
+
<mat-select class="units-mat-select" [(value)]="unitsOfMeasurement">
|
|
42142
|
+
<mat-option class="units-mat-option" *ngFor="let unit of units" [value]="unit">{{ unit }}</mat-option>
|
|
42143
|
+
</mat-select>
|
|
42144
|
+
</mat-form-field>
|
|
42145
|
+
<button class="apply-button base-button" (click)="scaleArticle()">Apply</button>
|
|
42029
42146
|
</div>
|
|
42030
42147
|
</div>
|
|
42031
|
-
|
|
42032
|
-
<div>
|
|
42033
|
-
<button (click)="toggleShowReferenceModel()">Show Reference model</button>
|
|
42034
|
-
</div>
|
|
42035
|
-
|
|
42036
42148
|
<div class="rotation-button-container">
|
|
42037
|
-
<
|
|
42038
|
-
<div
|
|
42039
|
-
<
|
|
42040
|
-
<
|
|
42149
|
+
<h3>Rotation:</h3>
|
|
42150
|
+
<div>
|
|
42151
|
+
<p>Rotate on X axis (90 degrees)</p>
|
|
42152
|
+
<p>
|
|
42153
|
+
<button (click)="rotateModel('x', -mathPi / 2)">
|
|
42154
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42155
|
+
</button>
|
|
42156
|
+
<button (click)="rotateModel('x', mathPi / 2)">
|
|
42157
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42158
|
+
</button>
|
|
42159
|
+
</p>
|
|
42041
42160
|
</div>
|
|
42042
|
-
<div
|
|
42043
|
-
<
|
|
42044
|
-
<
|
|
42161
|
+
<div>
|
|
42162
|
+
<p>Rotate on Y axis (90 degrees)</p>
|
|
42163
|
+
<p>
|
|
42164
|
+
<button (click)="rotateModel('y', -mathPi / 2)">
|
|
42165
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42166
|
+
</button>
|
|
42167
|
+
<button (click)="rotateModel('y', mathPi / 2)">
|
|
42168
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42169
|
+
</button>
|
|
42170
|
+
</p>
|
|
42045
42171
|
</div>
|
|
42046
|
-
<div
|
|
42047
|
-
<
|
|
42048
|
-
<
|
|
42172
|
+
<div>
|
|
42173
|
+
<p>Rotate on Z axis (90 degrees)</p>
|
|
42174
|
+
<p>
|
|
42175
|
+
<button (click)="rotateModel('z', -mathPi / 2)">
|
|
42176
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42177
|
+
</button>
|
|
42178
|
+
<button (click)="rotateModel('z', mathPi / 2)">
|
|
42179
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42180
|
+
</button>
|
|
42181
|
+
</p>
|
|
42049
42182
|
</div>
|
|
42050
42183
|
</div>
|
|
42051
|
-
|
|
42052
|
-
|
|
42053
42184
|
<div class="rotation-button-container">
|
|
42054
|
-
<
|
|
42055
|
-
<div
|
|
42056
|
-
<
|
|
42057
|
-
<
|
|
42058
|
-
|
|
42059
|
-
|
|
42060
|
-
|
|
42061
|
-
|
|
42185
|
+
<h3>Position:</h3>
|
|
42186
|
+
<div>
|
|
42187
|
+
<p>Reset to coordinates 0,0,0</p>
|
|
42188
|
+
<p>
|
|
42189
|
+
<button class="button-as-link" (click)="moveModel('all', 0)">
|
|
42190
|
+
<mat-icon svgIcon="retry-button"></mat-icon>
|
|
42191
|
+
Reset
|
|
42192
|
+
</button>
|
|
42193
|
+
</p>
|
|
42062
42194
|
</div>
|
|
42063
|
-
<div
|
|
42064
|
-
<
|
|
42065
|
-
<
|
|
42195
|
+
<div>
|
|
42196
|
+
<p>Move on the Y axis (0.01 unit)</p>
|
|
42197
|
+
<p>
|
|
42198
|
+
<button (click)="moveModel('y', -0.01)">
|
|
42199
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42200
|
+
</button>
|
|
42201
|
+
<button (click)="moveModel('y', 0.01)">
|
|
42202
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42203
|
+
</button>
|
|
42204
|
+
</p>
|
|
42066
42205
|
</div>
|
|
42067
42206
|
</div>
|
|
42068
42207
|
|
|
42069
|
-
<div class="model-preview-info"
|
|
42070
|
-
<
|
|
42071
|
-
|
|
42072
|
-
|
|
42073
|
-
|
|
42074
|
-
|
|
42075
|
-
|
|
42076
|
-
|
|
42208
|
+
<div class="model-preview-info-container">
|
|
42209
|
+
<h3>Properties:</h3>
|
|
42210
|
+
<div>
|
|
42211
|
+
<mat-slide-toggle
|
|
42212
|
+
[checked]="false"
|
|
42213
|
+
[labelPosition]="'before'"
|
|
42214
|
+
(change)="setStackable($event)">
|
|
42215
|
+
Stackable
|
|
42216
|
+
</mat-slide-toggle>
|
|
42077
42217
|
</div>
|
|
42078
|
-
|
|
42079
|
-
|
|
42080
|
-
|
|
42081
|
-
|
|
42082
|
-
|
|
42083
|
-
|
|
42084
|
-
|
|
42085
|
-
<mat-radio-group aria-label="Select an unit" (change)="setStackable($event)">
|
|
42086
|
-
<mat-radio-button [checked]="true" value="false">No</mat-radio-button>
|
|
42087
|
-
<mat-radio-button value="true">Yes</mat-radio-button>
|
|
42088
|
-
</mat-radio-group>
|
|
42089
|
-
</div>
|
|
42090
|
-
</div>
|
|
42218
|
+
<div>
|
|
42219
|
+
<mat-slide-toggle
|
|
42220
|
+
[checked]="false"
|
|
42221
|
+
[labelPosition]="'before'"
|
|
42222
|
+
(change)="setHeightAdjustable($event)">
|
|
42223
|
+
Height adjustable
|
|
42224
|
+
</mat-slide-toggle>
|
|
42091
42225
|
</div>
|
|
42092
42226
|
|
|
42093
|
-
<div class="model-
|
|
42094
|
-
<div
|
|
42095
|
-
<label>
|
|
42096
|
-
|
|
42097
|
-
|
|
42098
|
-
|
|
42099
|
-
|
|
42100
|
-
|
|
42101
|
-
|
|
42102
|
-
</mat-
|
|
42103
|
-
</
|
|
42227
|
+
<div class="model-placement-container">
|
|
42228
|
+
<div>
|
|
42229
|
+
<label>Placement</label>
|
|
42230
|
+
|
|
42231
|
+
<mat-form-field *ngIf="placementOptions">
|
|
42232
|
+
<mat-select [(value)]="selectedPlacement">
|
|
42233
|
+
<mat-option *ngFor="let placementOption of placementOptions"
|
|
42234
|
+
[value]="placementOption.code">{{ placementOption.description }}
|
|
42235
|
+
</mat-option>
|
|
42236
|
+
</mat-select>
|
|
42237
|
+
</mat-form-field>
|
|
42104
42238
|
</div>
|
|
42105
42239
|
</div>
|
|
42240
|
+
</div>
|
|
42106
42241
|
|
|
42242
|
+
<div class="model-preview-info" *ngIf="this.data">
|
|
42107
42243
|
<div class="model-preview-info-container">
|
|
42108
42244
|
<div class="model-preview-info-left">
|
|
42109
|
-
<label>
|
|
42245
|
+
<label>Save as:</label>
|
|
42110
42246
|
</div>
|
|
42111
42247
|
<div class="model-preview-info-right">
|
|
42112
|
-
<
|
|
42248
|
+
<input type="text" id="fileName" #fileName value="{{ this.data.file.file.name }}">
|
|
42113
42249
|
</div>
|
|
42114
42250
|
</div>
|
|
42115
|
-
<
|
|
42116
|
-
|
|
42117
|
-
|
|
42251
|
+
<div>
|
|
42252
|
+
<button class="base-button exportButton" (click)="exportSceneAsGLB('upload')">Upload and add to scene</button>
|
|
42253
|
+
<button class="base-button exportButtonDark" (click)="exportSceneAsGLB('download')">Download</button>
|
|
42254
|
+
</div>
|
|
42118
42255
|
</div>
|
|
42119
42256
|
</div>
|
|
42120
42257
|
</div>
|
|
42121
|
-
`, isInline: true, styles: [".model-preview{display:flex;flex-direction:row}.model-preview .model-preview-actions{min-width:
|
|
42258
|
+
`, isInline: true, styles: [".model-preview{display:flex;flex-direction:row;font-size:14px}.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:#dda73f;border:1px solid #dda73f;border-radius:3px;box-sizing:border-box;padding:5px;display:flex;align-items:center}.model-preview .exportButton:hover{background:#dda73f;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:#dda73f;border:1px solid #dda73f;border-radius:3px;box-sizing:border-box;padding:4px 10px;line-height:30px}.base-button:hover{background:#dda73f;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{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;text-align:center}.rotation-button-container div button:hover{background:#dda73f;color:#fff}.rotation-button-container div .button-as-link{color:#dda73f;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:#dda73f}.rotation-button-container div .button-as-link:hover{background:none;color:#dda73f}.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}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:0;border:1px solid #5b6875;border-radius:4px}:host ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix{padding:0;border:none}:host ::ng-deep .mat-select-value{padding-left:5px}:host ::ng-deep .mat-form-field-appearance-legacy .mat-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"], components: [{ type: i10$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked", "aria-describedby"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
42122
42259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModelPreviewComponent, decorators: [{
|
|
42123
42260
|
type: Component,
|
|
42124
42261
|
args: [{
|
|
42125
42262
|
selector: 'rp-model-preview',
|
|
42126
42263
|
template: `
|
|
42127
42264
|
<div class="model-preview">
|
|
42128
|
-
<div class="model-preview-
|
|
42265
|
+
<div class="model-preview-window">
|
|
42266
|
+
<div class="model-preview-container" id="canvasContainer"></div>
|
|
42267
|
+
<div class="model-preview-window-bottom">
|
|
42268
|
+
<div>
|
|
42269
|
+
<mat-slide-toggle
|
|
42270
|
+
[checked]="showReferenceModel"
|
|
42271
|
+
[labelPosition]="'after'"
|
|
42272
|
+
(change)="toggleShowReferenceModel($event)">
|
|
42273
|
+
Show Reference model
|
|
42274
|
+
</mat-slide-toggle>
|
|
42275
|
+
</div>
|
|
42276
|
+
<div class="disclaimer-text-container">
|
|
42277
|
+
<p class="disclaimer-text">
|
|
42278
|
+
Grid scale: 1 tile = 1x1 meter
|
|
42279
|
+
</p>
|
|
42280
|
+
</div>
|
|
42281
|
+
</div>
|
|
42129
42282
|
</div>
|
|
42130
42283
|
<div class="model-preview-actions">
|
|
42131
42284
|
<div class="input-height-container">
|
|
42132
|
-
<
|
|
42133
|
-
<div class="mat-radio-wrapper">
|
|
42134
|
-
<mat-radio-group aria-label="Select an unit" (change)="setUnit($event)">
|
|
42135
|
-
<mat-radio-button [checked]="true" value="cm">Height in cm</mat-radio-button>
|
|
42136
|
-
<mat-radio-button value="inches">Height in inches</mat-radio-button>
|
|
42137
|
-
</mat-radio-group>
|
|
42138
|
-
</div>
|
|
42285
|
+
<h2>Model settings</h2>
|
|
42139
42286
|
<div>
|
|
42140
|
-
<
|
|
42141
|
-
<
|
|
42287
|
+
<h3>Scale:</h3>
|
|
42288
|
+
<input type="text" id="heightArticle" #heightArticle placeholder="Set model height">
|
|
42289
|
+
<mat-form-field class="units-select-form">
|
|
42290
|
+
<mat-select class="units-mat-select" [(value)]="unitsOfMeasurement">
|
|
42291
|
+
<mat-option class="units-mat-option" *ngFor="let unit of units" [value]="unit">{{ unit }}</mat-option>
|
|
42292
|
+
</mat-select>
|
|
42293
|
+
</mat-form-field>
|
|
42294
|
+
<button class="apply-button base-button" (click)="scaleArticle()">Apply</button>
|
|
42142
42295
|
</div>
|
|
42143
42296
|
</div>
|
|
42144
|
-
|
|
42145
|
-
<div>
|
|
42146
|
-
<button (click)="toggleShowReferenceModel()">Show Reference model</button>
|
|
42147
|
-
</div>
|
|
42148
|
-
|
|
42149
42297
|
<div class="rotation-button-container">
|
|
42150
|
-
<
|
|
42151
|
-
<div
|
|
42152
|
-
<
|
|
42153
|
-
<
|
|
42298
|
+
<h3>Rotation:</h3>
|
|
42299
|
+
<div>
|
|
42300
|
+
<p>Rotate on X axis (90 degrees)</p>
|
|
42301
|
+
<p>
|
|
42302
|
+
<button (click)="rotateModel('x', -mathPi / 2)">
|
|
42303
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42304
|
+
</button>
|
|
42305
|
+
<button (click)="rotateModel('x', mathPi / 2)">
|
|
42306
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42307
|
+
</button>
|
|
42308
|
+
</p>
|
|
42154
42309
|
</div>
|
|
42155
|
-
<div
|
|
42156
|
-
<
|
|
42157
|
-
<
|
|
42310
|
+
<div>
|
|
42311
|
+
<p>Rotate on Y axis (90 degrees)</p>
|
|
42312
|
+
<p>
|
|
42313
|
+
<button (click)="rotateModel('y', -mathPi / 2)">
|
|
42314
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42315
|
+
</button>
|
|
42316
|
+
<button (click)="rotateModel('y', mathPi / 2)">
|
|
42317
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42318
|
+
</button>
|
|
42319
|
+
</p>
|
|
42158
42320
|
</div>
|
|
42159
|
-
<div
|
|
42160
|
-
<
|
|
42161
|
-
<
|
|
42321
|
+
<div>
|
|
42322
|
+
<p>Rotate on Z axis (90 degrees)</p>
|
|
42323
|
+
<p>
|
|
42324
|
+
<button (click)="rotateModel('z', -mathPi / 2)">
|
|
42325
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42326
|
+
</button>
|
|
42327
|
+
<button (click)="rotateModel('z', mathPi / 2)">
|
|
42328
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42329
|
+
</button>
|
|
42330
|
+
</p>
|
|
42162
42331
|
</div>
|
|
42163
42332
|
</div>
|
|
42164
|
-
|
|
42165
|
-
|
|
42166
42333
|
<div class="rotation-button-container">
|
|
42167
|
-
<
|
|
42168
|
-
<div
|
|
42169
|
-
<
|
|
42170
|
-
<
|
|
42171
|
-
|
|
42172
|
-
|
|
42173
|
-
|
|
42174
|
-
|
|
42334
|
+
<h3>Position:</h3>
|
|
42335
|
+
<div>
|
|
42336
|
+
<p>Reset to coordinates 0,0,0</p>
|
|
42337
|
+
<p>
|
|
42338
|
+
<button class="button-as-link" (click)="moveModel('all', 0)">
|
|
42339
|
+
<mat-icon svgIcon="retry-button"></mat-icon>
|
|
42340
|
+
Reset
|
|
42341
|
+
</button>
|
|
42342
|
+
</p>
|
|
42175
42343
|
</div>
|
|
42176
|
-
<div
|
|
42177
|
-
<
|
|
42178
|
-
<
|
|
42344
|
+
<div>
|
|
42345
|
+
<p>Move on the Y axis (0.01 unit)</p>
|
|
42346
|
+
<p>
|
|
42347
|
+
<button (click)="moveModel('y', -0.01)">
|
|
42348
|
+
<mat-icon svgIcon="dash-button"></mat-icon>
|
|
42349
|
+
</button>
|
|
42350
|
+
<button (click)="moveModel('y', 0.01)">
|
|
42351
|
+
<mat-icon svgIcon="add-button"></mat-icon>
|
|
42352
|
+
</button>
|
|
42353
|
+
</p>
|
|
42179
42354
|
</div>
|
|
42180
42355
|
</div>
|
|
42181
42356
|
|
|
42182
|
-
<div class="model-preview-info"
|
|
42183
|
-
<
|
|
42184
|
-
|
|
42185
|
-
|
|
42186
|
-
|
|
42187
|
-
|
|
42188
|
-
|
|
42189
|
-
|
|
42357
|
+
<div class="model-preview-info-container">
|
|
42358
|
+
<h3>Properties:</h3>
|
|
42359
|
+
<div>
|
|
42360
|
+
<mat-slide-toggle
|
|
42361
|
+
[checked]="false"
|
|
42362
|
+
[labelPosition]="'before'"
|
|
42363
|
+
(change)="setStackable($event)">
|
|
42364
|
+
Stackable
|
|
42365
|
+
</mat-slide-toggle>
|
|
42190
42366
|
</div>
|
|
42191
|
-
|
|
42192
|
-
|
|
42193
|
-
|
|
42194
|
-
|
|
42195
|
-
|
|
42196
|
-
|
|
42197
|
-
|
|
42198
|
-
<mat-radio-group aria-label="Select an unit" (change)="setStackable($event)">
|
|
42199
|
-
<mat-radio-button [checked]="true" value="false">No</mat-radio-button>
|
|
42200
|
-
<mat-radio-button value="true">Yes</mat-radio-button>
|
|
42201
|
-
</mat-radio-group>
|
|
42202
|
-
</div>
|
|
42203
|
-
</div>
|
|
42367
|
+
<div>
|
|
42368
|
+
<mat-slide-toggle
|
|
42369
|
+
[checked]="false"
|
|
42370
|
+
[labelPosition]="'before'"
|
|
42371
|
+
(change)="setHeightAdjustable($event)">
|
|
42372
|
+
Height adjustable
|
|
42373
|
+
</mat-slide-toggle>
|
|
42204
42374
|
</div>
|
|
42205
42375
|
|
|
42206
|
-
<div class="model-
|
|
42207
|
-
<div
|
|
42208
|
-
<label>
|
|
42209
|
-
|
|
42210
|
-
|
|
42211
|
-
|
|
42212
|
-
|
|
42213
|
-
|
|
42214
|
-
|
|
42215
|
-
</mat-
|
|
42216
|
-
</
|
|
42376
|
+
<div class="model-placement-container">
|
|
42377
|
+
<div>
|
|
42378
|
+
<label>Placement</label>
|
|
42379
|
+
|
|
42380
|
+
<mat-form-field *ngIf="placementOptions">
|
|
42381
|
+
<mat-select [(value)]="selectedPlacement">
|
|
42382
|
+
<mat-option *ngFor="let placementOption of placementOptions"
|
|
42383
|
+
[value]="placementOption.code">{{ placementOption.description }}
|
|
42384
|
+
</mat-option>
|
|
42385
|
+
</mat-select>
|
|
42386
|
+
</mat-form-field>
|
|
42217
42387
|
</div>
|
|
42218
42388
|
</div>
|
|
42389
|
+
</div>
|
|
42219
42390
|
|
|
42391
|
+
<div class="model-preview-info" *ngIf="this.data">
|
|
42220
42392
|
<div class="model-preview-info-container">
|
|
42221
42393
|
<div class="model-preview-info-left">
|
|
42222
|
-
<label>
|
|
42394
|
+
<label>Save as:</label>
|
|
42223
42395
|
</div>
|
|
42224
42396
|
<div class="model-preview-info-right">
|
|
42225
|
-
<
|
|
42397
|
+
<input type="text" id="fileName" #fileName value="{{ this.data.file.file.name }}">
|
|
42226
42398
|
</div>
|
|
42227
42399
|
</div>
|
|
42228
|
-
<
|
|
42229
|
-
|
|
42230
|
-
|
|
42400
|
+
<div>
|
|
42401
|
+
<button class="base-button exportButton" (click)="exportSceneAsGLB('upload')">Upload and add to scene</button>
|
|
42402
|
+
<button class="base-button exportButtonDark" (click)="exportSceneAsGLB('download')">Download</button>
|
|
42403
|
+
</div>
|
|
42231
42404
|
</div>
|
|
42232
42405
|
</div>
|
|
42233
42406
|
</div>
|
|
@@ -42237,7 +42410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
42237
42410
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
42238
42411
|
type: Inject,
|
|
42239
42412
|
args: [MAT_DIALOG_DATA]
|
|
42240
|
-
}] }, { type: HomedecoratorSettingsService }, { type: i1$1.MatDialogRef }, { type: ThirdPartyModelService }, { type: MessageBusService }, { type: i1$1.MatDialog }, { type: HomedecoratorConnectorAdapterService }, { type: LightPresetsService }, { type: HomedecoratorDictionaryService }, { type: FontService }]; }, propDecorators: { glbExportName: [{
|
|
42413
|
+
}] }, { type: HomedecoratorSettingsService }, { type: HomedecoratorIconCacheService }, { type: i1$1.MatDialogRef }, { type: ThirdPartyModelService }, { type: MessageBusService }, { type: i1$1.MatDialog }, { type: HomedecoratorConnectorAdapterService }, { type: LightPresetsService }, { type: HomedecoratorDictionaryService }, { type: FontService }]; }, propDecorators: { glbExportName: [{
|
|
42241
42414
|
type: ViewChild,
|
|
42242
42415
|
args: ['fileName']
|
|
42243
42416
|
}], heightArticle: [{
|
|
@@ -42309,7 +42482,7 @@ class ToolbarComponent {
|
|
|
42309
42482
|
this._subs = [];
|
|
42310
42483
|
this._subs.push(this.messageService.subscribe(MessageType.SetLeftSidebar, (templateRef) => this._setLeftSidebar(templateRef)), this.messageService.subscribe(MessageType.HideLeftSidebar, () => this._closeLeftSidebar({ keepTemplateRef: true })), this.messageService.subscribe(MessageType.RegisterToolbarIcon, (icon) => this._registerToolbarIcon(icon)), this.messageService.subscribe(MessageType.ViewModeChanged, () => this._closeLeftSidebar()), this.messageService.subscribe(MessageType.NewRoom, () => this.newRoom()), this.messageService.subscribe(MessageType.ShowOpenDialog, () => this.openOpenDialog()), this.messageService.subscribe(MessageType.FinishedIOneFurnitureBuild, () => this._hideToast()), this.messageService.subscribe(MessageType.UndefinedErrorOccured, () => this._hideToast()), this.messageService.subscribe(MessageType.RenderServiceTryToConnect, () => this._hideToast()), this.messageService.subscribe(MessageType.RenderServiceConnected, () => this._hideToast()), this._toastService.showToastSub.subscribe((toast) => this._showToast(toast)), this._screenSizeService.screenSizeChanged.subscribe(info => this.phoneSizeScreen = info.isPhoneSize),
|
|
42311
42484
|
// this.messageService.subscribe(MessageType.StartWithDiagram, () => this.openUploadDiagram()),
|
|
42312
|
-
this.messageService.subscribe(MessageType.StartDrawingDiagram, (file) => this.openDrawDiagram(file)), this.messageService.subscribe(MessageType.StartCroppingPDF, (file) => this.openCroppingDiagram(file)), this.messageService.subscribe(MessageType.UserModelUploaded, (file) => this.openModelPreview(file)));
|
|
42485
|
+
this.messageService.subscribe(MessageType.StartDrawingDiagram, (file) => this.openDrawDiagram(file)), this.messageService.subscribe(MessageType.StartCroppingPDF, (file) => this.openCroppingDiagram(file)), this.messageService.subscribe(MessageType.UserModelUploaded, (file) => this.openModelPreview(file)), this.messageService.subscribe(MessageType.RenderError, (data) => this.showRenderError(data)));
|
|
42313
42486
|
}
|
|
42314
42487
|
handleKeyDown(event) {
|
|
42315
42488
|
if (event.ctrlKey && event.shiftKey && event.key === 'S') {
|
|
@@ -42507,6 +42680,12 @@ class ToolbarComponent {
|
|
|
42507
42680
|
data: { file: file }
|
|
42508
42681
|
});
|
|
42509
42682
|
}
|
|
42683
|
+
showRenderError(data) {
|
|
42684
|
+
this._dialog.open(ErrorDialogComponent, {
|
|
42685
|
+
data: data
|
|
42686
|
+
});
|
|
42687
|
+
this.messageService.emit(MessageType.HideLoadingIndicator);
|
|
42688
|
+
}
|
|
42510
42689
|
testRender() {
|
|
42511
42690
|
this._newRenderService.forceRenderImage();
|
|
42512
42691
|
}
|
|
@@ -42599,9 +42778,9 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
42599
42778
|
</ng-container>
|
|
42600
42779
|
<div class="hd-toolbar-spacer"></div>
|
|
42601
42780
|
|
|
42602
|
-
<!-- <ng-container>-->
|
|
42603
|
-
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
42604
|
-
<!-- </ng-container>-->
|
|
42781
|
+
<!-- <ng-container>-->
|
|
42782
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
42783
|
+
<!-- </ng-container>-->
|
|
42605
42784
|
|
|
42606
42785
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
42607
42786
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -42755,9 +42934,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
42755
42934
|
</ng-container>
|
|
42756
42935
|
<div class="hd-toolbar-spacer"></div>
|
|
42757
42936
|
|
|
42758
|
-
<!-- <ng-container>-->
|
|
42759
|
-
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
42760
|
-
<!-- </ng-container>-->
|
|
42937
|
+
<!-- <ng-container>-->
|
|
42938
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
42939
|
+
<!-- </ng-container>-->
|
|
42761
42940
|
|
|
42762
42941
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
42763
42942
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -42958,7 +43137,7 @@ ProductOwnCollectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
|
|
|
42958
43137
|
(onArticleClick)="handleArticleClick($event)"
|
|
42959
43138
|
(onArButtonClick)="handleArButtonClick($event)"
|
|
42960
43139
|
></co-catalog-search>
|
|
42961
|
-
`, isInline: true, styles: [":host{display:block;overflow:auto}\n"], components: [{ type: i7$
|
|
43140
|
+
`, isInline: true, styles: [":host{display:block;overflow:auto}\n"], components: [{ type: i7$2.ɵbf, selector: "co-catalog-search", inputs: ["createFrozenArticle", "showNavigation", "showLandingPage", "showFilter", "showViewModes", "settings", "title", "subTitle", "searchPlaceholder"], outputs: ["settingsChange", "onLookAtArticleButtonClick", "onArButtonClick", "onAddArticleButtonClick", "onArticleClick", "onStockDetailsClick", "onExternalSourceClick"] }], pipes: { "localize": LocalizePipe } });
|
|
42962
43141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductOwnCollectionComponent, decorators: [{
|
|
42963
43142
|
type: Component,
|
|
42964
43143
|
args: [{
|
|
@@ -43391,7 +43570,7 @@ class ProductCatalogComponent {
|
|
|
43391
43570
|
});
|
|
43392
43571
|
}
|
|
43393
43572
|
}
|
|
43394
|
-
ProductCatalogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductCatalogComponent, deps: [{ token: HomedecoratorSettingsService }, { token: MessageBusService }, { token: HomedecoratorConnectorService }, { token: ScreenSizeAnalysisService }, { token: SceneService }, { token: FloorplanService }, { token: i0.Injector }, { token: i7$
|
|
43573
|
+
ProductCatalogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductCatalogComponent, deps: [{ token: HomedecoratorSettingsService }, { token: MessageBusService }, { token: HomedecoratorConnectorService }, { token: ScreenSizeAnalysisService }, { token: SceneService }, { token: FloorplanService }, { token: i0.Injector }, { token: i7$2.CatalogService }, { token: DynamicScriptService }, { token: HomedecoratorConnectorAdapterService }, { token: BuildFurnitureService }, { token: ThirdPartyModelService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43395
43574
|
ProductCatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProductCatalogComponent, selector: "rp-product-catalog", host: { properties: { "class.shown": "this.shown", "class.no-offset": "this.phoneSizeScreen" } }, ngImport: i0, template: `
|
|
43396
43575
|
<div class="product-catalog-wrapper">
|
|
43397
43576
|
<div class="catalog-button-wrapper" *ngIf="showOwnCollection || showExternalCatalog">
|
|
@@ -43452,7 +43631,7 @@ ProductCatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
43452
43631
|
<mat-icon class="homedecorator-material-icons" aria-hidden="true">close</mat-icon>
|
|
43453
43632
|
</button>
|
|
43454
43633
|
</div>
|
|
43455
|
-
`, isInline: true, styles: [":host{display:none;z-index:99;overflow:hidden}:host .layer{pointer-events:all!important;overflow-y:hidden;display:flex;flex-direction:column}:host .product-catalog-wrapper{display:flex;flex-direction:column;height:100%;padding:30px}:host .product-catalog-wrapper .catalog-button-wrapper{font-size:16px;margin-bottom:20px}:host .product-catalog-wrapper .co-catalog-external-source{display:flex;flex-basis:100%}:host .own-collection-button-wrapper{cursor:pointer}:host .own-collection-button-wrapper .own-collection-description{font-size:12px;font-weight:bold;text-shadow:none;text-transform:capitalize;margin:10px 0}:host .own-collection-button-wrapper .co-image{padding:25px;background:#3760a1;border-radius:10px}:host.shown{display:inline-block;position:relative;top:64px;left:64px;width:calc(100% - 64px);height:calc(100vh - 64px);background-color:#fff}:host.no-offset{left:0;width:100%;z-index:100}:host .ione-catalog{display:block;overflow:hidden}:host .ione-catalog ::ng-deep app-catalog{overflow:hidden}:host .catalog-button-wrapper .back-button,:host .catalog-button-wrapper .refresh-button{cursor:pointer;display:inline-block;font-weight:bold}:host .catalog-button-wrapper .back-button .refresh-button-span,:host .catalog-button-wrapper .back-button .back-button-span,:host .catalog-button-wrapper .refresh-button .refresh-button-span,:host .catalog-button-wrapper .refresh-button .back-button-span{vertical-align:top;line-height:25px;margin:10px 5px 0}:host .catalog-button-wrapper .button-spacer{display:inline-block;margin:0 10px}:host .product-catalog-wrapper{overflow:auto}:host .hide-catalog{position:absolute;top:6px;right:0px;z-index:100}.co-catalog-external-sources .external-source-item .co-image img{object-fit:cover}::ng-deep .co-catalog-navigation{position:relative}::ng-deep .co-catalog-navigation .navigation-overlay-wrapper{position:absolute!important;left:-40px!important;padding:20px 40px;grid-column-gap:60px}\n"], components: [{ type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ProductOwnCollectionComponent, selector: "rp-product-own-collection", inputs: ["settings"], outputs: ["articleClick", "arButtonClick"] }, { type: ModelUploaderComponent, selector: "rp-model-uploader" }, { type: i4$1.ImageComponent, selector: "co-image", inputs: ["source", "placeHolder"] }, { type: i7$
|
|
43634
|
+
`, isInline: true, styles: [":host{display:none;z-index:99;overflow:hidden}:host .layer{pointer-events:all!important;overflow-y:hidden;display:flex;flex-direction:column}:host .product-catalog-wrapper{display:flex;flex-direction:column;height:100%;padding:30px}:host .product-catalog-wrapper .catalog-button-wrapper{font-size:16px;margin-bottom:20px}:host .product-catalog-wrapper .co-catalog-external-source{display:flex;flex-basis:100%}:host .own-collection-button-wrapper{cursor:pointer}:host .own-collection-button-wrapper .own-collection-description{font-size:12px;font-weight:bold;text-shadow:none;text-transform:capitalize;margin:10px 0}:host .own-collection-button-wrapper .co-image{padding:25px;background:#3760a1;border-radius:10px}:host.shown{display:inline-block;position:relative;top:64px;left:64px;width:calc(100% - 64px);height:calc(100vh - 64px);background-color:#fff}:host.no-offset{left:0;width:100%;z-index:100}:host .ione-catalog{display:block;overflow:hidden}:host .ione-catalog ::ng-deep app-catalog{overflow:hidden}:host .catalog-button-wrapper .back-button,:host .catalog-button-wrapper .refresh-button{cursor:pointer;display:inline-block;font-weight:bold}:host .catalog-button-wrapper .back-button .refresh-button-span,:host .catalog-button-wrapper .back-button .back-button-span,:host .catalog-button-wrapper .refresh-button .refresh-button-span,:host .catalog-button-wrapper .refresh-button .back-button-span{vertical-align:top;line-height:25px;margin:10px 5px 0}:host .catalog-button-wrapper .button-spacer{display:inline-block;margin:0 10px}:host .product-catalog-wrapper{overflow:auto}:host .hide-catalog{position:absolute;top:6px;right:0px;z-index:100}.co-catalog-external-sources .external-source-item .co-image img{object-fit:cover}::ng-deep .co-catalog-navigation{position:relative}::ng-deep .co-catalog-navigation .navigation-overlay-wrapper{position:absolute!important;left:-40px!important;padding:20px 40px;grid-column-gap:60px}\n"], components: [{ type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ProductOwnCollectionComponent, selector: "rp-product-own-collection", inputs: ["settings"], outputs: ["articleClick", "arButtonClick"] }, { type: ModelUploaderComponent, selector: "rp-model-uploader" }, { type: i4$1.ImageComponent, selector: "co-image", inputs: ["source", "placeHolder"] }, { type: i7$2.ɵt, selector: "co-catalog-external-sources", outputs: ["externalSourceClick"] }, { type: i7$2.ɵbg, selector: "co-catalog-external-source", inputs: ["showFilter", "showNavigation", "externalCatalogStartupInfo", "catalogDefinition", "user", "title", "subTitle", "searchPlaceholder", "options", "name"], outputs: ["articleClick", "addArticleClick", "iFrameFeedbackReceived"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": LocalizePipe, "append": AppendPipe } });
|
|
43456
43635
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductCatalogComponent, decorators: [{
|
|
43457
43636
|
type: Component,
|
|
43458
43637
|
args: [{
|
|
@@ -43520,7 +43699,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
43520
43699
|
`,
|
|
43521
43700
|
styleUrls: ['./product-catalog.component.scss']
|
|
43522
43701
|
}]
|
|
43523
|
-
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }, { type: MessageBusService }, { type: HomedecoratorConnectorService }, { type: ScreenSizeAnalysisService }, { type: SceneService }, { type: FloorplanService }, { type: i0.Injector }, { type: i7$
|
|
43702
|
+
}], ctorParameters: function () { return [{ type: HomedecoratorSettingsService }, { type: MessageBusService }, { type: HomedecoratorConnectorService }, { type: ScreenSizeAnalysisService }, { type: SceneService }, { type: FloorplanService }, { type: i0.Injector }, { type: i7$2.CatalogService }, { type: DynamicScriptService }, { type: HomedecoratorConnectorAdapterService }, { type: BuildFurnitureService }, { type: ThirdPartyModelService }]; }, propDecorators: { shown: [{
|
|
43524
43703
|
type: HostBinding,
|
|
43525
43704
|
args: ['class.shown']
|
|
43526
43705
|
}], phoneSizeScreen: [{
|
|
@@ -43692,7 +43871,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
43692
43871
|
});
|
|
43693
43872
|
};
|
|
43694
43873
|
class HomedecoratorComponent {
|
|
43695
|
-
constructor(controllerService, appState, presetsService, screenAnalysis, _componentFactoryResolver, _iconRegistry, _domSanitizer, _messageService, _homedecoratorService) {
|
|
43874
|
+
constructor(controllerService, appState, presetsService, screenAnalysis, _componentFactoryResolver, _iconRegistry, _domSanitizer, _messageService, _homedecoratorService, _eventService) {
|
|
43696
43875
|
this.controllerService = controllerService;
|
|
43697
43876
|
this.appState = appState;
|
|
43698
43877
|
this.presetsService = presetsService;
|
|
@@ -43702,6 +43881,7 @@ class HomedecoratorComponent {
|
|
|
43702
43881
|
this._domSanitizer = _domSanitizer;
|
|
43703
43882
|
this._messageService = _messageService;
|
|
43704
43883
|
this._homedecoratorService = _homedecoratorService;
|
|
43884
|
+
this._eventService = _eventService;
|
|
43705
43885
|
this.showClass = true;
|
|
43706
43886
|
this.loaded = false;
|
|
43707
43887
|
this.title = 'MyRoomPlans';
|
|
@@ -43833,7 +44013,10 @@ class HomedecoratorComponent {
|
|
|
43833
44013
|
'hand-pointer',
|
|
43834
44014
|
'check',
|
|
43835
44015
|
'move-phone-ar',
|
|
43836
|
-
'cart-shopping-regular'
|
|
44016
|
+
'cart-shopping-regular',
|
|
44017
|
+
'pen-ruler',
|
|
44018
|
+
'dash-button',
|
|
44019
|
+
'retry-button'
|
|
43837
44020
|
].map(addIcon);
|
|
43838
44021
|
}
|
|
43839
44022
|
keyup(event) {
|
|
@@ -43857,6 +44040,7 @@ class HomedecoratorComponent {
|
|
|
43857
44040
|
});
|
|
43858
44041
|
}
|
|
43859
44042
|
_startWithEmptyRoom(switchTo2D) {
|
|
44043
|
+
this._eventService.dirty.next(true);
|
|
43860
44044
|
const preset = Preset.CreateModelFromInterface({ filename: 'assets/presets/empty.json' });
|
|
43861
44045
|
this._startWithPreset(preset, switchTo2D);
|
|
43862
44046
|
}
|
|
@@ -43871,7 +44055,7 @@ class HomedecoratorComponent {
|
|
|
43871
44055
|
this._messageService.emit(MessageType.LoadRoomFromPreset, preset);
|
|
43872
44056
|
}
|
|
43873
44057
|
}
|
|
43874
|
-
HomedecoratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorComponent, deps: [{ token: HomedecoratorConnectorService }, { token: AppStateService }, { token: PresetsService }, { token: ScreenSizeAnalysisService }, { token: i0.ComponentFactoryResolver }, { token: i5$1.MatIconRegistry }, { token: i1.DomSanitizer }, { token: MessageBusService }, { token: HomedecoratorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
44058
|
+
HomedecoratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorComponent, deps: [{ token: HomedecoratorConnectorService }, { token: AppStateService }, { token: PresetsService }, { token: ScreenSizeAnalysisService }, { token: i0.ComponentFactoryResolver }, { token: i5$1.MatIconRegistry }, { token: i1.DomSanitizer }, { token: MessageBusService }, { token: HomedecoratorService }, { token: HomedecoratorAppEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43875
44059
|
HomedecoratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: HomedecoratorComponent, selector: "co-homedecorator", inputs: { settings: "settings" }, host: { listeners: { "document:keyup": "keyup($event)" }, properties: { "class.co-homedecorator": "this.showClass" } }, ngImport: i0, template: `
|
|
43876
44060
|
<div class="viewport" *ngIf="loaded">
|
|
43877
44061
|
<progress-bar></progress-bar>
|
|
@@ -43932,7 +44116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
43932
44116
|
`,
|
|
43933
44117
|
encapsulation: ViewEncapsulation.None
|
|
43934
44118
|
}]
|
|
43935
|
-
}], ctorParameters: function () { return [{ type: HomedecoratorConnectorService }, { type: AppStateService }, { type: PresetsService }, { type: ScreenSizeAnalysisService }, { type: i0.ComponentFactoryResolver }, { type: i5$1.MatIconRegistry }, { type: i1.DomSanitizer }, { type: MessageBusService }, { type: HomedecoratorService }]; }, propDecorators: { settings: [{
|
|
44119
|
+
}], ctorParameters: function () { return [{ type: HomedecoratorConnectorService }, { type: AppStateService }, { type: PresetsService }, { type: ScreenSizeAnalysisService }, { type: i0.ComponentFactoryResolver }, { type: i5$1.MatIconRegistry }, { type: i1.DomSanitizer }, { type: MessageBusService }, { type: HomedecoratorService }, { type: HomedecoratorAppEventService }]; }, propDecorators: { settings: [{
|
|
43936
44120
|
type: Input
|
|
43937
44121
|
}], showClass: [{
|
|
43938
44122
|
type: HostBinding,
|
|
@@ -44785,7 +44969,7 @@ class EditApplyComponent {
|
|
|
44785
44969
|
}
|
|
44786
44970
|
}
|
|
44787
44971
|
EditApplyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditApplyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44788
|
-
EditApplyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditApplyComponent, selector: "rp-edit-apply", inputs: { watched: "watched", disable: "disable" }, outputs: { cancel: "cancel", apply: "apply", toggleChange: "toggleChange" }, ngImport: i0, template: "<mat-button-toggle\r\n *ngIf=\"!checked\"\r\n (change)=\"toggle($event)\">\r\n <mat-icon class=\"homedecorator-material-icons\">mode_edit</mat-icon>\r\n <span>{{'EDIT' | localize}}</span>\r\n</mat-button-toggle>\r\n<article *ngIf=\"checked\">\r\n <button mat-raised-button (click)=\"onCancel()\">\r\n <mat-icon class=\"homedecorator-material-icons\">clear</mat-icon>\r\n </button>\r\n <button mat-raised-button\r\n [disabled]=\"!watched || disable\"\r\n (click)=\"onApply()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">done</mat-icon>\r\n </button>\r\n</article>\r\n", styles: [""], components: [{ type:
|
|
44972
|
+
EditApplyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditApplyComponent, selector: "rp-edit-apply", inputs: { watched: "watched", disable: "disable" }, outputs: { cancel: "cancel", apply: "apply", toggleChange: "toggleChange" }, ngImport: i0, template: "<mat-button-toggle\r\n *ngIf=\"!checked\"\r\n (change)=\"toggle($event)\">\r\n <mat-icon class=\"homedecorator-material-icons\">mode_edit</mat-icon>\r\n <span>{{'EDIT' | localize}}</span>\r\n</mat-button-toggle>\r\n<article *ngIf=\"checked\">\r\n <button mat-raised-button (click)=\"onCancel()\">\r\n <mat-icon class=\"homedecorator-material-icons\">clear</mat-icon>\r\n </button>\r\n <button mat-raised-button\r\n [disabled]=\"!watched || disable\"\r\n (click)=\"onApply()\"\r\n >\r\n <mat-icon class=\"homedecorator-material-icons\">done</mat-icon>\r\n </button>\r\n</article>\r\n", styles: [""], components: [{ type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": LocalizePipe } });
|
|
44789
44973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditApplyComponent, decorators: [{
|
|
44790
44974
|
type: Component,
|
|
44791
44975
|
args: [{
|
|
@@ -46079,7 +46263,12 @@ ModelUploaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
|
|
|
46079
46263
|
ImageModule,
|
|
46080
46264
|
CatalogExternalSourcesModule,
|
|
46081
46265
|
CatalogExternalSourceModule,
|
|
46082
|
-
MatRadioModule
|
|
46266
|
+
MatRadioModule,
|
|
46267
|
+
MatSlideToggleModule,
|
|
46268
|
+
MatFormFieldModule,
|
|
46269
|
+
MatOptionModule,
|
|
46270
|
+
MatSelectModule,
|
|
46271
|
+
IconModule], exports: [ModelUploaderComponent] });
|
|
46083
46272
|
ModelUploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModelUploaderModule, imports: [[
|
|
46084
46273
|
CommonModule,
|
|
46085
46274
|
CoreModule,
|
|
@@ -46090,6 +46279,11 @@ ModelUploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
|
|
|
46090
46279
|
CatalogExternalSourcesModule,
|
|
46091
46280
|
CatalogExternalSourceModule,
|
|
46092
46281
|
MatRadioModule,
|
|
46282
|
+
MatSlideToggleModule,
|
|
46283
|
+
MatFormFieldModule,
|
|
46284
|
+
MatOptionModule,
|
|
46285
|
+
MatSelectModule,
|
|
46286
|
+
IconModule,
|
|
46093
46287
|
]] });
|
|
46094
46288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModelUploaderModule, decorators: [{
|
|
46095
46289
|
type: NgModule,
|
|
@@ -46104,6 +46298,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
46104
46298
|
CatalogExternalSourcesModule,
|
|
46105
46299
|
CatalogExternalSourceModule,
|
|
46106
46300
|
MatRadioModule,
|
|
46301
|
+
MatSlideToggleModule,
|
|
46302
|
+
MatFormFieldModule,
|
|
46303
|
+
MatOptionModule,
|
|
46304
|
+
MatSelectModule,
|
|
46305
|
+
IconModule,
|
|
46107
46306
|
],
|
|
46108
46307
|
exports: [
|
|
46109
46308
|
ModelUploaderComponent
|