@colijnit/product 262.1.3 → 262.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Pipe, EventEmitter, Output, Input, Component, ElementRef, HostBinding, HostListener, ViewChild, ChangeDetectionStrategy, SecurityContext, ViewEncapsulation, NgModule, CUSTOM_ELEMENTS_SCHEMA, PLATFORM_ID, Inject, NO_ERRORS_SCHEMA } from '@angular/core';
3
- import { Subject, BehaviorSubject, ReplaySubject, combineLatest, from } from 'rxjs';
3
+ import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
4
4
  import { Options } from '@colijnit/ioneconnector/build/model/options';
5
5
  import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
6
6
  import { SuperArticle } from '@colijnit/articleapi/build/model/super-article';
@@ -15,27 +15,27 @@ import { ArticleListObjectExtended } from '@colijnit/articleapi/build/model/arti
15
15
  import { ImageContent } from '@colijnit/mainapi/build/model/image-content.bo';
16
16
  import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
17
17
  import { trigger, state, style, transition, animate } from '@angular/animations';
18
- import * as i5 from '@colijnit/configurator';
19
- import { ConfigurationResultObject, ConfiguratorModule, ConfiguratorSceneModule } from '@colijnit/configurator';
20
18
  import * as i1 from '@angular/platform-browser';
19
+ import * as i5 from '@colijnit/configurator';
20
+ import { ConfigurationPresetModule, ConfiguratorModule, ConfiguratorSceneModule } from '@colijnit/configurator';
21
21
  import * as i6 from '@colijnit/corecomponents_v12';
22
22
  import { IconModule, LoaderModule, ScrollContainerModule, InputNumberPickerModule, ButtonModule, ArticleTileModule, TileModule, IconCollapseHandleModule } from '@colijnit/corecomponents_v12';
23
23
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document.bo';
24
24
  import * as i6$1 from '@angular/cdk/overlay';
25
25
  import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
26
- import * as i1$1 from '@angular/common';
27
- import { CommonModule, isPlatformBrowser } from '@angular/common';
28
26
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
29
27
  import * as i3 from '@colijnit/sharedcomponents';
30
28
  import { FilesUploadModule } from '@colijnit/sharedcomponents';
29
+ import * as i5$1 from '@angular/common';
30
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
31
31
 
32
32
  // this file is dynamically created, do not change this
33
33
  class Version {
34
34
  constructor() {
35
35
  this.name = "@colijnit/product";
36
36
  this.description = "Product detail page project for iOne";
37
- this.symVer = "262.1.3";
38
- this.publishDate = "5-5-2026, 08:26:40";
37
+ this.symVer = "262.1.6";
38
+ this.publishDate = "28-5-2026, 16:34:41";
39
39
  }
40
40
  }
41
41
 
@@ -261,20 +261,6 @@ class ProductConnectorAdapterService {
261
261
  return Promise.resolve(false);
262
262
  }
263
263
  }
264
- async getGoogleTranslation(sourceLang, targetLang, list) {
265
- const result = await this.mainConnector.getGoogleTranslation(sourceLang, targetLang, list);
266
- if (result.validationResult && result.validationResult.success) {
267
- return result.resultObject;
268
- }
269
- }
270
- async googleTranslateEnabled() {
271
- // this should always be fetched from the mainapi from the client
272
- const response = await this.mainConnector.isGoogleTranslateEnabled();
273
- if (response && response.validationResult && response.validationResult.success) {
274
- return response.resultObject;
275
- }
276
- return false;
277
- }
278
264
  async getDefaultLanguage(upId) {
279
265
  // this should always be fetched from the mainapi from the client
280
266
  const response = await this.mainConnector.getPublicParams(upId);
@@ -670,12 +656,6 @@ class ProductConnectorService {
670
656
  async savePreset() {
671
657
  return await this._adapterService.savePreset();
672
658
  }
673
- async getGoogleTranslation(sourceLang, targetLang, list) {
674
- return await this._adapterService.getGoogleTranslation(sourceLang, targetLang, list);
675
- }
676
- googleTranslateEnabled() {
677
- return this._adapterService.googleTranslateEnabled();
678
- }
679
659
  async getDefaultLanguage(upId) {
680
660
  return await this._adapterService.getDefaultLanguage(upId);
681
661
  }
@@ -689,77 +669,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
689
669
  type: Injectable
690
670
  }], ctorParameters: () => [{ type: ProductConnectorAdapterService }, { type: ProductSettingsService }] });
691
671
 
692
- class GoogleTranslation {
693
- constructor(label, translation, language) {
694
- this.label = label;
695
- this.translation = translation;
696
- this.language = language;
697
- }
698
- }
699
- class GoogleTranslateService {
700
- constructor(_settingsService, _connectorService) {
701
- this._settingsService = _settingsService;
702
- this._connectorService = _connectorService;
703
- this._translations = [];
704
- this._initialized = false;
705
- this._initializedSubject = new ReplaySubject(1);
706
- this.googleApiEnabled = false;
707
- this._connectionSubject = combineLatest([
708
- this._settingsService.settingsLoaded,
709
- this._connectorService.controllerInitialized
710
- ]).subscribe(async ([settingsInitialized, controllerInitialized]) => {
711
- if (settingsInitialized && controllerInitialized) {
712
- this._clientLanguage = this._settingsService.settings.languageCode;
713
- const googleTranslateEnabled = await this._connectorService.googleTranslateEnabled();
714
- if (googleTranslateEnabled) {
715
- this.googleApiEnabled = true;
716
- this._defaultLanguage = await this._connectorService.getDefaultLanguage(+this._settingsService.settings.schema);
717
- }
718
- this._initialized = true;
719
- this._initializedSubject.next();
720
- this._initializedSubject.complete();
721
- }
722
- });
723
- }
724
- ngOnDestroy() {
725
- this._connectionSubject.unsubscribe();
726
- }
727
- async getTranslation(input) {
728
- if (!this._initialized) {
729
- await this._initializedSubject.toPromise();
730
- }
731
- if (!this.googleApiEnabled) {
732
- return input;
733
- }
734
- const sourceLang = this._defaultLanguage.toLowerCase();
735
- const targetLang = this._clientLanguage.toLowerCase();
736
- const translationList = [input];
737
- // When we do not need a translation
738
- if (!input || (sourceLang === targetLang)) {
739
- return input;
740
- }
741
- // When we might have cache
742
- const result = this._translations.find(item => item.label === input && item.language === targetLang);
743
- if (result && result.translation) {
744
- return result.translation;
745
- }
746
- // translate
747
- const translation = await this._connectorService.getGoogleTranslation(sourceLang, targetLang, translationList);
748
- const key = Object.keys(translation)[0];
749
- const cache = new GoogleTranslation(input, translation[key], targetLang);
750
- this._translations.push(cache);
751
- return translation[key];
752
- }
753
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslateService, deps: [{ token: ProductSettingsService }, { token: ProductConnectorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
754
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslateService, providedIn: 'root' }); }
755
- }
756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslateService, decorators: [{
757
- type: Injectable,
758
- args: [{
759
- providedIn: 'root'
760
- }]
761
- }], ctorParameters: () => [{ type: ProductSettingsService }, { type: ProductConnectorService }] });
762
-
763
672
  class RootStorageObject {
764
673
  }
765
674
  class LocalStorageService {
@@ -836,13 +745,6 @@ var IconEnum;
836
745
  IconEnum["Warehouse"] = "warehouse";
837
746
  })(IconEnum || (IconEnum = {}));
838
747
 
839
- var PresetDialogType;
840
- (function (PresetDialogType) {
841
- PresetDialogType[PresetDialogType["info"] = 0] = "info";
842
- PresetDialogType[PresetDialogType["warning"] = 1] = "warning";
843
- PresetDialogType[PresetDialogType["success"] = 2] = "success";
844
- })(PresetDialogType || (PresetDialogType = {}));
845
-
846
748
  /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
