@colijnit/configurator 262.1.5 → 262.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,9 +2,9 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, HostBinding, ViewEncapsulation, Component, Input, Output, HostListener, ViewChild, Directive, ElementRef, ViewChildren, TemplateRef, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, AsyncPipe } from '@angular/common';
5
+ import { BehaviorSubject, Subject, combineLatest, debounceTime } from 'rxjs';
5
6
  import * as THREE from 'three';
6
7
  import { Color, WebGLRenderer, Box3, Vector3, Scene, PerspectiveCamera, MathUtils, AmbientLight, DirectionalLight, Group, Euler, Object3D, EventDispatcher, MeshBasicMaterial, Mesh, PlaneGeometry, DoubleSide, MeshStandardMaterial, CylinderGeometry, RingGeometry, Matrix4, Raycaster, BufferGeometry, Line, DataTexture, RGFormat, UnsignedByteType, LinearFilter, Shape, Vector2, SphereGeometry, SRGBColorSpace, PCFSoftShadowMap, ShadowMaterial, LightProbe, Texture as Texture$1, MeshPhongMaterial, NoToneMapping, TextureLoader, RGBAFormat, Quaternion, PointLight, BoxGeometry, BackSide, FrontSide, ShapeGeometry } from 'three';
7
- import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
8
8
  import { HdecoPlacement } from '@colijnit/configuratorapi/build/enum/hdeco-placement.enum';
9
9
  import * as i6 from '@colijnit/utilities';
10
10
  import { ObjectUtils, MaterialUtils, DeviceUtils as DeviceUtils$1, DeviceTier as DeviceTier$1, TranslationModule, UtilitiesPipesModule } from '@colijnit/utilities';
@@ -56,12 +56,6 @@ import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js';
56
56
  import { MatButtonModule } from '@angular/material/button';
57
57
  import { MatIconModule } from '@angular/material/icon';
58
58
 
