@colijnit/configurator 261.20.7 → 261.20.9
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
|
|
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
|
}
|
|
@@ -7079,7 +7073,8 @@ class ConfiguringService {
|
|
|
7079
7073
|
this._subs.push(combineLatest([
|
|
7080
7074
|
this._appEventService.skuSet,
|
|
7081
7075
|
this._appEventService.instanceIdSet
|
|
7082
|
-
]).
|
|
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 (
|
|
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 (
|
|
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",
|
|
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"
|
|
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)"
|
|
@@ -10276,7 +10268,7 @@ class LiteSelectorComponent {
|
|
|
10276
10268
|
></co-answers-slideout>
|
|
10277
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", "
|
|
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: [
|
|
10280
10272
|
trigger('showSelections', [
|
|
10281
10273
|
state('void', style({ 'transform': 'translateX(100%)', opacity: 0 })),
|
|
10282
10274
|
state('*', style({ 'transform': 'translateX(0%)', opacity: 1 })),
|
|
@@ -10299,7 +10291,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
10299
10291
|
[answersTemplate]="inlineAnswers ? templateAnswers : undefined"
|
|
10300
10292
|
[answerToShowFromSelectionText]="answerToShowFromSelectionText"
|
|
10301
10293
|
[selections]="configuratorConnectorService.selectionsToDisplay"
|
|
10302
|
-
[showSaveAndLoadConfiguration]="showSaveAndLoadConfiguration"
|
|
10303
10294
|
(selectSelection)="onSelectionsSummarySelectSelection($event)"
|
|
10304
10295
|
(repeatSelection)="onSelectionsSummarySelectSelection($event, false, true)"
|
|
10305
10296
|
(deleteSelection)="onSelectionsSummaryDeleteSelection($event)"
|
|
@@ -10354,8 +10345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
10354
10345
|
args: ['class.custom-dimensions']
|
|
10355
10346
|
}, {
|
|
10356
10347
|
type: Input
|
|
10357
|
-
}], showSaveAndLoadConfiguration: [{
|
|
10358
|
-
type: Input
|
|
10359
10348
|
}], showChange: [{
|
|
10360
10349
|
type: Output
|
|
10361
10350
|
}], answerChosen: [{
|
|
@@ -10683,7 +10672,7 @@ class ProductConfiguratorSelectorOptionDropDownComponent {
|
|
|
10683
10672
|
<div class="configurator-option-dropdown-container">
|
|
10684
10673
|
<div class="custom-select-wrapper">
|
|
10685
10674
|
<select class="option-dropdown-select" (change)="onChange($event)">
|
|
10686
|
-
@for (option of options; track option; let i = $index) {
|
|
10675
|
+
@for (option of options; track option.id; let i = $index) {
|
|
10687
10676
|
<option [value]="option" [selected]="option.selected === 'F'">
|
|
10688
10677
|
@if (option.nodeText) {
|
|
10689
10678
|
<p [textContent]="option.nodeText | localize:true | async"></p>
|
|
@@ -10709,7 +10698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
10709
10698
|
<div class="configurator-option-dropdown-container">
|
|
10710
10699
|
<div class="custom-select-wrapper">
|
|
10711
10700
|
<select class="option-dropdown-select" (change)="onChange($event)">
|
|
10712
|
-
@for (option of options; track option; let i = $index) {
|
|
10701
|
+
@for (option of options; track option.id; let i = $index) {
|
|
10713
10702
|
<option [value]="option" [selected]="option.selected === 'F'">
|
|
10714
10703
|
@if (option.nodeText) {
|
|
10715
10704
|
<p [textContent]="option.nodeText | localize:true | async"></p>
|
|
@@ -10865,7 +10854,7 @@ class ProductConfiguratorSelectorOptionComponent {
|
|
|
10865
10854
|
@if (this.selection.displayOptionControl !== configurationDisplayOption.DropDown
|
|
10866
10855
|
&& !this.largeTileOptions.includes(this.selection.displayOptionControl)
|
|
10867
10856
|
&& !this.smallTileOptions.includes(this.selection.displayOptionControl)) {
|
|
10868
|
-
@for (child of listOfChoices; track child) {
|
|
10857
|
+
@for (child of listOfChoices; track child.id) {
|
|
10869
10858
|
<div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
|
|
10870
10859
|
@if (this.selection.displayOptionControl === configurationDisplayOption.Button) {
|
|
10871
10860
|
<co-product-configurator-selector-option-button
|
|
@@ -10914,7 +10903,7 @@ class ProductConfiguratorSelectorOptionComponent {
|
|
|
10914
10903
|
@if (
|
|
10915
10904
|
this.largeTileOptions.includes(this.selection.displayOptionControl)
|
|
10916
10905
|
|| this.smallTileOptions.includes(this.selection.displayOptionControl)) {
|
|
10917
|
-
@for (child of visibleAnswers; track child) {
|
|
10906
|
+
@for (child of visibleAnswers; track child.id) {
|
|
10918
10907
|
<div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
|
|
10919
10908
|
<co-product-configurator-selector-option-tile
|
|
10920
10909
|
[option]="child"
|
|
@@ -10970,7 +10959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
10970
10959
|
@if (this.selection.displayOptionControl !== configurationDisplayOption.DropDown
|
|
10971
10960
|
&& !this.largeTileOptions.includes(this.selection.displayOptionControl)
|
|
10972
10961
|
&& !this.smallTileOptions.includes(this.selection.displayOptionControl)) {
|
|
10973
|
-
@for (child of listOfChoices; track child) {
|
|
10962
|
+
@for (child of listOfChoices; track child.id) {
|
|
10974
10963
|
<div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
|
|
10975
10964
|
@if (this.selection.displayOptionControl === configurationDisplayOption.Button) {
|
|
10976
10965
|
<co-product-configurator-selector-option-button
|
|
@@ -11019,7 +11008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11019
11008
|
@if (
|
|
11020
11009
|
this.largeTileOptions.includes(this.selection.displayOptionControl)
|
|
11021
11010
|
|| this.smallTileOptions.includes(this.selection.displayOptionControl)) {
|
|
11022
|
-
@for (child of visibleAnswers; track child) {
|
|
11011
|
+
@for (child of visibleAnswers; track child.id) {
|
|
11023
11012
|
<div class="selector-option-wrapper" [class.active]="child.selected ==='F'">
|
|
11024
11013
|
<co-product-configurator-selector-option-tile
|
|
11025
11014
|
[option]="child"
|
|
@@ -11554,7 +11543,6 @@ class ProductConfiguratorComponent {
|
|
|
11554
11543
|
showLabel = true;
|
|
11555
11544
|
canClose = true;
|
|
11556
11545
|
customDimensions = false;
|
|
11557
|
-
showSaveAndLoadConfiguration;
|
|
11558
11546
|
showChange = new EventEmitter();
|
|
11559
11547
|
answerChosen = new EventEmitter();
|
|
11560
11548
|
valutaSymbol = '€'; // TODO this should be a setting
|
|
@@ -11582,7 +11570,11 @@ class ProductConfiguratorComponent {
|
|
|
11582
11570
|
if (selection) {
|
|
11583
11571
|
this.onSelectionsSummarySelectSelection(selection);
|
|
11584
11572
|
}
|
|
11585
|
-
}), this._eventService.articleReceived.subscribe((article) =>
|
|
11573
|
+
}), this._eventService.articleReceived.subscribe((article) => {
|
|
11574
|
+
if (article) {
|
|
11575
|
+
this._handleArticleReceived(article);
|
|
11576
|
+
}
|
|
11577
|
+
}), this._eventService.selectionWithAnswersChanged.subscribe((selections) => this._handleSelectionWithAnswersChanged(selections)));
|
|
11586
11578
|
}
|
|
11587
11579
|
ngOnDestroy() {
|
|
11588
11580
|
this._subs.forEach(s => s.unsubscribe());
|
|
@@ -11616,7 +11608,7 @@ class ProductConfiguratorComponent {
|
|
|
11616
11608
|
}
|
|
11617
11609
|
}
|
|
11618
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 });
|
|
11619
|
-
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"
|
|
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: `
|
|
11620
11612
|
<div class="product-configurator-container">
|
|
11621
11613
|
@if (showHeaderInformation) {
|
|
11622
11614
|
<div class="product-configurator-header">
|
|
@@ -11723,8 +11715,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11723
11715
|
type: Input
|
|
11724
11716
|
}], customDimensions: [{
|
|
11725
11717
|
type: Input
|
|
11726
|
-
}], showSaveAndLoadConfiguration: [{
|
|
11727
|
-
type: Input
|
|
11728
11718
|
}], showChange: [{
|
|
11729
11719
|
type: Output
|
|
11730
11720
|
}], answerChosen: [{
|
|
@@ -11739,9 +11729,11 @@ class ConfiguratorComponent {
|
|
|
11739
11729
|
_buildFurnitureService;
|
|
11740
11730
|
_configuratorConnectorService;
|
|
11741
11731
|
showClass = true;
|
|
11732
|
+
show = true;
|
|
11742
11733
|
set sku(value) {
|
|
11734
|
+
this._reset();
|
|
11743
11735
|
this._sku = value;
|
|
11744
|
-
if (this.
|
|
11736
|
+
if (this.loaded) {
|
|
11745
11737
|
this._configuratorEventService.skuSet.next(this._sku);
|
|
11746
11738
|
this._skuSet = true;
|
|
11747
11739
|
}
|
|
@@ -11750,8 +11742,9 @@ class ConfiguratorComponent {
|
|
|
11750
11742
|
return this._sku;
|
|
11751
11743
|
}
|
|
11752
11744
|
set instanceId(value) {
|
|
11745
|
+
this._reset();
|
|
11753
11746
|
this._instanceId = value;
|
|
11754
|
-
if (this.
|
|
11747
|
+
if (this.loaded) {
|
|
11755
11748
|
this._configuratorEventService.instanceIdSet.next(this._instanceId);
|
|
11756
11749
|
this._instanceIdSet = true;
|
|
11757
11750
|
}
|
|
@@ -11785,11 +11778,12 @@ class ConfiguratorComponent {
|
|
|
11785
11778
|
resultHasErrors = false;
|
|
11786
11779
|
showErrorDiagram = false;
|
|
11787
11780
|
configurationResultObject;
|
|
11788
|
-
showFullConfiguration =
|
|
11781
|
+
showFullConfiguration = undefined;
|
|
11789
11782
|
showLiteSelector = false;
|
|
11790
11783
|
showSelections = false;
|
|
11791
11784
|
showAnswers = false;
|
|
11792
11785
|
loaded = false;
|
|
11786
|
+
forceShow = false;
|
|
11793
11787
|
_subs = [];
|
|
11794
11788
|
_loadingFromPreset = false;
|
|
11795
11789
|
_settings;
|
|
@@ -11797,6 +11791,7 @@ class ConfiguratorComponent {
|
|
|
11797
11791
|
_instanceIdSet = false;
|
|
11798
11792
|
_sku;
|
|
11799
11793
|
_skuSet = false;
|
|
11794
|
+
_alreadyReset = false;
|
|
11800
11795
|
constructor(settingsService, loaderService, _configuratorEventService, _configuringService, _buildFurnitureService, _configuratorConnectorService) {
|
|
11801
11796
|
this.settingsService = settingsService;
|
|
11802
11797
|
this.loaderService = loaderService;
|
|
@@ -11804,7 +11799,11 @@ class ConfiguratorComponent {
|
|
|
11804
11799
|
this._configuringService = _configuringService;
|
|
11805
11800
|
this._buildFurnitureService = _buildFurnitureService;
|
|
11806
11801
|
this._configuratorConnectorService = _configuratorConnectorService;
|
|
11807
|
-
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.
|
|
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) => {
|
|
11808
11807
|
if (initialized) {
|
|
11809
11808
|
this.loaded = true;
|
|
11810
11809
|
if (this._sku && !this._skuSet) {
|
|
@@ -11816,6 +11815,12 @@ class ConfiguratorComponent {
|
|
|
11816
11815
|
this._instanceIdSet = true;
|
|
11817
11816
|
}
|
|
11818
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;
|
|
11819
11824
|
}));
|
|
11820
11825
|
}
|
|
11821
11826
|
ngOnInit() {
|
|
@@ -11864,9 +11869,7 @@ class ConfiguratorComponent {
|
|
|
11864
11869
|
}
|
|
11865
11870
|
_handleAnswerCountReceived(answerCount) {
|
|
11866
11871
|
this.showAnswers = answerCount > 0;
|
|
11867
|
-
|
|
11868
|
-
this.showLiteSelector = !this._loadingFromPreset;
|
|
11869
|
-
}
|
|
11872
|
+
this.forceShow = this.showAnswers;
|
|
11870
11873
|
}
|
|
11871
11874
|
_handleBuildFinished(result) {
|
|
11872
11875
|
if (!result) {
|
|
@@ -11881,20 +11884,24 @@ class ConfiguratorComponent {
|
|
|
11881
11884
|
this.showErrorDiagram = true;
|
|
11882
11885
|
}
|
|
11883
11886
|
}
|
|
11884
|
-
|
|
11885
|
-
if (
|
|
11886
|
-
|
|
11887
|
-
}
|
|
11888
|
-
else if (template === ConfigurationTemplate.showFullConfiguration) {
|
|
11889
|
-
this.showFullConfiguration = true;
|
|
11890
|
-
}
|
|
11891
|
-
else {
|
|
11892
|
-
this.showFullConfiguration = false;
|
|
11887
|
+
_reset() {
|
|
11888
|
+
if (this._alreadyReset) {
|
|
11889
|
+
return;
|
|
11893
11890
|
}
|
|
11891
|
+
this._configuratorConnectorService.cleanUp();
|
|
11892
|
+
this.showFullConfiguration = undefined;
|
|
11893
|
+
this._configuratorEventService.skuSet.next(undefined);
|
|
11894
|
+
this._configuratorEventService.instanceIdSet.next(undefined);
|
|
11895
|
+
this._configuratorEventService.instanceSet.next(undefined);
|
|
11896
|
+
this._configuratorEventService.articleNotFound.next(undefined);
|
|
11897
|
+
this._configuratorEventService.selectionWithAnswersChanged.next(undefined);
|
|
11898
|
+
this._configuratorEventService.articleReceived.next(undefined);
|
|
11899
|
+
this._configuratorEventService.buildFinished.next(undefined);
|
|
11900
|
+
this._alreadyReset = true;
|
|
11894
11901
|
}
|
|
11895
11902
|
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 });
|
|
11896
|
-
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: `
|
|
11897
|
-
@if (loaded) {
|
|
11903
|
+
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: `
|
|
11904
|
+
@if (loaded && (show || forceShow)) {
|
|
11898
11905
|
@if (showProgressBar) {
|
|
11899
11906
|
<co-progress-bar></co-progress-bar>
|
|
11900
11907
|
}
|
|
@@ -11907,7 +11914,7 @@ class ConfiguratorComponent {
|
|
|
11907
11914
|
(closeErrorDialoag)="handleCloseErrorDialog()"
|
|
11908
11915
|
></co-configurator-error-dialog>
|
|
11909
11916
|
}
|
|
11910
|
-
@if (
|
|
11917
|
+
@if (showFullConfiguration === false) {
|
|
11911
11918
|
<co-lite-selector
|
|
11912
11919
|
class="floating"
|
|
11913
11920
|
[animateSlideout]="animateSlideout"
|
|
@@ -11927,14 +11934,14 @@ class ConfiguratorComponent {
|
|
|
11927
11934
|
}
|
|
11928
11935
|
|
|
11929
11936
|
}
|
|
11930
|
-
`, 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"
|
|
11937
|
+
`, 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 });
|
|
11931
11938
|
}
|
|
11932
11939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ConfiguratorComponent, decorators: [{
|
|
11933
11940
|
type: Component,
|
|
11934
11941
|
args: [{
|
|
11935
11942
|
selector: 'co-configurator',
|
|
11936
11943
|
template: `
|
|
11937
|
-
@if (loaded) {
|
|
11944
|
+
@if (loaded && (show || forceShow)) {
|
|
11938
11945
|
@if (showProgressBar) {
|
|
11939
11946
|
<co-progress-bar></co-progress-bar>
|
|
11940
11947
|
}
|
|
@@ -11947,7 +11954,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11947
11954
|
(closeErrorDialoag)="handleCloseErrorDialog()"
|
|
11948
11955
|
></co-configurator-error-dialog>
|
|
11949
11956
|
}
|
|
11950
|
-
@if (
|
|
11957
|
+
@if (showFullConfiguration === false) {
|
|
11951
11958
|
<co-lite-selector
|
|
11952
11959
|
class="floating"
|
|
11953
11960
|
[animateSlideout]="animateSlideout"
|
|
@@ -11974,6 +11981,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11974
11981
|
}], ctorParameters: () => [{ type: ConfiguratorSettingsService }, { type: LoaderService }, { type: ConfiguratorEventService }, { type: ConfiguringService }, { type: SwitchBuildFurnitureService }, { type: ConfiguratorConnectorService }], propDecorators: { showClass: [{
|
|
11975
11982
|
type: HostBinding,
|
|
11976
11983
|
args: ['class.co-configurator']
|
|
11984
|
+
}], show: [{
|
|
11985
|
+
type: Input
|
|
11977
11986
|
}], sku: [{
|
|
11978
11987
|
type: Input
|
|
11979
11988
|
}], instanceId: [{
|
|
@@ -14285,6 +14294,9 @@ class SceneButtonUtils {
|
|
|
14285
14294
|
if (selection.hdecoPositioning !== 'N') {
|
|
14286
14295
|
const len = selection.decoNode ? selection.decoNode.connectors.length : 0;
|
|
14287
14296
|
for (let i = 0; i < len; i++) {
|
|
14297
|
+
if (selection.decoNode.connectors[i] === null) {
|
|
14298
|
+
return;
|
|
14299
|
+
}
|
|
14288
14300
|
const conObject = this._getConnectorObject(child, selection.decoNode.connectors[i].connector);
|
|
14289
14301
|
const conObjectParent = ObjectUtils.GetParentItem(conObject, CustomObject3D);
|
|
14290
14302
|
const existingButton = result.find((eab) => {
|
|
@@ -15277,7 +15289,6 @@ class ConfiguratorSceneComponent {
|
|
|
15277
15289
|
_floorService;
|
|
15278
15290
|
canvasElement;
|
|
15279
15291
|
elementToolbar;
|
|
15280
|
-
showSceneBuildLoader = true;
|
|
15281
15292
|
showClass = true;
|
|
15282
15293
|
totalSteps = 8;
|
|
15283
15294
|
currentStep = 0;
|
|
@@ -15290,6 +15301,7 @@ class ConfiguratorSceneComponent {
|
|
|
15290
15301
|
showElementToolbar = false;
|
|
15291
15302
|
animateEditAddButtons = false;
|
|
15292
15303
|
enabledDownloadDialog = false;
|
|
15304
|
+
showSceneBuildLoader;
|
|
15293
15305
|
development = false;
|
|
15294
15306
|
showDownloadDialog = false;
|
|
15295
15307
|
showCameraSettingsDialog = false;
|
|
@@ -15328,6 +15340,12 @@ class ConfiguratorSceneComponent {
|
|
|
15328
15340
|
if (started) {
|
|
15329
15341
|
this.setSceneBuildLoader = started;
|
|
15330
15342
|
}
|
|
15343
|
+
}), this._eventService.addedToScene.subscribe((result) => {
|
|
15344
|
+
if (result) {
|
|
15345
|
+
if (this.currentStep !== this.totalSteps) {
|
|
15346
|
+
this._loaderProcessUpdate(this.totalSteps);
|
|
15347
|
+
}
|
|
15348
|
+
}
|
|
15331
15349
|
}), this._settingsService.settingsLoaded.subscribe((loaded) => {
|
|
15332
15350
|
if (loaded && this._settingsService.settings && this._settingsService.settings.options) {
|
|
15333
15351
|
if (this._settingsService.settings.options.showDownloadButton) {
|
|
@@ -15341,6 +15359,7 @@ class ConfiguratorSceneComponent {
|
|
|
15341
15359
|
this._createCameraSettingsButton();
|
|
15342
15360
|
}
|
|
15343
15361
|
this.development = this._settingsService.settings.options.development;
|
|
15362
|
+
this.showSceneBuildLoader = this._settingsService.settings.options.showSceneBuildLoader;
|
|
15344
15363
|
}
|
|
15345
15364
|
}));
|
|
15346
15365
|
}
|
|
@@ -15555,7 +15574,7 @@ class ConfiguratorSceneComponent {
|
|
|
15555
15574
|
this._dimensionsService.enabled = !this._dimensionsService.enabled;
|
|
15556
15575
|
}
|
|
15557
15576
|
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 });
|
|
15558
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: ConfiguratorSceneComponent, isStandalone: false, selector: "co-configurator-scene",
|
|
15577
|
+
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: `
|
|
15559
15578
|
@if (showSceneBuildLoader && setSceneBuildLoader) {
|
|
15560
15579
|
<co-configurator-scene-loader
|
|
15561
15580
|
[loaderProgress]="loaderProgress">
|
|
@@ -15651,8 +15670,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
15651
15670
|
}], elementToolbar: [{
|
|
15652
15671
|
type: ViewChild,
|
|
15653
15672
|
args: [ElementToolbarComponent]
|
|
15654
|
-
}], showSceneBuildLoader: [{
|
|
15655
|
-
type: Input
|
|
15656
15673
|
}], showClass: [{
|
|
15657
15674
|
type: HostBinding,
|
|
15658
15675
|
args: ['class.co-configurator-scene']
|