847
749
  const IconSvg = {
848
750
  "add_to_cart_drop": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.58,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,16.58,34.84Z\" fill=\"#484f60\"/><path d=\"M31.49,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,31.49,34.84Z\" fill=\"#484f60\"/><path d=\"M35.6,17.9l-1.51.18L31.88,20.3l1.31-.17a.88.88,0,0,1,1,1.08L32.35,29.5a1.52,1.52,0,0,1-1.44,1.2H16.51a1.75,1.75,0,0,1-1.57-1.17l-2.31-5.6a1,1,0,0,1,.85-1.29l4.43-.56-1.86-1.86-5.13.61a1,1,0,0,0-.87,1.28l3.34,9.44A1.73,1.73,0,0,0,15,32.72H32.64a1.51,1.51,0,0,0,1.43-1.2L36.6,19A.89.89,0,0,0,35.6,17.9Z\" fill=\"#484f60\"/><path d=\"M39,17a1.87,1.87,0,0,0-1.36,1.46l-.42,2.89c-.1.67.31,1,.9.7a2.75,2.75,0,0,0,1.33-1.7L40,18A.73.73,0,0,0,39,17Z\" fill=\"#484f60\"/><polygon points=\"24 25.35 32.04 17.3 27.04 17.3 27.04 10 20.95 10 20.95 17.3 15.96 17.3 24 25.35\" fill=\"#484f60\"/></svg>",
@@ -1391,54 +1293,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1391
1293
  args: ['class.resizing']
1392
1294
  }] } });
1393
1295
 
1394
- class GoogleTranslatePipe {
1395
- constructor(_googleTranslateService) {
1396
- this._googleTranslateService = _googleTranslateService;
1397
- }
1398
- transform(value) {
1399
- return from(this._googleTranslateService.getTranslation(value));
1400
- }
1401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslatePipe, deps: [{ token: GoogleTranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
1402
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslatePipe, isStandalone: false, name: "googleTranslate" }); }
1403
- }
1404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GoogleTranslatePipe, decorators: [{
1405
- type: Pipe,
1406
- args: [{
1407
- name: 'googleTranslate',
1408
- standalone: false
1409
- }]
1410
- }], ctorParameters: () => [{ type: GoogleTranslateService }] });
1411
-
1412
1296
  class ProductDescriptionComponent {
1413
1297
  constructor() { }
1414
1298
  ngOnInit() {
1415
1299
  }
1416
1300
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1417
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductDescriptionComponent, isStandalone: false, selector: "app-product-description", inputs: { article: "article" }, ngImport: i0, template: `
1418
- <div class="pd-title-wrapper">
1419
- @if (article?.descriptionRetail) {
1420
- <span class="pd-description" [textContent]="article?.descriptionRetail | googleTranslate | async"></span>
1421
- }
1422
- @if (article?.articleNr) {
1423
- <span class="pd-sku" [textContent]="article?.articleNr | googleTranslate | async"></span>
1424
- }
1425
- </div>
1426
- `, isInline: true, styles: [":host{display:block}.pd-title-wrapper{margin:0;padding-bottom:30px}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{font-size:14px}@media screen and (max-width: 650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}\n"], dependencies: [{ kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: GoogleTranslatePipe, name: "googleTranslate" }] }); }
1301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductDescriptionComponent, isStandalone: false, selector: "app-product-description", inputs: { article: "article", configuring: "configuring" }, ngImport: i0, template: `
1302
+ <div class="product-description-wrapper">
1303
+ <div class="pd-title-wrapper">
1304
+ @if (article?.descriptionRetail) {
1305
+ <span class="pd-description" [textContent]="article?.descriptionRetail"></span>
1306
+ }
1307
+ @if (article?.articleNr) {
1308
+ <span class="pd-sku" [textContent]="article?.articleNr"></span>
1309
+ }
1310
+ </div>
1311
+ <div class="save-configuration-button">
1312
+ @if (configuring) {
1313
+ <co-configuration-preset></co-configuration-preset>
1314
+ }
1315
+ </div>
1316
+ </div>
1317
+ `, isInline: true, styles: [":host{display:block}:host .product-description-wrapper{display:flex;justify-content:space-between}:host .product-description-wrapper .pd-title-wrapper{margin:0;padding-bottom:30px}:host .product-description-wrapper .pd-title-wrapper .pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}:host .product-description-wrapper .pd-title-wrapper .pd-sku{font-size:14px}:host .product-description-wrapper .save-configuration-button ::ng-deep .open-save-load{display:none}:host .product-description-wrapper .save-configuration-button ::ng-deep .save-load-configuration-buttons{visibility:visible;position:relative;transform:none;pointer-events:all;opacity:1;box-shadow:none}:host .product-description-wrapper .save-configuration-button ::ng-deep .save-load-configuration-buttons .save-preset-button{border:1px solid #1A73E8;cursor:pointer}@media screen and (max-width: 650px){:host .product-description-wrapper .pd-description{font-size:21px}:host .product-description-wrapper .pd-sku{font-size:13px}}\n"], dependencies: [{ kind: "component", type: i5.ConfigurationPresetComponent, selector: "co-configuration-preset" }] }); }
1427
1318
  }