59
- var ConfigurationTemplate;
60
- (function (ConfigurationTemplate) {
61
- ConfigurationTemplate["default"] = "default";
62
- ConfigurationTemplate["showFullConfiguration"] = "showFullConfiguration";
63
- })(ConfigurationTemplate || (ConfigurationTemplate = {}));
64
-
65
59
  class ArParameters {
66
60
  depthOcclusion = false;
67
61
  depthHitTest = false;
@@ -144,6 +138,7 @@ class SettingOptions {
144
138
  groupedShowAllBtn = false;
145
139
  showSavePresetButton = false;
146
140
  showLoadPresetButton = false;
141
+ showSceneBuildLoader = false;
147
142
  }
148
143
 
149
144
  class RenderParameters {
@@ -418,14 +413,13 @@ class ConfiguratorEventService {
418
413
  buildStarted = new BehaviorSubject(false);
419
414
  buildFinished = new BehaviorSubject(undefined);
420
415
  addedToScene = new BehaviorSubject(undefined);
421
- configurationTemplateChange = new BehaviorSubject(undefined);
422
416
  articleNotFound = new BehaviorSubject(undefined);
423
417
  selectionWithAnswersChanged = new BehaviorSubject(undefined);
424
418
  glbCreated = new Subject();
425
419
  showOutline = new Subject();
426
420
  showErrorOutline = new Subject();
427
421
  hideOutline = new Subject();
428
- articleReceived = new Subject();
422
+ articleReceived = new BehaviorSubject(undefined);
429
423
  selectionsReceived = new Subject();
430
424
  answersReceived = new Subject();
431
425
  extraAnswerDataLoaded = new Subject();
@@ -1036,11 +1030,11 @@ class ConfiguratorConnectorService {
1036
1030
  selections = this._boFactory.makeBOArrayFromRawBackendDataArray(Selection, response.resultObjects);
1037
1031
  }
1038
1032
  if (this.article.showFullConfiguration) {
1039
- this._appEventService.configurationTemplateChange.next(ConfigurationTemplate.showFullConfiguration);
1033
+ // this._appEventService.configurationTemplateChange.next(ConfigurationTemplate.showFullConfiguration);
1040
1034
  await this._createSelectorFullConfiguration(selections);
1041
1035
  }
1042
1036
  else {
1043
- this._appEventService.configurationTemplateChange.next(ConfigurationTemplate.default);
1037
+ // this._appEventService.configurationTemplateChange.next(ConfigurationTemplate.default);
1044
1038
  this._prepareSelections(selections);
1045
1039
  }
1046
1040
  }
@@ -2202,6 +2196,17 @@ class BuildFurnitureBaseService {
2202
2196
  MaterialUtils.ClearCaches();
2203
2197
  VariationUtils.ClearCache();
2204
2198
  }
2199
+ cleanup() {
2200
+ ObjectUtils.DisposeObject(this.full3DObjectToUse);
2201
+ this.full3DObjectToUse = undefined;
2202
+ this._currentCustomFloorGroup = undefined;
2203
+ ObjectUtils.DisposeObject(this._activeChildElement);
2204
+ this._activeChildElement = undefined;
2205
+ this.placedAdjustables.length = 0;
2206
+ this.placedAddables.length = 0;
2207
+ this._adjustables.length = 0;
2208
+ this._addables.length = 0;
2209
+ }
2205
2210
  async prepareInstanceForBuild(shouldCopyInstance, loadFromProject, looseOriginalConfiguration, result) {
2206
2211
  if (shouldCopyInstance && !loadFromProject) {
2207
2212
  const originalInstanceId = result.instanceId;
@@ -2651,17 +2656,6 @@ class BuildFurnitureBaseService {
2651
2656
  // clean
2652
2657
  this.cleanup();
2653
2658
  }
2654
- cleanup() {
2655
- ObjectUtils.DisposeObject(this.full3DObjectToUse);
2656
- this.full3DObjectToUse = undefined;
2657
- this._currentCustomFloorGroup = undefined;
2658
- ObjectUtils.DisposeObject(this._activeChildElement);
2659
- this._activeChildElement = undefined;
2660
- this.placedAdjustables.length = 0;
2661
- this.placedAddables.length = 0;
2662
- this._adjustables.length = 0;
2663
- this._addables.length = 0;
2664
- }
2665
2659
  canConnectSelections(sel1, sel2) {
2666
2660
  if (!sel1.decoNode || !sel2.decoNode) {
2667
2661
  return false;
@@ -7079,7 +7073,8 @@ class ConfiguringService {
7079
7073
  this._subs.push(combineLatest([
7080
7074
  this._appEventService.skuSet,
7081
7075
  this._appEventService.instanceIdSet
7082
- ]).subscribe(async ([sku, instanceId]) => {
7076
+ ]).pipe(debounceTime(0) // wait for events to finish, because skuSet and instanceIdSet events are emitted simultaneously
7077
+ ).subscribe(([sku, instanceId]) => {
7083
7078
  this.sku = sku;
7084
7079
  if (this.sku) {
7085
7080
  this.instanceId = undefined;
@@ -8597,6 +8592,7 @@ class AnswersSlideoutComponent {
8597
8592
  // TODO change to input
8598
8593
  valutaSymbol = '€';
8599
8594
  hasInfoOpen = false;
8595
+ showTagFilter = false;
8600
8596
  _openCount = 0;
8601
8597
  _answers;
8602
8598
  _subs = [];
@@ -8619,6 +8615,7 @@ class AnswersSlideoutComponent {
8619
8615
  this.valutaSymbol = this.settingsService.settings.currencySymbol;
8620
8616
  }
8621
8617
  this.bottomAlign = this.settingsService.settings.options.bottomAnswers;
8618
+ this.showTagFilter = this.settingsService.settings.options.showTagFilter;
8622
8619
  }
8623
8620
  }));
8624
8621
  }
@@ -8825,7 +8822,7 @@ class AnswersSlideoutComponent {
8825
8822
  ></co-color-filter>
8826
8823
  }
8827
8824
  </div>
8828
- @if (settingsService.settings.options.showTagFilter) {
8825
+ @if (showTagFilter) {
8829
8826
  <div class="filter">
8830
8827
  @for (tag of tagArray; track tag) {
8831
8828
  <co-tag-filter
@@ -8837,7 +8834,7 @@ class AnswersSlideoutComponent {
8837
8834
  }
8838
8835
  }
8839
8836
  <div class="cards" visibilityObserverMaster>
8840
- @for (answer of filteredAnswers; track answer) {
8837
+ @for (answer of filteredAnswers; track answer.id) {
8841
8838
  @if (answer.isGroupHeader) {
8842
8839
  <div class="group-header-wrapper">
8843
8840
  <div class="group-header-title">
@@ -8973,7 +8970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
8973
8970
  ></co-color-filter>
8974
8971
  }
8975
8972
  </div>
8976
- @if (settingsService.settings.options.showTagFilter) {
8973
+ @if (showTagFilter) {
8977
8974
  <div class="filter">
8978
8975
  @for (tag of tagArray; track tag) {
8979
8976
  <co-tag-filter
@@ -8985,7 +8982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
8985
8982
  }
8986
8983
  }
8987
8984
  <div class="cards" visibilityObserverMaster>
8988
- @for (answer of filteredAnswers; track answer) {
8985
+ @for (answer of filteredAnswers; track answer.id) {
8989
8986
  @if (answer.isGroupHeader) {
8990
8987
  <div class="group-header-wrapper">
8991
8988
  <div class="group-header-title">
@@ -9974,7 +9971,6 @@ class SelectionsSummaryComponent {
9974
9971
  canClose = true;
9975
9972
  answersTemplate;
9976
9973
  answerToShowFromSelectionText;
9977
- showSaveAndLoadConfiguration;
9978
9974
  customDimensions = false;
9979
9975
  disableMouse = false;
9980
9976
  handledocumentMouseUp(event) {
@@ -10024,7 +10020,7 @@ class SelectionsSummaryComponent {
10024
10020
  this.selectionToCustomize = sel;
10025
10021
  }
10026
10022
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SelectionsSummaryComponent, deps: [{ token: ConfiguratorConnectorService }, { token: IconCacheService }], target: i0.ɵɵFactoryTarget.Component });
10027
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SelectionsSummaryComponent, isStandalone: false, selector: "co-selections-summary", inputs: { selections: "selections", showLabel: "showLabel", canClose: "canClose", answersTemplate: "answersTemplate", answerToShowFromSelectionText: "answerToShowFromSelectionText", showSaveAndLoadConfiguration: "showSaveAndLoadConfiguration", customDimensions: "customDimensions" }, outputs: { closeClick: "closeClick", cancelAnswers: "cancelAnswers", selectSelection: "selectSelection", repeatSelection: "repeatSelection", deleteSelection: "deleteSelection" }, host: { listeners: { "document:mouseup": "handledocumentMouseUp($event)", "document:mousemove": "handleDocumentMouseDown($event)" }, properties: { "class.co-selections-summary": "this.showClass", "class.custom-dimensions": "this.customDimensions", "class.disable-mouse": "this.disableMouse" } }, ngImport: i0, template: `
10023
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SelectionsSummaryComponent, isStandalone: false, selector: "co-selections-summary", inputs: { selections: "selections", showLabel: "showLabel", canClose: "canClose", answersTemplate: "answersTemplate", answerToShowFromSelectionText: "answerToShowFromSelectionText", customDimensions: "customDimensions" }, outputs: { closeClick: "closeClick", cancelAnswers: "cancelAnswers", selectSelection: "selectSelection", repeatSelection: "repeatSelection", deleteSelection: "deleteSelection" }, host: { listeners: { "document:mouseup": "handledocumentMouseUp($event)", "document:mousemove": "handleDocumentMouseDown($event)" }, properties: { "class.co-selections-summary": "this.showClass", "class.custom-dimensions": "this.customDimensions", "class.disable-mouse": "this.disableMouse" } }, ngImport: i0, template: `
10028
10024
  @if (showLabel || canClose) {
10029
10025
  <header class="drawer__header">
10030
10026
  @if (showLabel) {
@@ -10039,7 +10035,7 @@ class SelectionsSummaryComponent {
10039
10035
  }
10040
10036
  @if (selections && selections.length > 0) {
10041
10037
  <div class="selections-content small-scrollbar">
10042
- @for (sel of selections; track sel; let index = $index) {
10038
+ @for (sel of selections; track sel.id; let index = $index) {
10043
10039
  <co-selections-summary-line
10044
10040
  [selection]="sel"
10045
10041
  [answersTemplate]="answersTemplate ? answersTemplate : undefined"
@@ -10083,7 +10079,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10083
10079
  }
10084
10080
  @if (selections && selections.length > 0) {
10085
10081
  <div class="selections-content small-scrollbar">
10086
- @for (sel of selections; track sel; let index = $index) {
10082
+ @for (sel of selections; track sel.id; let index = $index) {
10087
10083
  <co-selections-summary-line
10088
10084
  [selection]="sel"
10089
10085
  [answersTemplate]="answersTemplate ? answersTemplate : undefined"
@@ -10123,8 +10119,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10123
10119
  type: Input
10124
10120
  }], answerToShowFromSelectionText: [{
10125
10121
  type: Input
10126
- }], showSaveAndLoadConfiguration: [{
10127
- type: Input
10128
10122
  }], customDimensions: [{
10129
10123
  type: HostBinding,
10130
10124
  args: ['class.custom-dimensions']
@@ -10187,7 +10181,6 @@ class LiteSelectorComponent {
10187
10181
  canClose = true;
10188
10182
  animateSlideout = true;
10189
10183
  customDimensions = false;
10190
- showSaveAndLoadConfiguration;
10191
10184
  showChange = new EventEmitter();
10192
10185
  answerChosen = new EventEmitter();
10193
10186
  answerToShowFromSelectionText;
@@ -10240,7 +10233,7 @@ class LiteSelectorComponent {
10240
10233
  // this.iOne.getMoodImageForAnswerSelection(answerSelected.answer, false);
10241
10234
  }
10242
10235
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: LiteSelectorComponent, deps: [{ token: SwitchBuildFurnitureService }, { token: ConfiguratorConnectorService }, { token: ConfiguringService }], target: i0.ɵɵFactoryTarget.Component });
10243
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: LiteSelectorComponent, isStandalone: false, selector: "co-lite-selector", inputs: { show: "show", showLabel: "showLabel", canClose: "canClose", animateSlideout: "animateSlideout", customDimensions: "customDimensions", showSaveAndLoadConfiguration: "showSaveAndLoadConfiguration" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.co-lite-selector": "this.showClass", "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
10236
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: LiteSelectorComponent, isStandalone: false, selector: "co-lite-selector", inputs: { show: "show", showLabel: "showLabel", canClose: "canClose", animateSlideout: "animateSlideout", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.co-lite-selector": "this.showClass", "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
10244
10237
  <ng-container>
10245
10238
  @if (configuratorConnectorService.selectionsToDisplay.length > 0) {
10246
10239
  <co-selections-summary
@@ -10251,7 +10244,6 @@ class LiteSelectorComponent {
10251
10244
  [answersTemplate]="inlineAnswers ? templateAnswers : undefined"
10252
10245
  [answerToShowFromSelectionText]="answerToShowFromSelectionText"
10253
10246
  [selections]="configuratorConnectorService.selectionsToDisplay"
10254
- [showSaveAndLoadConfiguration]="showSaveAndLoadConfiguration"
10255
10247
  (selectSelection)="onSelectionsSummarySelectSelection($event)"
10256
10248
  (repeatSelection)="onSelectionsSummarySelectSelection($event, false, true)"
10257
10249
  (deleteSelection)="onSelectionsSummaryDeleteSelection($event)"
@@ -10262,21 +10254,27 @@ class LiteSelectorComponent {
10262
10254
  <ng-container [ngTemplateOutlet]="templateAnswers"></ng-container>
10263
10255
  }
10264
10256
  </ng-container>
10265
-
10257
+
10266
10258
  <ng-template #templateAnswers>
10267
- @if (configuratorConnectorService.activeAnswers.length > 0) {
10268
- <co-answers-slideout
10269
- [showTitle]="!inlineAnswers"
10270
- [showFilter]="!inlineAnswers"
10271
- [useSlideout]="!inlineAnswers"
10272
- [customDimensions]="customDimensions"
10273
- [question]="configuratorConnectorService.activeQuestion"
10274
- [answers]="configuratorConnectorService.activeAnswers"
10275
- (answerChosen)="onAnswersSlideoutAnswerChosen($event)"
10276
- ></co-answers-slideout>
10277
- }
10259
+ @if (configuratorConnectorService.activeAnswers.length > 0) {
10260
+ <co-answers-slideout
10261
+ [showTitle]="!inlineAnswers"
10262
+ [showFilter]="!inlineAnswers"
10263
+ [useSlideout]="!inlineAnswers"
10264
+ [customDimensions]="customDimensions"
10265
+ [question]="configuratorConnectorService.activeQuestion"
10266
+ [answers]="configuratorConnectorService.activeAnswers"
10267
+ (answerChosen)="onAnswersSlideoutAnswerChosen($event)"
10268
+ ></co-answers-slideout>
10269
+ }
10278
10270
  </ng-template>
10279
- `, isInline: true, dependencies: [{ kind: "component", type: AnswersSlideoutComponent, selector: "co-answers-slideout", inputs: ["question", "showTitle", "showFilter", "answers", "useSlideout", "customDimensions"], outputs: ["answerChosen"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SelectionsSummaryComponent, selector: "co-selections-summary", inputs: ["selections", "showLabel", "canClose", "answersTemplate", "answerToShowFromSelectionText", "showSaveAndLoadConfiguration", "customDimensions"], outputs: ["closeClick", "cancelAnswers", "selectSelection", "repeatSelection", "deleteSelection"] }], encapsulation: i0.ViewEncapsulation.None });
10271
+ `, isInline: true, dependencies: [{ kind: "component", type: AnswersSlideoutComponent, selector: "co-answers-slideout", inputs: ["question", "showTitle", "showFilter", "answers", "useSlideout", "customDimensions"], outputs: ["answerChosen"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SelectionsSummaryComponent, selector: "co-selections-summary", inputs: ["selections", "showLabel", "canClose", "answersTemplate", "answerToShowFromSelectionText", "customDimensions"], outputs: ["closeClick", "cancelAnswers", "selectSelection", "repeatSelection", "deleteSelection"] }], animations: [
10272
+ trigger('showSelections', [
10273
+ state('void', style({ 'transform': 'translateX(100%)', opacity: 0 })),
10274
+ state('*', style({ 'transform': 'translateX(0%)', opacity: 1 })),
10275
+ transition('void <=> *', animate(200))
10276
+ ])
10277
+ ], encapsulation: i0.ViewEncapsulation.None });
10280
10278
  }
10281
10279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: LiteSelectorComponent, decorators: [{
10282
10280
  type: Component,
@@ -10293,7 +10291,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10293
10291
  [answersTemplate]="inlineAnswers ? templateAnswers : undefined"
10294
10292
  [answerToShowFromSelectionText]="answerToShowFromSelectionText"
10295
10293
  [selections]="configuratorConnectorService.selectionsToDisplay"
10296
- [showSaveAndLoadConfiguration]="showSaveAndLoadConfiguration"
10297
10294
  (selectSelection)="onSelectionsSummarySelectSelection($event)"
10298
10295
  (repeatSelection)="onSelectionsSummarySelectSelection($event, false, true)"
10299
10296
  (deleteSelection)="onSelectionsSummaryDeleteSelection($event)"
@@ -10304,22 +10301,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10304
10301
  <ng-container [ngTemplateOutlet]="templateAnswers"></ng-container>
10305
10302
  }
10306
10303
  </ng-container>
10307
-
10304
+
10308
10305
  <ng-template #templateAnswers>
10309
- @if (configuratorConnectorService.activeAnswers.length > 0) {
10310
- <co-answers-slideout
10311
- [showTitle]="!inlineAnswers"
10312
- [showFilter]="!inlineAnswers"
10313
- [useSlideout]="!inlineAnswers"
10314
- [customDimensions]="customDimensions"
10315
- [question]="configuratorConnectorService.activeQuestion"
10316
- [answers]="configuratorConnectorService.activeAnswers"
10317
- (answerChosen)="onAnswersSlideoutAnswerChosen($event)"
10318
- ></co-answers-slideout>
10319
- }
10306
+ @if (configuratorConnectorService.activeAnswers.length > 0) {
10307
+ <co-answers-slideout
10308
+ [showTitle]="!inlineAnswers"
10309
+ [showFilter]="!inlineAnswers"
10310
+ [useSlideout]="!inlineAnswers"
10311
+ [customDimensions]="customDimensions"
10312
+ [question]="configuratorConnectorService.activeQuestion"
10313
+ [answers]="configuratorConnectorService.activeAnswers"
10314
+ (answerChosen)="onAnswersSlideoutAnswerChosen($event)"
10315
+ ></co-answers-slideout>
10316
+ }
10320
10317
  </ng-template>
10321
- `,
10318
+ `,
10322
10319
  encapsulation: ViewEncapsulation.None,
10320
+ animations: [
10321
+ trigger('showSelections', [
10322
+ state('void', style({ 'transform': 'translateX(100%)', opacity: 0 })),
10323
+ state('*', style({ 'transform': 'translateX(0%)', opacity: 1 })),
10324
+ transition('void <=> *', animate(200))
10325
+ ])
10326
+ ],
10323
10327
  standalone: false
10324
10328
  }]
10325
10329
  }], ctorParameters: () => [{ type: SwitchBuildFurnitureService }, { type: ConfiguratorConnectorService }, { type: ConfiguringService }], propDecorators: { showClass: [{
@@ -10341,8 +10345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10341
10345
  args: ['class.custom-dimensions']
10342
10346
  }, {
10343
10347
  type: Input
10344
- }], showSaveAndLoadConfiguration: [{
10345
- type: Input
10346
10348
  }], showChange: [{
10347
10349
  type: Output
10348
10350
  }], answerChosen: [{
@@ -10670,7 +10672,7 @@ class ProductConfiguratorSelectorOptionDropDownComponent {
10670
10672
  <div class="configurator-option-dropdown-container">
10671
10673
  <div class="custom-select-wrapper">
10672
10674
  <select class="option-dropdown-select" (change)="onChange($event)">
10673
- @for (option of options; track option; let i = $index) {
10675
+ @for (option of options; track option.id; let i = $index) {
10674
10676
  <option [value]="option" [selected]="option.selected === 'F'">
10675
10677
  @if (option.nodeText) {
10676
10678
  <p [textContent]="option.nodeText | localize:true | async"></p>
@@ -10696,7 +10698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10696
10698
  <div class="configurator-option-dropdown-container">
10697
10699
  <div class="custom-select-wrapper">
10698
10700
  <select class="option-dropdown-select" (change)="onChange($event)">
10699
- @for (option of options; track option; let i = $index) {
10701
+ @for (option of options; track option.id; let i = $index) {
10700
10702
  <option [value]="option" [selected]="option.selected === 'F'">
10701
10703
  @if (option.nodeText) {
10702
10704
  <p [textContent]="option.nodeText | localize:true | async"></p>
@@ -10852,7 +10854,7 @@ class ProductConfiguratorSelectorOptionComponent {
10852
10854
  @if (this.selection.displayOptionControl !== configurationDisplayOption.DropDown
10853
10855
  && !this.largeTileOptions.includes(this.selection.displayOptionControl)
10854
10856
  && !this.smallTileOptions.includes(this.selection.displayOptionControl)) {
10855
- @for (child of listOfChoices; track child) {
10857
+ @for (child of listOfChoices; track child.id) {
10856
10858
  <div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
10857
10859
  @if (this.selection.displayOptionControl === configurationDisplayOption.Button) {
10858
10860
  <co-product-configurator-selector-option-button
@@ -10901,7 +10903,7 @@ class ProductConfiguratorSelectorOptionComponent {
10901
10903
  @if (
10902
10904
  this.largeTileOptions.includes(this.selection.displayOptionControl)
10903
10905
  || this.smallTileOptions.includes(this.selection.displayOptionControl)) {
10904
- @for (child of visibleAnswers; track child) {
10906
+ @for (child of visibleAnswers; track child.id) {
10905
10907
  <div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
10906
10908
  <co-product-configurator-selector-option-tile
10907
10909
  [option]="child"
@@ -10957,7 +10959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
10957
10959
  @if (this.selection.displayOptionControl !== configurationDisplayOption.DropDown
10958
10960
  && !this.largeTileOptions.includes(this.selection.displayOptionControl)
10959
10961
  && !this.smallTileOptions.includes(this.selection.displayOptionControl)) {
10960
- @for (child of listOfChoices; track child) {
10962
+ @for (child of listOfChoices; track child.id) {
10961
10963
  <div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
10962
10964
  @if (this.selection.displayOptionControl === configurationDisplayOption.Button) {
10963
10965
  <co-product-configurator-selector-option-button
@@ -11006,7 +11008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11006
11008
  @if (
11007
11009
  this.largeTileOptions.includes(this.selection.displayOptionControl)
11008
11010
  || this.smallTileOptions.includes(this.selection.displayOptionControl)) {
11009
- @for (child of visibleAnswers; track child) {
11011
+ @for (child of visibleAnswers; track child.id) {
11010
11012
  <div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
11011
11013
  <co-product-configurator-selector-option-tile
11012
11014
  [option]="child"
@@ -11541,7 +11543,6 @@ class ProductConfiguratorComponent {
11541
11543
  showLabel = true;
11542
11544
  canClose = true;
11543
11545
  customDimensions = false;
11544
- showSaveAndLoadConfiguration;
11545
11546
  showChange = new EventEmitter();
11546
11547
  answerChosen = new EventEmitter();
11547
11548
  valutaSymbol = '€'; // TODO this should be a setting
@@ -11569,7 +11570,11 @@ class ProductConfiguratorComponent {
11569
11570
  if (selection) {
11570
11571
  this.onSelectionsSummarySelectSelection(selection);
11571
11572
  }
11572
- }), this._eventService.articleReceived.subscribe((article) => this._handleArticleReceived(article)), this._eventService.selectionWithAnswersChanged.subscribe((selections) => this._handleSelectionWithAnswersChanged(selections)));
11573
+ }), this._eventService.articleReceived.subscribe((article) => {
11574
+ if (article) {
11575
+ this._handleArticleReceived(article);
11576
+ }
11577
+ }), this._eventService.selectionWithAnswersChanged.subscribe((selections) => this._handleSelectionWithAnswersChanged(selections)));
11573
11578
  }
11574
11579
  ngOnDestroy() {
11575
11580
  this._subs.forEach(s => s.unsubscribe());
@@ -11603,7 +11608,7 @@ class ProductConfiguratorComponent {
11603
11608
  }
11604
11609
  }
11605
11610
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ProductConfiguratorComponent, deps: [{ token: ConfiguratorConnectorService }, { token: SwitchBuildFurnitureService }, { token: ConfiguratorSettingsService }, { token: ProductConfiguratorService }, { token: IconCacheService }, { token: i1.DomSanitizer }, { token: ConfiguringService }, { token: ConfiguratorEventService }], target: i0.ɵɵFactoryTarget.Component });
11606
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ProductConfiguratorComponent, isStandalone: false, selector: "co-product-configurator", inputs: { showHeaderInformation: "showHeaderInformation", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", customDimensions: "customDimensions", showSaveAndLoadConfiguration: "showSaveAndLoadConfiguration" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.co-product-configurator": "this.showClass" } }, ngImport: i0, template: `
11611
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ProductConfiguratorComponent, isStandalone: false, selector: "co-product-configurator", inputs: { showHeaderInformation: "showHeaderInformation", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.co-product-configurator": "this.showClass" } }, ngImport: i0, template: `
11607
11612
  <div class="product-configurator-container">
11608
11613
  @if (showHeaderInformation) {
11609
11614
  <div class="product-configurator-header">
@@ -11710,8 +11715,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11710
11715
  type: Input
11711
11716
  }], customDimensions: [{
11712
11717
  type: Input
11713
- }], showSaveAndLoadConfiguration: [{
11714
- type: Input
11715
11718
  }], showChange: [{
11716
11719
  type: Output
11717
11720
  }], answerChosen: [{
@@ -11726,9 +11729,11 @@ class ConfiguratorComponent {
11726
11729
  _buildFurnitureService;
11727
11730
  _configuratorConnectorService;
11728
11731
  showClass = true;
11732
+ show = true;
11729
11733
  set sku(value) {
11734
+ this._reset();
11730
11735
  this._sku = value;
11731
- if (this._sku && this.loaded) {
11736
+ if (this.loaded) {
11732
11737
  this._configuratorEventService.skuSet.next(this._sku);
11733
11738
  this._skuSet = true;
11734
11739
  }
@@ -11737,8 +11742,9 @@ class ConfiguratorComponent {
11737
11742
  return this._sku;
11738
11743
  }
11739
11744
  set instanceId(value) {
11745
+ this._reset();
11740
11746
  this._instanceId = value;
11741
- if (this._instanceId && this.loaded) {
11747
+ if (this.loaded) {
11742
11748
  this._configuratorEventService.instanceIdSet.next(this._instanceId);
11743
11749
  this._instanceIdSet = true;
11744
11750
  }
@@ -11772,11 +11778,12 @@ class ConfiguratorComponent {
11772
11778
  resultHasErrors = false;
11773
11779
  showErrorDiagram = false;
11774
11780
  configurationResultObject;
11775
- showFullConfiguration = false;
11781
+ showFullConfiguration = undefined;
11776
11782
  showLiteSelector = false;
11777
11783
  showSelections = false;
11778
11784
  showAnswers = false;
11779
11785
  loaded = false;
11786
+ forceShow = false;
11780
11787
  _subs = [];
11781
11788
  _loadingFromPreset = false;
11782
11789
  _settings;
@@ -11784,6 +11791,7 @@ class ConfiguratorComponent {
11784
11791
  _instanceIdSet = false;
11785
11792
  _sku;
11786
11793
  _skuSet = false;
11794
+ _alreadyReset = false;
11787
11795
  constructor(settingsService, loaderService, _configuratorEventService, _configuringService, _buildFurnitureService, _configuratorConnectorService) {
11788
11796
  this.settingsService = settingsService;
11789
11797
  this.loaderService = loaderService;
@@ -11791,7 +11799,11 @@ class ConfiguratorComponent {
11791
11799
  this._configuringService = _configuringService;
11792
11800
  this._buildFurnitureService = _buildFurnitureService;
11793
11801
  this._configuratorConnectorService = _configuratorConnectorService;
11794
- this._subs.push(this._configuratorEventService.articleNotFound.subscribe((buildResult) => this._handleArticleNotFound(buildResult)), this._configuratorEventService.answerCountReceived.subscribe((answerCount) => this._handleAnswerCountReceived(answerCount)), this._configuratorEventService.buildFinished.subscribe((resultObject) => this._handleBuildFinished(resultObject)), this._configuratorEventService.configurationTemplateChange.subscribe((template) => this._handleTemplateChange(template)), this._configuratorConnectorService.controllerInitialized.subscribe((initialized) => {
11802
+ this._subs.push(this._configuratorEventService.articleNotFound.subscribe((buildResult) => this._handleArticleNotFound(buildResult)), this._configuratorEventService.answerCountReceived.subscribe((answerCount) => this._handleAnswerCountReceived(answerCount)), this._configuratorEventService.buildFinished.subscribe((resultObject) => this._handleBuildFinished(resultObject)), this._configuratorEventService.articleReceived.subscribe((article) => {
11803
+ if (article) {
11804
+ this.showFullConfiguration = !!article.showFullConfiguration;
11805
+ }
11806
+ }), this._configuratorConnectorService.controllerInitialized.subscribe((initialized) => {
11795
11807
  if (initialized) {
11796
11808
  this.loaded = true;
11797
11809
  if (this._sku && !this._skuSet) {
@@ -11803,6 +11815,12 @@ class ConfiguratorComponent {
11803
11815
  this._instanceIdSet = true;
11804
11816
  }
11805
11817
  }
11818
+ }), combineLatest([
11819
+ this._configuratorEventService.skuSet,
11820
+ this._configuratorEventService.instanceIdSet
11821
+ ]).pipe(debounceTime(0) // wait for events to finish, because skuSet and instanceIdSet events are emitted simultaneously
11822
+ ).subscribe(([sku, instanceId]) => {
11823
+ this._alreadyReset = false;
11806
11824
  }));
11807
11825
  }
11808
11826
  ngOnInit() {
@@ -11851,9 +11869,7 @@ class ConfiguratorComponent {
11851
11869
  }
11852
11870
  _handleAnswerCountReceived(answerCount) {
11853
11871
  this.showAnswers = answerCount > 0;
11854
- if (this.showAnswers) {
11855
- this.showLiteSelector = !this._loadingFromPreset;
11856
- }
11872
+ this.forceShow = this.showAnswers;
11857
11873
  }
11858
11874
  _handleBuildFinished(result) {
11859
11875
  if (!result) {
@@ -11868,20 +11884,25 @@ class ConfiguratorComponent {
11868
11884
  this.showErrorDiagram = true;
11869
11885
  }
11870
11886
  }
11871
- _handleTemplateChange(template) {
11872
- if (template === ConfigurationTemplate.default) {
11873
- this.showFullConfiguration = false;
11874
- }
11875
- else if (template === ConfigurationTemplate.showFullConfiguration) {
11876
- this.showFullConfiguration = true;
11877
- }
11878
- else {
11879
- this.showFullConfiguration = false;
11887
+ _reset() {
11888
+ if (this._alreadyReset) {
11889
+ return;
11880
11890
  }
11891
+ this._configuratorConnectorService.cleanUp();
11892
+ this._buildFurnitureService.currentActiveService.cleanup(); // Clean up the threeD stuff.
11893
+ this.showFullConfiguration = undefined;
11894
+ this._configuratorEventService.skuSet.next(undefined);
11895
+ this._configuratorEventService.instanceIdSet.next(undefined);
11896
+ this._configuratorEventService.instanceSet.next(undefined);
11897
+ this._configuratorEventService.articleNotFound.next(undefined);
11898
+ this._configuratorEventService.selectionWithAnswersChanged.next(undefined);
11899
+ this._configuratorEventService.articleReceived.next(undefined);
11900
+ this._configuratorEventService.buildFinished.next(undefined);
11901
+ this._alreadyReset = true;
11881
11902
  }
11882
11903
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ConfiguratorComponent, deps: [{ token: ConfiguratorSettingsService }, { token: LoaderService }, { token: ConfiguratorEventService }, { token: ConfiguringService }, { token: SwitchBuildFurnitureService }, { token: ConfiguratorConnectorService }], target: i0.ɵɵFactoryTarget.Component });
11883
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ConfiguratorComponent, isStandalone: false, selector: "co-configurator", inputs: { sku: "sku", instanceId: "instanceId", settings: "settings", scene: "scene", showLoader: "showLoader", showProgressBar: "showProgressBar", showErrorMessages: "showErrorMessages", outputErrorMessages: "outputErrorMessages", canCloseConfigurator: "canCloseConfigurator", animateSlideout: "animateSlideout", showHeaderInformation: "showHeaderInformation" }, outputs: { isLoading: "isLoading", updateProgressBar: "updateProgressBar", errorMessages: "errorMessages", showChange: "showChange" }, host: { properties: { "class.co-configurator": "this.showClass" } }, ngImport: i0, template: `
11884
- @if (loaded) {
11904
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ConfiguratorComponent, isStandalone: false, selector: "co-configurator", inputs: { show: "show", sku: "sku", instanceId: "instanceId", settings: "settings", scene: "scene", showLoader: "showLoader", showProgressBar: "showProgressBar", showErrorMessages: "showErrorMessages", outputErrorMessages: "outputErrorMessages", canCloseConfigurator: "canCloseConfigurator", animateSlideout: "animateSlideout", showHeaderInformation: "showHeaderInformation" }, outputs: { isLoading: "isLoading", updateProgressBar: "updateProgressBar", errorMessages: "errorMessages", showChange: "showChange" }, host: { properties: { "class.co-configurator": "this.showClass" } }, ngImport: i0, template: `
11905
+ @if (loaded && (show || forceShow)) {
11885
11906
  @if (showProgressBar) {
11886
11907
  <co-progress-bar></co-progress-bar>
11887
11908
  }
@@ -11894,7 +11915,7 @@ class ConfiguratorComponent {
11894
11915
  (closeErrorDialoag)="handleCloseErrorDialog()"
11895
11916
  ></co-configurator-error-dialog>
11896
11917
  }
11897
- @if (!showFullConfiguration) {
11918
+ @if (showFullConfiguration === false) {
11898
11919
  <co-lite-selector
11899
11920
  class="floating"
11900
11921
  [animateSlideout]="animateSlideout"
@@ -11914,14 +11935,14 @@ class ConfiguratorComponent {
11914
11935
  }
11915
11936
 
11916
11937
  }
11917
- `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "co-progress-bar" }, { kind: "component", type: ConfiguratorLoaderComponent, selector: "co-configurator-loader", inputs: ["show"] }, { kind: "component", type: ConfiguratorErrorDialogComponent, selector: "co-configurator-error-dialog", inputs: ["errorMessages"], outputs: ["closeErrorDialoag"] }, { kind: "component", type: LiteSelectorComponent, selector: "co-lite-selector", inputs: ["show", "showLabel", "canClose", "animateSlideout", "customDimensions", "showSaveAndLoadConfiguration"], outputs: ["showChange", "answerChosen"] }, { kind: "component", type: ProductConfiguratorComponent, selector: "co-product-configurator", inputs: ["showHeaderInformation", "showSelections", "showLabel", "canClose", "customDimensions", "showSaveAndLoadConfiguration"], outputs: ["showChange", "answerChosen"] }], encapsulation: i0.ViewEncapsulation.None });
11938
+ `, isInline: true, dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "co-progress-bar" }, { kind: "component", type: ConfiguratorLoaderComponent, selector: "co-configurator-loader", inputs: ["show"] }, { kind: "component", type: ConfiguratorErrorDialogComponent, selector: "co-configurator-error-dialog", inputs: ["errorMessages"], outputs: ["closeErrorDialoag"] }, { kind: "component", type: LiteSelectorComponent, selector: "co-lite-selector", inputs: ["show", "showLabel", "canClose", "animateSlideout", "customDimensions"], outputs: ["showChange", "answerChosen"] }, { kind: "component", type: ProductConfiguratorComponent, selector: "co-product-configurator", inputs: ["showHeaderInformation", "showSelections", "showLabel", "canClose", "customDimensions"], outputs: ["showChange", "answerChosen"] }], encapsulation: i0.ViewEncapsulation.None });
11918
11939
  }
11919
11940
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ConfiguratorComponent, decorators: [{
11920
11941
  type: Component,
11921
11942
  args: [{
11922
11943
  selector: 'co-configurator',
11923
11944
  template: `
11924
- @if (loaded) {
11945
+ @if (loaded && (show || forceShow)) {
11925
11946
  @if (showProgressBar) {
11926
11947
  <co-progress-bar></co-progress-bar>
11927
11948
  }
@@ -11934,7 +11955,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11934
11955
  (closeErrorDialoag)="handleCloseErrorDialog()"
11935
11956
  ></co-configurator-error-dialog>
11936
11957
  }
11937
- @if (!showFullConfiguration) {
11958
+ @if (showFullConfiguration === false) {
11938
11959
  <co-lite-selector
11939
11960
  class="floating"
11940
11961
  [animateSlideout]="animateSlideout"
@@ -11961,6 +11982,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11961
11982
  }], ctorParameters: () => [{ type: ConfiguratorSettingsService }, { type: LoaderService }, { type: ConfiguratorEventService }, { type: ConfiguringService }, { type: SwitchBuildFurnitureService }, { type: ConfiguratorConnectorService }], propDecorators: { showClass: [{
11962
11983
  type: HostBinding,
11963
11984
  args: ['class.co-configurator']
11985
+ }], show: [{
11986
+ type: Input
11964
11987
  }], sku: [{
11965
11988
  type: Input
11966
11989
  }], instanceId: [{
@@ -14272,6 +14295,9 @@ class SceneButtonUtils {
14272
14295
  if (selection.hdecoPositioning !== 'N') {
14273
14296
  const len = selection.decoNode ? selection.decoNode.connectors.length : 0;
14274
14297
  for (let i = 0; i < len; i++) {
14298
+ if (selection.decoNode.connectors[i] === null) {
14299
+ return;
14300
+ }
14275
14301
  const conObject = this._getConnectorObject(child, selection.decoNode.connectors[i].connector);
14276
14302
  const conObjectParent = ObjectUtils.GetParentItem(conObject, CustomObject3D);
14277
14303
  const existingButton = result.find((eab) => {
@@ -15264,7 +15290,6 @@ class ConfiguratorSceneComponent {
15264
15290
  _floorService;
15265
15291
  canvasElement;
15266
15292
  elementToolbar;
15267
- showSceneBuildLoader = true;
15268
15293
  showClass = true;
15269
15294
  totalSteps = 8;
15270
15295
  currentStep = 0;
@@ -15276,6 +15301,7 @@ class ConfiguratorSceneComponent {
15276
15301
  loaderProgress = 0;
15277
15302
  showElementToolbar = false;
15278
15303
  animateEditAddButtons = false;
15304
+ showSceneBuildLoader = false;
15279
15305
  enabledDownloadDialog = false;
15280
15306
  development = false;
15281
15307
  showDownloadDialog = false;
@@ -15315,6 +15341,12 @@ class ConfiguratorSceneComponent {
15315
15341
  if (started) {
15316
15342
  this.setSceneBuildLoader = started;
15317
15343
  }
15344
+ }), this._eventService.addedToScene.subscribe((result) => {
15345
+ if (result) {
15346
+ if (this.currentStep !== this.totalSteps) {
15347
+ this._loaderProcessUpdate(this.totalSteps);
15348
+ }
15349
+ }
15318
15350
  }), this._settingsService.settingsLoaded.subscribe((loaded) => {
15319
15351
  if (loaded && this._settingsService.settings && this._settingsService.settings.options) {
15320
15352
  if (this._settingsService.settings.options.showDownloadButton) {
@@ -15328,6 +15360,7 @@ class ConfiguratorSceneComponent {
15328
15360
  this._createCameraSettingsButton();
15329
15361
  }
15330
15362
  this.development = this._settingsService.settings.options.development;
15363
+ this.showSceneBuildLoader = this._settingsService.settings.options.showSceneBuildLoader;
15331
15364
  }
15332
15365
  }));
15333
15366
  }
@@ -15542,7 +15575,7 @@ class ConfiguratorSceneComponent {
15542
15575
  this._dimensionsService.enabled = !this._dimensionsService.enabled;
15543
15576
  }
15544
15577
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ConfiguratorSceneComponent, deps: [{ token: ConfiguratorSettingsService }, { token: ConfiguratorRotationService }, { token: ConfiguratorDynamicCameraService }, { token: ConfiguratorSceneService }, { token: ConfiguratorEventService }, { token: ConfiguratorCameraService }, { token: ConfiguratorItemService }, { token: SwitchBuildFurnitureService }, { token: SceneOptionsService }, { token: DimensionsService }, { token: FloorPlaneService }], target: i0.ɵɵFactoryTarget.Component });
15545
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ConfiguratorSceneComponent, isStandalone: false, selector: "co-configurator-scene", inputs: { showSceneBuildLoader: "showSceneBuildLoader" }, host: { properties: { "class.co-configurator-scene": "this.showClass" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }, { propertyName: "elementToolbar", first: true, predicate: ElementToolbarComponent, descendants: true }], ngImport: i0, template: `
15578
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ConfiguratorSceneComponent, isStandalone: false, selector: "co-configurator-scene", host: { properties: { "class.co-configurator-scene": "this.showClass" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }, { propertyName: "elementToolbar", first: true, predicate: ElementToolbarComponent, descendants: true }], ngImport: i0, template: `
15546
15579
  @if (showSceneBuildLoader && setSceneBuildLoader) {
15547
15580
  <co-configurator-scene-loader
15548
15581
  [loaderProgress]="loaderProgress">
@@ -15638,8 +15671,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
15638
15671
  }], elementToolbar: [{
15639
15672
  type: ViewChild,
15640
15673
  args: [ElementToolbarComponent]
15641
- }], showSceneBuildLoader: [{
15642
- type: Input
15643
15674
  }], showClass: [{
15644
15675
  type: HostBinding,
15645
15676
  args: ['class.co-configurator-scene']