1428
1319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionComponent, decorators: [{
1429
1320
  type: Component,
1430
1321
  args: [{ selector: 'app-product-description', template: `
1431
- <div class="pd-title-wrapper">
1432
- @if (article?.descriptionRetail) {
1433
- <span class="pd-description" [textContent]="article?.descriptionRetail | googleTranslate | async"></span>
1434
- }
1435
- @if (article?.articleNr) {
1436
- <span class="pd-sku" [textContent]="article?.articleNr | googleTranslate | async"></span>
1437
- }
1438
- </div>
1439
- `, standalone: false, styles: [":host{display:block}.pd-title-wrapper{margin:0;padding-bottom:30px}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{font-size:14px}@media screen and (max-width: 650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}\n"] }]
1322
+ <div class="product-description-wrapper">
1323
+ <div class="pd-title-wrapper">
1324
+ @if (article?.descriptionRetail) {
1325
+ <span class="pd-description" [textContent]="article?.descriptionRetail"></span>
1326
+ }
1327
+ @if (article?.articleNr) {
1328
+ <span class="pd-sku" [textContent]="article?.articleNr"></span>
1329
+ }
1330
+ </div>
1331
+ <div class="save-configuration-button">
1332
+ @if (configuring) {
1333
+ <co-configuration-preset></co-configuration-preset>
1334
+ }
1335
+ </div>
1336
+ </div>
1337
+ `, standalone: false, styles: [":host{display:block}:host .product-description-wrapper{display:flex;justify-content:space-between}:host .product-description-wrapper .pd-title-wrapper{margin:0;padding-bottom:30px}:host .product-description-wrapper .pd-title-wrapper .pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}:host .product-description-wrapper .pd-title-wrapper .pd-sku{font-size:14px}:host .product-description-wrapper .save-configuration-button ::ng-deep .open-save-load{display:none}:host .product-description-wrapper .save-configuration-button ::ng-deep .save-load-configuration-buttons{visibility:visible;position:relative;transform:none;pointer-events:all;opacity:1;box-shadow:none}:host .product-description-wrapper .save-configuration-button ::ng-deep .save-load-configuration-buttons .save-preset-button{border:1px solid #1A73E8;cursor:pointer}@media screen and (max-width: 650px){:host .product-description-wrapper .pd-description{font-size:21px}:host .product-description-wrapper .pd-sku{font-size:13px}}\n"] }]
1440
1338
  }], ctorParameters: () => [], propDecorators: { article: [{
1441
1339
  type: Input
1340
+ }], configuring: [{
1341
+ type: Input
1442
1342
  }] } });
1443
1343
 
1444
1344
  class BitUtils {
@@ -1496,18 +1396,18 @@ class ProductAdditionalDescriptionComponent {
1496
1396
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductAdditionalDescriptionComponent, isStandalone: false, selector: "app-product-additional-description", inputs: { article: "article" }, ngImport: i0, template: `
1497
1397
  @if (description !== '') {
1498
1398
  <div class="pd-additional-description">
1499
- <p [innerHTML]="description | googleTranslate | async"></p>
1399
+ <p [innerHTML]="description"></p>
1500
1400
  <button class="pd-read-more-btn" [textContent]="'READ_MORE' | localize" (click)="onReadMore()"></button>
1501
1401
  </div>
1502
1402
  }
1503
- `, isInline: true, styles: [":host{display:block;padding-top:0!important}:host *:focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#1a73e8;border:none;background:transparent;cursor:pointer;text-decoration:underline}:host .pd-read-more-btn:hover{color:#4e9b7e}@media screen and (max-width: 650px){:host .pd-additional-description{font-size:12px}}\n"], dependencies: [{ kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: GoogleTranslatePipe, name: "googleTranslate" }] }); }
1403
+ `, isInline: true, styles: [":host{display:block;padding-top:0!important}:host *:focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#1a73e8;border:none;background:transparent;cursor:pointer;text-decoration:underline}:host .pd-read-more-btn:hover{color:#4e9b7e}@media screen and (max-width: 650px){:host .pd-additional-description{font-size:12px}}\n"], dependencies: [{ kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
1504
1404
  }
1505
1405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductAdditionalDescriptionComponent, decorators: [{
1506
1406
  type: Component,
1507
1407
  args: [{ selector: 'app-product-additional-description', template: `
1508
1408
  @if (description !== '') {
1509
1409
  <div class="pd-additional-description">
1510
- <p [innerHTML]="description | googleTranslate | async"></p>
1410
+ <p [innerHTML]="description"></p>
1511
1411
  <button class="pd-read-more-btn" [textContent]="'READ_MORE' | localize" (click)="onReadMore()"></button>
1512
1412
  </div>
1513
1413
  }
@@ -1985,7 +1885,7 @@ class ProductRelatedComponent {
1985
1885
  <div class="article-wrapper">
1986
1886
  <co-article-tile
1987
1887
  [imageData]="articleViewModel.imageData"
1988
- [description]="articleViewModel.article.description | googleTranslate | async"
1888
+ [description]="articleViewModel.article.description"
1989
1889
  [price]="articleViewModel.article.price"
1990
1890
  [level]="articleViewModel.article.stockStatus"
1991
1891
  [hasCartButton]="true"
@@ -2001,7 +1901,7 @@ class ProductRelatedComponent {
2001
1901
  </co-scroll-container>
2002
1902
  </div>
2003
1903
  }
2004
- `, isInline: true, styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row;flex:1;justify-content:flex-start}.article-wrapper ::ng-deep co-tile{transition:all .14s ease-out;border:1px solid transparent;padding:10px;display:flex;flex-direction:column;color:#171721;box-sizing:border-box;justify-content:space-between}.article-wrapper ::ng-deep co-tile .price{display:block;padding:10px 0}.article-wrapper ::ng-deep co-tile .description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;height:30px}.article-wrapper ::ng-deep co-tile .tile-bottom{display:flex;flex-direction:column;gap:5px}.article-wrapper ::ng-deep co-tile:hover{border:1px solid #DCE4EA}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon{width:24px;height:24px}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon svg [fill]{fill:#fff}.article-wrapper ::ng-deep co-tile.small{width:100%;height:100%;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:none!important;padding-bottom:0;overflow:hidden;gap:10px;display:flex;flex-direction:column}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .no-image-wrapper{min-height:100px;display:flex;align-items:center}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:none!important;background:transparent!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#4e9b7e;margin:5px 0 0;font-weight:400;font-size:12px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom ::ng-deep co-button.card-button.mini{pointer-events:all;padding:0!important;font-size:0;width:30px;height:30px;text-align:center;margin:0;border-radius:5px;background:#3e7eff;cursor:pointer;place-content:center;color:#fff}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:24px;height:24px}\n"], dependencies: [{ kind: "component", type: HeaderComponent, selector: "app-header", inputs: ["label", "amount"] }, { kind: "component", type: i6.ScrollContainerComponent, selector: "co-scroll-container", inputs: ["vertical"] }, { kind: "component", type: i6.ArticleTileComponent, selector: "co-article-tile", inputs: ["imageData", "description", "price", "level", "isSelected", "isSmallModus", "hasConfigureButton", "hasThreeDButton", "hasCartButton"], outputs: ["contentClick", "configureButtonClick", "threeDButtonClick", "cartButtonClick"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: GoogleTranslatePipe, name: "googleTranslate" }] }); }
1904
+ `, isInline: true, styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row;flex:1;justify-content:flex-start}.article-wrapper ::ng-deep co-tile{transition:all .14s ease-out;border:1px solid transparent;padding:10px;display:flex;flex-direction:column;color:#171721;box-sizing:border-box;justify-content:space-between}.article-wrapper ::ng-deep co-tile .price{display:block;padding:10px 0}.article-wrapper ::ng-deep co-tile .description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;height:30px}.article-wrapper ::ng-deep co-tile .tile-bottom{display:flex;flex-direction:column;gap:5px}.article-wrapper ::ng-deep co-tile:hover{border:1px solid #DCE4EA}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon{width:24px;height:24px}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon svg [fill]{fill:#fff}.article-wrapper ::ng-deep co-tile.small{width:100%;height:100%;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:none!important;padding-bottom:0;overflow:hidden;gap:10px;display:flex;flex-direction:column}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .no-image-wrapper{min-height:100px;display:flex;align-items:center}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:none!important;background:transparent!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#4e9b7e;margin:5px 0 0;font-weight:400;font-size:12px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom ::ng-deep co-button.card-button.mini{pointer-events:all;padding:0!important;font-size:0;width:30px;height:30px;text-align:center;margin:0;border-radius:5px;background:#3e7eff;cursor:pointer;place-content:center;color:#fff}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:24px;height:24px}\n"], dependencies: [{ kind: "component", type: HeaderComponent, selector: "app-header", inputs: ["label", "amount"] }, { kind: "component", type: i6.ScrollContainerComponent, selector: "co-scroll-container", inputs: ["vertical"] }, { kind: "component", type: i6.ArticleTileComponent, selector: "co-article-tile", inputs: ["imageData", "description", "price", "level", "isSelected", "isSmallModus", "hasConfigureButton", "hasThreeDButton", "hasCartButton"], outputs: ["contentClick", "configureButtonClick", "threeDButtonClick", "cartButtonClick"] }] }); }
2005
1905
  }
2006
1906
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductRelatedComponent, decorators: [{
2007
1907
  type: Component,
@@ -2016,7 +1916,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2016
1916
  <div class="article-wrapper">
2017
1917
  <co-article-tile
2018
1918
  [imageData]="articleViewModel.imageData"
2019
- [description]="articleViewModel.article.description | googleTranslate | async"
1919
+ [description]="articleViewModel.article.description"
2020
1920
  [price]="articleViewModel.article.price"
2021
1921
  [level]="articleViewModel.article.stockStatus"
2022
1922
  [hasCartButton]="true"
@@ -2267,11 +2167,11 @@ class ProductPropertiesComponent {
2267
2167
  @for (property of properties; track property) {
2268
2168
  <div class="article-property">
2269
2169
  <div class="article-property-key" [textContent]="property.key | localize"></div>
2270
- <div class="article-property-value" [textContent]="property.value | googleTranslate | async"></div>
2170
+ <div class="article-property-value" [textContent]="property.value"></div>
2271
2171
  </div>
2272
2172
  }
2273
2173
  </div>
2274
- `, isInline: true, styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#9ca5ae}@media screen and (max-width: 450px){.article-property-key{flex-basis:130px}}\n"], dependencies: [{ kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: GoogleTranslatePipe, name: "googleTranslate" }] }); }
2174
+ `, isInline: true, styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#9ca5ae}@media screen and (max-width: 450px){.article-property-key{flex-basis:130px}}\n"], dependencies: [{ kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
2275
2175
  }
2276
2176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPropertiesComponent, decorators: [{
2277
2177
  type: Component,
@@ -2283,7 +2183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2283
2183
  @for (property of properties; track property) {
2284
2184
  <div class="article-property">
2285
2185
  <div class="article-property-key" [textContent]="property.key | localize"></div>
2286
- <div class="article-property-value" [textContent]="property.value | googleTranslate | async"></div>
2186
+ <div class="article-property-value" [textContent]="property.value"></div>
2287
2187
  </div>
2288
2188
  }
2289
2189
  </div>
@@ -2801,113 +2701,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2801
2701
  args: ['class.resizing']
2802
2702
  }] } });
2803
2703
 
2804
- class PresetDialogComponent {
2805
- showClass() {
2806
- return true;
2807
- }
2808
- constructor(iconCache) {
2809
- this.iconCache = iconCache;
2810
- this.icon = IconEnum;
2811
- this.presetId = undefined;
2812
- this.cancelSavePreset = new EventEmitter();
2813
- this.overwritePreset = new EventEmitter();
2814
- this.PresetDialogType = PresetDialogType;
2815
- }
2816
- closeAndCancelPreset() {
2817
- this.cancelSavePreset.emit(true);
2818
- }
2819
- closeAndOverwritePreset() {
2820
- this.overwritePreset.emit(true);
2821
- }
2822
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogComponent, deps: [{ token: IconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
2823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: PresetDialogComponent, isStandalone: false, selector: "co-preset-dialog", inputs: { type: "type", presetId: "presetId" }, outputs: { cancelSavePreset: "cancelSavePreset", overwritePreset: "overwritePreset" }, host: { properties: { "class.co-preset-dialog": "this.showClass" } }, ngImport: i0, template: `
2824
- <div class="preset-dialog-wrap">
2825
- <div class="preset-dialog-container">
2826
- <div class="container-header">
2827
- <div class="header-info">
2828
- <h3 [textContent]="'PRESET_SAVE_AS' | localize"></h3>
2829
- </div>
2830
- <div class="close-icon" (click)="closeAndCancelPreset()">
2831
- <co-icon class="fullscreen-button"
2832
- [iconData]="iconCache.getIcon(icon.CrossSkinny)"
2833
- (click)="closeAndCancelPreset()"></co-icon>
2834
- </div>
2835
- </div>
2836
-
2837
- <div class="body">
2838
- @if (presetId !== undefined && type === PresetDialogType.warning) {
2839
- <p [textContent]="'PRESET_OVERWRITE_TEXT' | localize"></p>
2840
- }
2841
- @if (presetId !== undefined && type === PresetDialogType.success) {
2842
- <p [textContent]="'PRESET_SAVED_TEXT' | localize"></p>
2843
- }
2844
- </div>
2845
-
2846
- <div class="close-button-container">
2847
- @if (presetId !== undefined && type === PresetDialogType.warning) {
2848
- <button class="ok-button" (click)="closeAndOverwritePreset()">
2849
- <co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)" (click)="closeAndOverwritePreset()"></co-icon>
2850
- </button>
2851
- }
2852
- <button class="close-button" (click)="closeAndCancelPreset()">
2853
- <co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)" (click)="closeAndCancelPreset()"></co-icon>
2854
- </button>
2855
- </div>
2856
- </div>
2857
- </div>
2858
- `, isInline: true, styles: [":host .preset-dialog-wrap{background:#00000080;position:fixed;z-index:1000;inset:0;display:flex;justify-content:center;align-items:center}:host .preset-dialog-wrap .preset-dialog-container{background:#fff;max-width:500px;width:75vw;max-height:90vh;border:1px solid #F8F8F8}:host .preset-dialog-wrap .preset-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3{display:flex;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}:host .preset-dialog-wrap .preset-dialog-container .container-header .close-icon{cursor:pointer}:host .preset-dialog-wrap .preset-dialog-container .body{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button ::ng-deep co-icon [fill]{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon{height:25px;width:25px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg path,:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg polygon{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .ok-button{background:#1a73e8}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .close-button{background:#475060}:host ::ng-deep .content-wrapper{width:auto!important}\n"], dependencies: [{ kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
2859
- }
2860
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogComponent, decorators: [{
2861
- type: Component,
2862
- args: [{ selector: 'co-preset-dialog', template: `
2863
- <div class="preset-dialog-wrap">
2864
- <div class="preset-dialog-container">
2865
- <div class="container-header">
2866
- <div class="header-info">
2867
- <h3 [textContent]="'PRESET_SAVE_AS' | localize"></h3>
2868
- </div>
2869
- <div class="close-icon" (click)="closeAndCancelPreset()">
2870
- <co-icon class="fullscreen-button"
2871
- [iconData]="iconCache.getIcon(icon.CrossSkinny)"
2872
- (click)="closeAndCancelPreset()"></co-icon>
2873
- </div>
2874
- </div>
2875
-
2876
- <div class="body">
2877
- @if (presetId !== undefined && type === PresetDialogType.warning) {
2878
- <p [textContent]="'PRESET_OVERWRITE_TEXT' | localize"></p>
2879
- }
2880
- @if (presetId !== undefined && type === PresetDialogType.success) {
2881
- <p [textContent]="'PRESET_SAVED_TEXT' | localize"></p>
2882
- }
2883
- </div>
2884
-
2885
- <div class="close-button-container">
2886
- @if (presetId !== undefined && type === PresetDialogType.warning) {
2887
- <button class="ok-button" (click)="closeAndOverwritePreset()">
2888
- <co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)" (click)="closeAndOverwritePreset()"></co-icon>
2889
- </button>
2890
- }
2891
- <button class="close-button" (click)="closeAndCancelPreset()">
2892
- <co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)" (click)="closeAndCancelPreset()"></co-icon>
2893
- </button>
2894
- </div>
2895
- </div>
2896
- </div>
2897
- `, standalone: false, styles: [":host .preset-dialog-wrap{background:#00000080;position:fixed;z-index:1000;inset:0;display:flex;justify-content:center;align-items:center}:host .preset-dialog-wrap .preset-dialog-container{background:#fff;max-width:500px;width:75vw;max-height:90vh;border:1px solid #F8F8F8}:host .preset-dialog-wrap .preset-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3{display:flex;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}:host .preset-dialog-wrap .preset-dialog-container .container-header .close-icon{cursor:pointer}:host .preset-dialog-wrap .preset-dialog-container .body{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button ::ng-deep co-icon [fill]{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon{height:25px;width:25px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg path,:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg polygon{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .ok-button{background:#1a73e8}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .close-button{background:#475060}:host ::ng-deep .content-wrapper{width:auto!important}\n"] }]
2898
- }], ctorParameters: () => [{ type: IconCacheService }], propDecorators: { showClass: [{
2899
- type: HostBinding,
2900
- args: ['class.co-preset-dialog']
2901
- }], type: [{
2902
- type: Input
2903
- }], presetId: [{
2904
- type: Input
2905
- }], cancelSavePreset: [{
2906
- type: Output
2907
- }], overwritePreset: [{
2908
- type: Output
2909
- }] } });
2910
-
2911
2704
  class ProductPageComponent {
2912
2705
  showClass() {
2913
2706
  return true;
@@ -2963,14 +2756,16 @@ class ProductPageComponent {
2963
2756
  get currentView() {
2964
2757
  return this._currentView;
2965
2758
  }
2966
- constructor(iconCache, settingsService, appEventService, _changeDetector, _ione, _configuringService, _configuratorSceneService) {
2759
+ constructor(iconCache, settingsService, appEventService, _changeDetector, _ione, _configuratorEventService, _configuratorConnectorService, _configuringService /*,
2760
+ private _configuratorSceneService: SceneService*/) {
2967
2761
  this.iconCache = iconCache;
2968
2762
  this.settingsService = settingsService;
2969
2763
  this.appEventService = appEventService;
2970
2764
  this._changeDetector = _changeDetector;
2971
2765
  this._ione = _ione;
2766
+ this._configuratorEventService = _configuratorEventService;
2767
+ this._configuratorConnectorService = _configuratorConnectorService;
2972
2768
  this._configuringService = _configuringService;
2973
- this._configuratorSceneService = _configuratorSceneService;
2974
2769
  this.icon = IconEnum;
2975
2770
  this.createFrozenArticle = true;
2976
2771
  this.isReturn = false;
@@ -2984,20 +2779,16 @@ class ProductPageComponent {
2984
2779
  this.showAddToCart = false;
2985
2780
  this.fullscreenAnimationEnd = false;
2986
2781
  this.settingsLoaded = false;
2987
- this.showPresetDialog = false;
2988
- this.configPresetId = undefined;
2989
- this.presetDialogType = PresetDialogType.info;
2990
2782
  this._fullScreen = false;
2991
2783
  this._subs = [];
2992
2784
  this._subs.push(this.appEventService.onForceRenderImage.subscribe((x) => {
2993
2785
  // TODO
2994
- }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._pageLoadedSubscription = combineLatest([
2786
+ }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), combineLatest([
2995
2787
  this._ione.controllerInitialized,
2996
2788
  this._ione.articleLoaded
2997
2789
  ]).subscribe(([initialized, articleLoaded]) => {
2998
2790
  if (initialized && articleLoaded) {
2999
2791
  this.settingsLoaded = initialized;
3000
- this._initConfigurator();
3001
2792
  }
3002
2793
  }), this.appEventService.onAnswersAvailable.subscribe((answers) => {
3003
2794
  if (answers && this.configurable) {
@@ -3008,15 +2799,14 @@ class ProductPageComponent {
3008
2799
  }
3009
2800
  }), this.appEventService.onGetRenderForRenderCarousel.subscribe((renderParameters) => {
3010
2801
  this._createRenderForCarousel(renderParameters);
3011
- }), this.appEventService.onArticleReceived.subscribe(article => this.setConfigPresetId(article.configPresetId)), this._configuringService.floorReady.subscribe((ready) => {
3012
- if (ready) {
3013
- this._startSceneInit();
3014
- this._startConfigurator();
2802
+ }), this._configuratorEventService.addedToScene.subscribe((buildResult) => {
2803
+ if (buildResult) {
2804
+ this.handleObjectAddedToScene(buildResult);
3015
2805
  }
3016
- }), this._configuringService.onRenderImageReceived.subscribe((image) => {
2806
+ }), this._configuratorEventService.renderImageChanged.subscribe((image) => {
3017
2807
  appEventService.onRenderImageReceived.next(image);
3018
- }), this._configuringService.onAnswersAvailable.subscribe((hasAnswers) => {
3019
- appEventService.onAnswersAvailable.next(hasAnswers);
2808
+ }), this._configuratorEventService.answerCountReceived.subscribe((count) => {
2809
+ appEventService.onAnswersAvailable.next(count > 0);
3020
2810
  }));
3021
2811
  }
3022
2812
  ngOnInit() {
@@ -3035,9 +2825,7 @@ class ProductPageComponent {
3035
2825
  if (this._initializedSub) {
3036
2826
  this._initializedSub.unsubscribe();
3037
2827
  }
3038
- this._pageLoadedSubscription.unsubscribe();
3039
2828
  this.fullscreenbutton = undefined;
3040
- this._configuringService.isConfiguring = false;
3041
2829
  }
3042
2830
  setInstance(event) {
3043
2831
  if (event.detail) {
@@ -3053,6 +2841,8 @@ class ProductPageComponent {
3053
2841
  }
3054
2842
  _handleSettingsLoaded(loaded) {
3055
2843
  if (loaded) {
2844
+ // @ts-ignore
2845
+ this._configuratorConnectorService.init(this.settingsService.settings);
3056
2846
  this._ione.initConnection();
3057
2847
  }
3058
2848
  }
@@ -3094,34 +2884,9 @@ class ProductPageComponent {
3094
2884
  handlePopUpChange(event) {
3095
2885
  this.showRelatedProductsPopup = event;
3096
2886
  }
3097
- setConfigPresetId(presetId) {
3098
- if (presetId) {
3099
- this.configPresetId = presetId;
3100
- }
3101
- }
3102
- handleSavePreset() {
3103
- if (this.configPresetId !== undefined) {
3104
- // prompt warning
3105
- this.presetDialogType = PresetDialogType.warning;
3106
- this.showPresetDialog = true;
3107
- }
3108
- else {
3109
- this._savePreset();
3110
- }
3111
- }
3112
- handleCancelSavePreset(event) {
3113
- this.presetDialogType = PresetDialogType.info;
3114
- this.showPresetDialog = false;
3115
- }
3116
- handleOverwritePreset(event) {
3117
- this.presetDialogType = PresetDialogType.info;
3118
- this.showPresetDialog = false;
3119
- this._savePreset();
3120
- }
3121
- handleBuildFinished(build) {
3122
- if (this.threeD) {
2887
+ handleObjectAddedToScene(build) {
2888
+ if (this.threeD && this.enableRenderCarousel) {
3123
2889
  this._buildResult = build;
3124
- this._configuringService.addBuildToScene(build);
3125
2890
  if (this.settingsService.settings && this.settingsService.settings.renderParameters) {
3126
2891
  // Start a render
3127
2892
  const options = {
@@ -3136,40 +2901,32 @@ class ProductPageComponent {
3136
2901
  }
3137
2902
  }
3138
2903
  }
3139
- _savePreset() {
3140
- this._ione.savePreset().then((success) => {
3141
- if (success) {
3142
- this.presetDialogType = PresetDialogType.success;
3143
- this.showPresetDialog = true;
3144
- }
3145
- });
3146
- }
3147
- _initConfigurator() {
3148
- // this should be async
3149
- if (this.settingsLoaded) {
3150
- this._configuringService.init(this.settings).then(done => {
3151
- this._configuringService.isConfiguring = true;
3152
- });
3153
- }
3154
- }
3155
- _startConfigurator() {
3156
- if (this.settingsLoaded) {
3157
- const furnitureData = new ConfigurationResultObject();
3158
- furnitureData.sku = this.sku;
3159
- this._configuringService.configure(furnitureData).then(loaded => {
3160
- });
3161
- }
3162
- }
3163
- _startSceneInit() {
3164
- if (this.settingsLoaded) {
3165
- this._configuringService.handleLoadSceneContent();
3166
- this._configuringService.scene = this._configuratorSceneService.scene;
3167
- }
3168
- }
2904
+ // private _initConfigurator(): void {
2905
+ // // this should be async
2906
+ // if (this.settingsLoaded) {
2907
+ // this._configuringService.init(this.settings).then(done => {
2908
+ // // this._configuringService.isConfiguring = true;
2909
+ // });
2910
+ // }
2911
+ // }
2912
+ // private _startConfigurator(): void {
2913
+ // if (this.settingsLoaded) {
2914
+ // const furnitureData: ConfigurationResultObject = new ConfigurationResultObject();
2915
+ // furnitureData.sku = this.sku;
2916
+ // this._configuringService.configure(furnitureData).then(loaded => {
2917
+ // });
2918
+ // }
2919
+ // }
2920
+ // private _startSceneInit(): void {
2921
+ // if (this.settingsLoaded) {
2922
+ // this._configuringService.handleLoadSceneContent();
2923
+ // this._configuringService.scene = this._configuratorSceneService.scene;
2924
+ // }
2925
+ // }
3169
2926
  _createRenderForCarousel(renderOptions) {
3170
2927
  this._configuringService.renderImage(this._buildResult, renderOptions, false);
3171
2928
  }
3172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, deps: [{ token: IconCacheService }, { token: ProductSettingsService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }, { token: ProductConnectorService }, { token: i5.ConfiguringService }, { token: i5.SceneService }], target: i0.ɵɵFactoryTarget.Component }); }
2929
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, deps: [{ token: IconCacheService }, { token: ProductSettingsService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }, { token: ProductConnectorService }, { token: i5.ConfiguratorEventService }, { token: i5.ConfiguratorConnectorService }, { token: i5.ConfiguringService }], target: i0.ɵɵFactoryTarget.Component }); }
3173
2930
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductPageComponent, isStandalone: false, selector: "app-product-page", inputs: { sku: "sku", settings: "settings", externalSource: "externalSource", createFrozenArticle: "createFrozenArticle", isReturn: "isReturn", showRelatedProductsPopup: "showRelatedProductsPopup", enableRenderCarousel: "enableRenderCarousel" }, outputs: { openStockEvent: "openStockEvent" }, host: { properties: { "class.co-product-page": "this.showClass" } }, viewQueries: [{ propertyName: "fullscreenbutton", first: true, predicate: ["fullscreenbutton"], descendants: true, read: ElementRef }], ngImport: i0, template: `
3174
2931
  @if (settingsLoaded) {
3175
2932
  <div class="page-wrapper">
@@ -3200,6 +2957,7 @@ class ProductPageComponent {
3200
2957
  }
3201
2958
  @if (settingsLoaded) {
3202
2959
  <co-configurator-scene
2960
+ [@toggleVisibilityByState]="!show2D ? 'show' : 'hide'"
3203
2961
  [class.show-full-screen]="fullScreen"
3204
2962
  [class.hide-3d-scene]="!show3D"
3205
2963
  [class.show-3d-scene]="show3D">
@@ -3227,45 +2985,33 @@ class ProductPageComponent {
3227
2985
  <div class="product-page-scroll-container">
3228
2986
  <div class="product-page-block-description">
3229
2987
  <app-product-description
3230
-
3231
- [article]="article">
2988
+ [article]="article"
2989
+ [configuring]="configuring">
3232
2990
  </app-product-description>
3233
2991
  </div>
3234
2992
  <div class="product-page-block-additional">
3235
2993
  <div class="product-page-block-additional-description">
3236
2994
  <app-product-additional-description
3237
-
3238
2995
  [article]="article">
3239
2996
  </app-product-additional-description>
3240
2997
  </div>
3241
2998
  <div class="product-page-block-price" [class.full]="configuring">
3242
- @if (configuring && this.settingsService.settings.options.showSaveAsPresetButton) {
3243
- <div class="preset-container">
3244
- <co-button
3245
- class="save-preset-button"
3246
- [iconData]="iconCache.getIcon(icon.SaveDisk)"
3247
- [label]="'PRESET_SAVE_AS' | localize"
3248
- (onClick)="handleSavePreset()">
3249
- </co-button>
3250
- </div>
3251
- }
3252
2999
  @if (!configuring) {
3253
3000
  <app-product-price
3254
-
3255
3001
  [pricing]="article?.pricing"
3256
3002
  [configurable]="configurable">
3257
3003
  </app-product-price>
3258
3004
  }
3259
-
3260
3005
  @if (settingsLoaded) {
3261
3006
  <co-configurator
3262
3007
  [class.hide-configurator]="!configuring"
3263
3008
  [class.show-configurator]="configuring"
3009
+ [sku]="sku"
3010
+ [show]="configuring"
3264
3011
  [showLoader]="true"
3265
3012
  [animateSlideout]="false"
3266
3013
  [showHeaderInformation]="false"
3267
- [canCloseConfigurator]="false"
3268
- (buildResult)="handleBuildFinished($event)">
3014
+ [canCloseConfigurator]="false">
3269
3015
  </co-configurator>
3270
3016
  }
3271
3017
  </div>
@@ -3288,7 +3034,6 @@ class ProductPageComponent {
3288
3034
  @if (configuring) {
3289
3035
  <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
3290
3036
  <app-product-addtocart
3291
-
3292
3037
  [configurable]="false"
3293
3038
  [fullscreen]="fullScreen"
3294
3039
  [showAddToCart]="showAddToCart"
@@ -3303,7 +3048,6 @@ class ProductPageComponent {
3303
3048
  <div class="product-page-block-variants">
3304
3049
  @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3305
3050
  <app-product-related
3306
-
3307
3051
  [externalSource]="externalSource"
3308
3052
  [articles]="article?.relatedArticles" [refType]="64"
3309
3053
  [label]="'VARIANTS' | localize">
@@ -3312,7 +3056,6 @@ class ProductPageComponent {
3312
3056
  </div>
3313
3057
  <div class="product-page-block-stock">
3314
3058
  <app-product-stock
3315
-
3316
3059
  [goodId]="article?.goodId"
3317
3060
  (openStockEvent)="openStock()">
3318
3061
  </app-product-stock>
@@ -3325,7 +3068,6 @@ class ProductPageComponent {
3325
3068
  @if (article) {
3326
3069
  <div class="page-wrapper-left swimming-lane">
3327
3070
  <app-product-info-tabs
3328
-
3329
3071
  [article]="article">
3330
3072
  </app-product-info-tabs>
3331
3073
  </div>
@@ -3369,17 +3111,8 @@ class ProductPageComponent {
3369
3111
  </div>
3370
3112
  }
3371
3113
  </div>
3372
-
3373
- @if (presetDialogType) {
3374
- <co-preset-dialog
3375
- [type]="presetDialogType"
3376
- [presetId]="configPresetId"
3377
- (cancelSavePreset)="handleCancelSavePreset($event)"
3378
- (overwritePreset)="handleOverwritePreset($event)">
3379
- </co-preset-dialog>
3380
- }
3381
3114
  }
3382
- `, isInline: true, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;flex-wrap:wrap;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-threedselector{position:relative}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"], dependencies: [{ kind: "component", type: ProductSelectorTypeComponent, selector: "app-product-selector-type", inputs: ["show2D", "show3D", "showRenderCarousel", "currentType"], outputs: ["onIconClick", "currentTypeChange"] }, { kind: "component", type: ImageCarouselComponent, selector: "app-image-carousel", inputs: ["showRefresh", "images"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ProductDescriptionComponent, selector: "app-product-description", inputs: ["article"] }, { kind: "component", type: ProductAdditionalDescriptionComponent, selector: "app-product-additional-description", inputs: ["article"] }, { kind: "component", type: ProductPriceComponent, selector: "app-product-price", inputs: ["pricing", "configurable"] }, { kind: "component", type: ProductAddtocartComponent, selector: "app-product-addtocart", inputs: ["article", "externalSource", "createFrozenArticle", "configurable", "configuring", "showAddToCart", "isReturn", "fullscreen", "quantity"], outputs: ["startConfiguration", "addToCartClick", "addToQuoteClick", "showRelatedPopup"] }, { kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: ProductStockComponent, selector: "app-product-stock", inputs: ["goodId"], outputs: ["openStockEvent"] }, { kind: "component", type: ProductInfoTabsComponent, selector: "app-product-info-tabs", inputs: ["article"] }, { kind: "component", type: ProductDialogComponent, selector: "co-product-dialog", inputs: ["refType", "mainArticle", "articles"], outputs: ["closeRelatedPopup"] }, { kind: "component", type: RenderCarouselComponent, selector: "app-render-carousel", inputs: ["showRefresh", "article"] }, { kind: "component", type: i6.ButtonComponent, selector: "co-button", inputs: ["label", "iconData", "iconDataRight", "isToggleButton", "isToggled", "hidden", "disabled"], outputs: ["onClick", "clickedWhileDisabled", "isToggledChange"] }, { kind: "component", type: PresetDialogComponent, selector: "co-preset-dialog", inputs: ["type", "presetId"], outputs: ["cancelSavePreset", "overwritePreset"] }, { kind: "component", type: i5.ConfiguratorComponent, selector: "co-configurator", inputs: ["showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["buildResult", "isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: i5.ConfiguratorSceneComponent, selector: "co-configurator-scene" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
3115
+ `, isInline: true, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"], dependencies: [{ kind: "component", type: ProductSelectorTypeComponent, selector: "app-product-selector-type", inputs: ["show2D", "show3D", "showRenderCarousel", "currentType"], outputs: ["onIconClick", "currentTypeChange"] }, { kind: "component", type: ImageCarouselComponent, selector: "app-image-carousel", inputs: ["showRefresh", "images"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ProductDescriptionComponent, selector: "app-product-description", inputs: ["article", "configuring"] }, { kind: "component", type: ProductAdditionalDescriptionComponent, selector: "app-product-additional-description", inputs: ["article"] }, { kind: "component", type: ProductPriceComponent, selector: "app-product-price", inputs: ["pricing", "configurable"] }, { kind: "component", type: ProductAddtocartComponent, selector: "app-product-addtocart", inputs: ["article", "externalSource", "createFrozenArticle", "configurable", "configuring", "showAddToCart", "isReturn", "fullscreen", "quantity"], outputs: ["startConfiguration", "addToCartClick", "addToQuoteClick", "showRelatedPopup"] }, { kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: ProductStockComponent, selector: "app-product-stock", inputs: ["goodId"], outputs: ["openStockEvent"] }, { kind: "component", type: ProductInfoTabsComponent, selector: "app-product-info-tabs", inputs: ["article"] }, { kind: "component", type: ProductDialogComponent, selector: "co-product-dialog", inputs: ["refType", "mainArticle", "articles"], outputs: ["closeRelatedPopup"] }, { kind: "component", type: RenderCarouselComponent, selector: "app-render-carousel", inputs: ["showRefresh", "article"] }, { kind: "component", type: i5.ConfiguratorComponent, selector: "co-configurator", inputs: ["show", "sku", "instanceId", "settings", "scene", "showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: i5.ConfiguratorSceneComponent, selector: "co-configurator-scene" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
3383
3116
  trigger('toggleFullScreen', [
3384
3117
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
3385
3118
  state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
@@ -3400,10 +3133,11 @@ class ProductPageComponent {
3400
3133
  state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
3401
3134
  transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
3402
3135
  ]),
3136
+ // TODO we should change this animation, we can't display none and block with nice transitions
3403
3137
  trigger('toggleVisibilityByState', [
3404
3138
  state('hide', style({ 'opacity': '0', 'display': 'none' })),
3405
3139
  state('show', style({ 'display': 'block', 'opacity': '1' })),
3406
- transition('hide <=> show', animate('200ms 100ms ease-in-out'))
3140
+ transition('hide <=> show', animate('20ms 10ms ease-in-out'))
3407
3141
  ]),
3408
3142
  trigger('toggleVisibility', [
3409
3143
  state('void', style({ 'opacity': '0' })),
@@ -3444,6 +3178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3444
3178
  }
3445
3179
  @if (settingsLoaded) {
3446
3180
  <co-configurator-scene
3181
+ [@toggleVisibilityByState]="!show2D ? 'show' : 'hide'"
3447
3182
  [class.show-full-screen]="fullScreen"
3448
3183
  [class.hide-3d-scene]="!show3D"
3449
3184
  [class.show-3d-scene]="show3D">
@@ -3471,45 +3206,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3471
3206
  <div class="product-page-scroll-container">
3472
3207
  <div class="product-page-block-description">
3473
3208
  <app-product-description
3474
-
3475
- [article]="article">
3209
+ [article]="article"
3210
+ [configuring]="configuring">
3476
3211
  </app-product-description>
3477
3212
  </div>
3478
3213
  <div class="product-page-block-additional">
3479
3214
  <div class="product-page-block-additional-description">
3480
3215
  <app-product-additional-description
3481
-
3482
3216
  [article]="article">
3483
3217
  </app-product-additional-description>
3484
3218
  </div>
3485
3219
  <div class="product-page-block-price" [class.full]="configuring">
3486
- @if (configuring && this.settingsService.settings.options.showSaveAsPresetButton) {
3487
- <div class="preset-container">
3488
- <co-button
3489
- class="save-preset-button"
3490
- [iconData]="iconCache.getIcon(icon.SaveDisk)"
3491
- [label]="'PRESET_SAVE_AS' | localize"
3492
- (onClick)="handleSavePreset()">
3493
- </co-button>
3494
- </div>
3495
- }
3496
3220
  @if (!configuring) {
3497
3221
  <app-product-price
3498
-
3499
3222
  [pricing]="article?.pricing"
3500
3223
  [configurable]="configurable">
3501
3224
  </app-product-price>
3502
3225
  }
3503
-
3504
3226
  @if (settingsLoaded) {
3505
3227
  <co-configurator
3506
3228
  [class.hide-configurator]="!configuring"
3507
3229
  [class.show-configurator]="configuring"
3230
+ [sku]="sku"
3231
+ [show]="configuring"
3508
3232
  [showLoader]="true"
3509
3233
  [animateSlideout]="false"
3510
3234
  [showHeaderInformation]="false"
3511
- [canCloseConfigurator]="false"
3512
- (buildResult)="handleBuildFinished($event)">
3235
+ [canCloseConfigurator]="false">
3513
3236
  </co-configurator>
3514
3237
  }
3515
3238
  </div>
@@ -3532,7 +3255,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3532
3255
  @if (configuring) {
3533
3256
  <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
3534
3257
  <app-product-addtocart
3535
-
3536
3258
  [configurable]="false"
3537
3259
  [fullscreen]="fullScreen"
3538
3260
  [showAddToCart]="showAddToCart"
@@ -3547,7 +3269,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3547
3269
  <div class="product-page-block-variants">
3548
3270
  @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3549
3271
  <app-product-related
3550
-
3551
3272
  [externalSource]="externalSource"
3552
3273
  [articles]="article?.relatedArticles" [refType]="64"
3553
3274
  [label]="'VARIANTS' | localize">
@@ -3556,7 +3277,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3556
3277
  </div>
3557
3278
  <div class="product-page-block-stock">
3558
3279
  <app-product-stock
3559
-
3560
3280
  [goodId]="article?.goodId"
3561
3281
  (openStockEvent)="openStock()">
3562
3282
  </app-product-stock>
@@ -3569,7 +3289,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3569
3289
  @if (article) {
3570
3290
  <div class="page-wrapper-left swimming-lane">
3571
3291
  <app-product-info-tabs
3572
-
3573
3292
  [article]="article">
3574
3293
  </app-product-info-tabs>
3575
3294
  </div>
@@ -3613,15 +3332,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3613
3332
  </div>
3614
3333
  }
3615
3334
  </div>
3616
-
3617
- @if (presetDialogType) {
3618
- <co-preset-dialog
3619
- [type]="presetDialogType"
3620
- [presetId]="configPresetId"
3621
- (cancelSavePreset)="handleCancelSavePreset($event)"
3622
- (overwritePreset)="handleOverwritePreset($event)">
3623
- </co-preset-dialog>
3624
- }
3625
3335
  }
3626
3336
  `, encapsulation: ViewEncapsulation.None, animations: [
3627
3337
  trigger('toggleFullScreen', [
@@ -3644,18 +3354,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3644
3354
  state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
3645
3355
  transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
3646
3356
  ]),
3357
+ // TODO we should change this animation, we can't display none and block with nice transitions
3647
3358
  trigger('toggleVisibilityByState', [
3648
3359
  state('hide', style({ 'opacity': '0', 'display': 'none' })),
3649
3360
  state('show', style({ 'display': 'block', 'opacity': '1' })),
3650
- transition('hide <=> show', animate('200ms 100ms ease-in-out'))
3361
+ transition('hide <=> show', animate('20ms 10ms ease-in-out'))
3651
3362
  ]),
3652
3363
  trigger('toggleVisibility', [
3653
3364
  state('void', style({ 'opacity': '0' })),
3654
3365
  state('*', style({ 'opacity': '1' })),
3655
3366
  transition('void => *', animate('200ms ease-in-out'))
3656
3367
  ])
3657
- ], standalone: false, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;flex-wrap:wrap;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-threedselector{position:relative}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-threedselector .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"] }]
3658
- }], ctorParameters: () => [{ type: IconCacheService }, { type: ProductSettingsService }, { type: ProductEventService }, { type: i0.ChangeDetectorRef }, { type: ProductConnectorService }, { type: i5.ConfiguringService }, { type: i5.SceneService }], propDecorators: { showClass: [{
3368
+ ], standalone: false, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"] }]
3369
+ }], ctorParameters: () => [{ type: IconCacheService }, { type: ProductSettingsService }, { type: ProductEventService }, { type: i0.ChangeDetectorRef }, { type: ProductConnectorService }, { type: i5.ConfiguratorEventService }, { type: i5.ConfiguratorConnectorService }, { type: i5.ConfiguringService }], propDecorators: { showClass: [{
3659
3370
  type: HostBinding,
3660
3371
  args: ['class.co-product-page']
3661
3372
  }], fullscreenbutton: [{
@@ -3726,7 +3437,7 @@ class IoneProductComponent {
3726
3437
  // this.sku = '104';
3727
3438
  // this.sku = "70000107";
3728
3439
  // this.sku = "grover";
3729
- this.sku = "3DEVGENY"; // bank istanbul jillis
3440
+ this.sku = "1000610952"; // bank istanbul jillis
3730
3441
  // this.sku = "4387";
3731
3442
  // this.sku = "1000612725";
3732
3443
  // this.sku = '22000';
@@ -3789,8 +3500,7 @@ class IoneProductComponent {
3789
3500
  ProductSettingsService,
3790
3501
  ProductConnectorService,
3791
3502
  ProductEventService,
3792
- ProductConnectorAdapterService,
3793
- GoogleTranslateService
3503
+ ProductConnectorAdapterService
3794
3504
  ], ngImport: i0, template: `
3795
3505
  @if (settingsLoaded) {
3796
3506
  <app-product-page
@@ -3821,8 +3531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3821
3531
  ProductSettingsService,
3822
3532
  ProductConnectorService,
3823
3533
  ProductEventService,
3824
- ProductConnectorAdapterService,
3825
- GoogleTranslateService
3534
+ ProductConnectorAdapterService
3826
3535
  ], encapsulation: ViewEncapsulation.Emulated, standalone: false }]
3827
3536
  }], ctorParameters: () => [{ type: ProductEventService }, { type: ProductSettingsService }, { type: ProductConnectorService }, { type: LocalStorageService }], propDecorators: { sku: [{
3828
3537
  type: Input
@@ -3863,10 +3572,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3863
3572
  class PipeModule {
3864
3573
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3865
3574
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: PipeModule, declarations: [LocalizePipe,
3866
- PriceDisplayPipe,
3867
- GoogleTranslatePipe], exports: [LocalizePipe,
3868
- PriceDisplayPipe,
3869
- GoogleTranslatePipe] }); }
3575
+ PriceDisplayPipe], exports: [LocalizePipe,
3576
+ PriceDisplayPipe] }); }
3870
3577
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PipeModule, providers: [
3871
3578
  LocalizePipe
3872
3579
  ] }); }
@@ -3876,16 +3583,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3876
3583
  args: [{
3877
3584
  declarations: [
3878
3585
  LocalizePipe,
3879
- PriceDisplayPipe,
3880
- GoogleTranslatePipe
3586
+ PriceDisplayPipe
3881
3587
  ],
3882
3588
  providers: [
3883
3589
  LocalizePipe
3884
3590
  ],
3885
3591
  exports: [
3886
3592
  LocalizePipe,
3887
- PriceDisplayPipe,
3888
- GoogleTranslatePipe
3593
+ PriceDisplayPipe
3889
3594
  ]
3890
3595
  }]
3891
3596
  }] });
@@ -3952,16 +3657,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3952
3657
  class ProductDescriptionModule {
3953
3658
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3954
3659
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionModule, declarations: [ProductDescriptionComponent], imports: [CommonModule,
3955
- PipeModule], exports: [ProductDescriptionComponent] }); }
3660
+ PipeModule,
3661
+ ConfigurationPresetModule], exports: [ProductDescriptionComponent] }); }
3956
3662
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionModule, imports: [CommonModule,
3957
- PipeModule] }); }
3663
+ PipeModule,
3664
+ ConfigurationPresetModule] }); }
3958
3665
  }
3959
3666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDescriptionModule, decorators: [{
3960
3667
  type: NgModule,
3961
3668
  args: [{
3962
3669
  imports: [
3963
3670
  CommonModule,
3964
- PipeModule
3671
+ PipeModule,
3672
+ ConfigurationPresetModule
3965
3673
  ],
3966
3674
  declarations: [
3967
3675
  ProductDescriptionComponent
@@ -4156,7 +3864,7 @@ class ProductDeliveryComponent {
4156
3864
  <div class="pp-default-description" [textContent]="deliveryDescription | date:'dd MMMM yyyy'"></div>
4157
3865
  </div>
4158
3866
  </div>
4159
- `, isInline: true, styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width: 400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}\n"], dependencies: [{ kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
3867
+ `, isInline: true, styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width: 400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}\n"], dependencies: [{ kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: i5$1.DatePipe, name: "date" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
4160
3868
  }
4161
3869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDeliveryComponent, decorators: [{
4162
3870
  type: Component,
@@ -4403,32 +4111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4403
4111
  }]
4404
4112
  }] });
4405
4113
 
4406
- class PresetDialogModule {
4407
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4408
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, declarations: [PresetDialogComponent], imports: [IconModule,
4409
- PipeModule,
4410
- ProductRelatedModule], exports: [PresetDialogComponent] }); }
4411
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, imports: [IconModule,
4412
- PipeModule,
4413
- ProductRelatedModule] }); }
4414
- }
4415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, decorators: [{
4416
- type: NgModule,
4417
- args: [{
4418
- imports: [
4419
- IconModule,
4420
- PipeModule,
4421
- ProductRelatedModule
4422
- ],
4423
- declarations: [
4424
- PresetDialogComponent
4425
- ],
4426
- exports: [
4427
- PresetDialogComponent
4428
- ]
4429
- }]
4430
- }] });
4431
-
4432
4114
  class ProductPageModule {
4433
4115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4434
4116
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, declarations: [ProductPageComponent], imports: [CommonModule,
@@ -4448,7 +4130,6 @@ class ProductPageModule {
4448
4130
  LoaderModule,
4449
4131
  RenderCarouselModule,
4450
4132
  ButtonModule,
4451
- PresetDialogModule,
4452
4133
  ConfiguratorModule,
4453
4134
  ConfiguratorSceneModule], exports: [ProductPageComponent] }); }
4454
4135
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, imports: [CommonModule,
@@ -4468,7 +4149,6 @@ class ProductPageModule {
4468
4149
  LoaderModule,
4469
4150
  RenderCarouselModule,
4470
4151
  ButtonModule,
4471
- PresetDialogModule,
4472
4152
  ConfiguratorModule,
4473
4153
  ConfiguratorSceneModule] }); }
4474
4154
  }
@@ -4493,7 +4173,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4493
4173
  LoaderModule,
4494
4174
  RenderCarouselModule,
4495
4175
  ButtonModule,
4496
- PresetDialogModule,
4497
4176
  ConfiguratorModule,
4498
4177
  ConfiguratorSceneModule
4499
4178
  ],
@@ -4821,6 +4500,16 @@ class ProductExternalSourceComponent {
4821
4500
  if (this.options) {
4822
4501
  this.externalSettings.options = this.options;
4823
4502
  }
4503
+ // TODO this should be a temp solution, but we want to make sure that we got a decent scene for external sources
4504
+ if (this.ownSettings && this.ownSettings.lightPresetsIndex) {
4505
+ this.externalSettings.lightPresetsIndex = this.ownSettings.lightPresetsIndex;
4506
+ }
4507
+ if (this.ownSettings && this.ownSettings.assetIndex) {
4508
+ this.externalSettings.assetIndex = this.ownSettings.assetIndex;
4509
+ }
4510
+ if (this.ownSettings && this.ownSettings.options && this.ownSettings.options.useStandaloneFloors) {
4511
+ this.externalSettings.options.useStandaloneFloors = this.ownSettings.options.useStandaloneFloors;
4512
+ }
4824
4513
  // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
4825
4514
  // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
4826
4515
  if (this.externalSource.username && this.externalSource.password) {
@@ -4864,12 +4553,11 @@ class ProductExternalSourceComponent {
4864
4553
  this.showSource = true;
4865
4554
  }
4866
4555
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductExternalSourceComponent, deps: [{ token: i1.DomSanitizer }, { token: ProductConnectorService }, { token: ProductEventService }], target: i0.ɵɵFactoryTarget.Component }); }
4867
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductExternalSourceComponent, isStandalone: false, selector: "co-product-external-source", inputs: { sku: "sku", catalogDefinition: "catalogDefinition", externalSource: "externalSource", externalCatalogStartupInfo: "externalCatalogStartupInfo", options: "options" }, outputs: { addToCart: "addToCart", addToQuote: "addToQuote", alternativeClick: "alternativeClick", configuratorFinished: "configuratorFinished" }, host: { properties: { "class.co-product-external-source": "this.showClass" } }, providers: [
4556
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductExternalSourceComponent, isStandalone: false, selector: "co-product-external-source", inputs: { sku: "sku", catalogDefinition: "catalogDefinition", ownSettings: "ownSettings", externalSource: "externalSource", externalCatalogStartupInfo: "externalCatalogStartupInfo", options: "options" }, outputs: { addToCart: "addToCart", addToQuote: "addToQuote", alternativeClick: "alternativeClick", configuratorFinished: "configuratorFinished" }, host: { properties: { "class.co-product-external-source": "this.showClass" } }, providers: [
4868
4557
  ProductSettingsService,
4869
4558
  ProductConnectorService,
4870
4559
  ProductEventService,
4871
- ProductConnectorAdapterService,
4872
- GoogleTranslateService
4560
+ ProductConnectorAdapterService
4873
4561
  ], ngImport: i0, template: `
4874
4562
  @if (loaded) {
4875
4563
  @if (showProduct) {
@@ -4923,8 +4611,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4923
4611
  ProductSettingsService,
4924
4612
  ProductConnectorService,
4925
4613
  ProductEventService,
4926
- ProductConnectorAdapterService,
4927
- GoogleTranslateService
4614
+ ProductConnectorAdapterService
4928
4615
  ],
4929
4616
  encapsulation: ViewEncapsulation.None,
4930
4617
  standalone: false
@@ -4933,6 +4620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4933
4620
  type: Input
4934
4621
  }], catalogDefinition: [{
4935
4622
  type: Input
4623
+ }], ownSettings: [{
4624
+ type: Input
4936
4625
  }], externalSource: [{
4937
4626
  type: Input
4938
4627
  }], externalCatalogStartupInfo: [{