@colijnit/product 258.1.4 → 258.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,9 +2,6 @@ import * as i0 from '@angular/core';
2
2
  import { Directive, Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, Renderer2, ChangeDetectorRef, ViewChild, ElementRef, Pipe, NgModule, ChangeDetectionStrategy, HostListener, HostBinding, SecurityContext, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID, NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import { __awaiter } from 'tslib';
4
4
  import { Subject, BehaviorSubject } from 'rxjs';
5
- import * as i1 from '@angular/common/http';
6
- import { HttpClient } from '@angular/common/http';
7
- import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
8
5
  import { Options } from '@colijnit/ioneconnector/build/model/options';
9
6
  import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
10
7
  import { SuperArticle } from '@colijnit/articleapi/build/model/super-article';
@@ -16,6 +13,9 @@ import { Transaction } from '@colijnit/transactionapi/build/transaction';
16
13
  import { MainApi } from '@colijnit/mainapi';
17
14
  import { TransactionInfoResponse } from '@colijnit/transactionapi/build/model/transaction-info-response.bo';
18
15
  import { ArticleListObjectExtended } from '@colijnit/articleapi/build/model/article-list-object-extended.bo';
16
+ import * as i1 from '@angular/common/http';
17
+ import { HttpClient } from '@angular/common/http';
18
+ import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
19
19
  import { CommonModule, isPlatformBrowser } from '@angular/common';
20
20
  import { trigger, state, style, transition, animate } from '@angular/animations';
21
21
  import * as i1$1 from '@angular/platform-browser';
@@ -30,8 +30,48 @@ class Version {
30
30
  constructor() {
31
31
  this.name = "@colijnit/product";
32
32
  this.description = "Product detail page project for iOne";
33
- this.symVer = "258.1.4";
34
- this.publishDate = "23-6-2025 16:38:29";
33
+ this.symVer = "258.1.5";
34
+ this.publishDate = "9-7-2025 14:07:55";
35
+ }
36
+ }
37
+
38
+ class SettingsOptions {
39
+ constructor() {
40
+ this.showStockStatus = false;
41
+ this.showZoomButton = false;
42
+ this.showTagFilter = false;
43
+ this.showAsConfigured = false;
44
+ this.inlineAnswers = false;
45
+ this.showArButton = false;
46
+ this.arEnabled = false;
47
+ this.vrEnabled = false;
48
+ }
49
+ }
50
+
51
+ var RenderModes;
52
+ (function (RenderModes) {
53
+ RenderModes["RenderRoom"] = "render_room";
54
+ RenderModes["RenderShop"] = "render_shop";
55
+ RenderModes["RenderIone"] = "render_ione";
56
+ })(RenderModes || (RenderModes = {}));
57
+
58
+ class RenderParameters$1 {
59
+ constructor() {
60
+ this.host = "";
61
+ this.port = 0;
62
+ this.secure = false;
63
+ this.renderMode = RenderModes.RenderShop;
64
+ }
65
+ }
66
+
67
+ class ProductSettings extends Options {
68
+ constructor() {
69
+ super(...arguments);
70
+ this.session = undefined;
71
+ this.createWebOrder = true;
72
+ this.currencySymbol = '€';
73
+ this.options = new SettingsOptions();
74
+ this.renderParameters = new RenderParameters$1();
35
75
  }
36
76
  }
37
77
 
@@ -60,6 +100,172 @@ ProductEventService.decorators = [
60
100
  { type: Injectable }
61
101
  ];
62
102
 
103
+ // Sole responsibility is simply to wrap around a colijn.Connector to create a stable inner interface to the library in a 1:1 method way.
104
+ // Only to be used by the IOneControllerService.
105
+ class ProductConnectorAdapterService {
106
+ constructor(_eventService) {
107
+ this._eventService = _eventService;
108
+ this.showLoader = new Subject();
109
+ this._boFactory = new BusinessObjectFactory();
110
+ this._subs = [];
111
+ }
112
+ ngOnDestroy() {
113
+ this._subs.forEach(s => s.unsubscribe());
114
+ }
115
+ initConnector(options) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ this.articleConnector = new Articles(options);
118
+ yield this.articleConnector.connect();
119
+ this.transactionConnector = new Transaction(options);
120
+ this._subs.push(
121
+ // @ts-ignore
122
+ this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value)));
123
+ });
124
+ }
125
+ setInstance(instanceId) {
126
+ // this.articleConnector.setInstanceToConfigure(instanceId, false);
127
+ }
128
+ getProductBundleSettings(url, upId) {
129
+ return __awaiter(this, void 0, void 0, function* () {
130
+ const tempSettings = new ProductSettings();
131
+ tempSettings.url = url;
132
+ tempSettings.schema = upId.toString();
133
+ const tempMainConnector = new MainApi(tempSettings);
134
+ const response = yield tempMainConnector.getPublicParams(upId);
135
+ if (response) {
136
+ return response.productSettings;
137
+ }
138
+ return "";
139
+ });
140
+ }
141
+ convertArticleFullObjectToArticleExtended(article) {
142
+ if (article) {
143
+ return this._boFactory.makeWithRawBackendData(ArticleListObjectExtended, article);
144
+ }
145
+ }
146
+ getDeliveryPrognosis(goodId, branchNr) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ const deliveryPrognosis = yield this.getSelectorDeliveryDate();
149
+ if (!deliveryPrognosis || !deliveryPrognosis.returnValue) {
150
+ return this.getDeliveryDate2(goodId);
151
+ }
152
+ return deliveryPrognosis;
153
+ });
154
+ }
155
+ getSelectorDeliveryDate() {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ const response = yield this.articleConnector.getSelectorDeliveryDate();
158
+ if (response && response.validationResult && response.validationResult.success) {
159
+ return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
160
+ }
161
+ else {
162
+ return null;
163
+ }
164
+ });
165
+ }
166
+ getArtStockStatus(goodId) {
167
+ return __awaiter(this, void 0, void 0, function* () {
168
+ const response = yield this.articleConnector.getArtStockStatus(goodId);
169
+ if (response && response.validationResult && response.validationResult.success) {
170
+ return response.resultObject;
171
+ }
172
+ else {
173
+ return null;
174
+ }
175
+ });
176
+ }
177
+ getDeliveryDate2(goodId) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ const response = yield this.articleConnector.getDeliveryDate2(goodId);
180
+ if (response && response.validationResult && response.validationResult.success) {
181
+ return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
182
+ }
183
+ else {
184
+ return null;
185
+ }
186
+ });
187
+ }
188
+ getJsonConfiguredArticles(configuratorStatistics) {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ const response = yield this.articleConnector.getJsonConfiguredArticles(configuratorStatistics);
191
+ if (response && response.validationResult && response.validationResult.success) {
192
+ return response.resultObject;
193
+ }
194
+ else {
195
+ return '';
196
+ }
197
+ });
198
+ }
199
+ getJsonArticleFlatTree(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
200
+ return __awaiter(this, void 0, void 0, function* () {
201
+ return this.articleConnector.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId, configuratorStatistics).catch((messages) => {
202
+ this._eventService.errorMessage.next(messages);
203
+ return null;
204
+ });
205
+ });
206
+ }
207
+ getGoodIdFromArticleNr(sku) {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ const response = yield this.articleConnector.getGoodIdFromArticleNr(sku);
210
+ if (response && response.validationResult && response.validationResult.success) {
211
+ return response.resultObject;
212
+ }
213
+ else {
214
+ return null;
215
+ }
216
+ });
217
+ }
218
+ getArticleFullObject(goodId, showLoader = true) {
219
+ return __awaiter(this, void 0, void 0, function* () {
220
+ const response = yield this.articleConnector.getArticleFullObject(goodId, showLoader);
221
+ if (response && response.validationResult && response.validationResult.success) {
222
+ return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject);
223
+ }
224
+ else {
225
+ return null;
226
+ }
227
+ });
228
+ }
229
+ getSuperArticle(id, branch) {
230
+ return __awaiter(this, void 0, void 0, function* () {
231
+ const response = yield this.articleConnector.getSuperArticleQuickSel(id, branch);
232
+ if (response && response.validationResult && response.validationResult.success) {
233
+ return this._boFactory.makeWithRawBackendData(SuperArticle, response.resultObject);
234
+ }
235
+ else {
236
+ return null;
237
+ }
238
+ });
239
+ }
240
+ getDocumentContent(docId, thumbnail = true) {
241
+ return __awaiter(this, void 0, void 0, function* () {
242
+ const response = yield this.articleConnector.getDocumentContent(docId, thumbnail);
243
+ if (response && response.validationResult && response.validationResult.success) {
244
+ return this._boFactory.makeWithRawBackendData(DocumentContent, response.resultObject);
245
+ }
246
+ else {
247
+ return null;
248
+ }
249
+ });
250
+ }
251
+ addWebSessionTransactionLine(transactionUuid, sku, quantity) {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ const response = yield this.transactionConnector.addWebSessionTransactionLine(transactionUuid, sku, quantity);
254
+ if (response && response.validationResult && response.validationResult.success) {
255
+ const infoResponse = this._boFactory.makeWithRawBackendData(TransactionInfoResponse, response.resultObject);
256
+ return infoResponse.transactionInfo.uuid;
257
+ }
258
+ return "";
259
+ });
260
+ }
261
+ }
262
+ ProductConnectorAdapterService.decorators = [
263
+ { type: Injectable }
264
+ ];
265
+ ProductConnectorAdapterService.ctorParameters = () => [
266
+ { type: ProductEventService }
267
+ ];
268
+
63
269
  class JsonUtilsService {
64
270
  readJsonFile(filePath) {
65
271
  return __awaiter(this, void 0, void 0, function* () {
@@ -280,46 +486,6 @@ DictionaryService.ctorParameters = () => [
280
486
  { type: JsonUtilsService }
281
487
  ];
282
488
 
283
- class SettingsOptions {
284
- constructor() {
285
- this.showStockStatus = false;
286
- this.showZoomButton = false;
287
- this.showTagFilter = false;
288
- this.showAsConfigured = false;
289
- this.inlineAnswers = false;
290
- this.showArButton = false;
291
- this.arEnabled = false;
292
- this.vrEnabled = false;
293
- }
294
- }
295
-
296
- var RenderModes;
297
- (function (RenderModes) {
298
- RenderModes["RenderRoom"] = "render_room";
299
- RenderModes["RenderShop"] = "render_shop";
300
- RenderModes["RenderIone"] = "render_ione";
301
- })(RenderModes || (RenderModes = {}));
302
-
303
- class RenderParameters$1 {
304
- constructor() {
305
- this.host = "";
306
- this.port = 0;
307
- this.secure = false;
308
- this.renderMode = RenderModes.RenderShop;
309
- }
310
- }
311
-
312
- class ProductSettings extends Options {
313
- constructor() {
314
- super(...arguments);
315
- this.session = undefined;
316
- this.createWebOrder = true;
317
- this.currencySymbol = '€';
318
- this.options = new SettingsOptions();
319
- this.renderParameters = new RenderParameters$1();
320
- }
321
- }
322
-
323
489
  class ProductSettingsService {
324
490
  constructor(_jsonUtilsService, _dictionaryService) {
325
491
  this._jsonUtilsService = _jsonUtilsService;
@@ -399,180 +565,6 @@ ProductSettingsService.ctorParameters = () => [
399
565
  { type: DictionaryService }
400
566
  ];
401
567
 
402
- // Sole responsibility is simply to wrap around a colijn.Connector to create a stable inner interface to the library in a 1:1 method way.
403
- // Only to be used by the IOneControllerService.
404
- class ProductConnectorAdapterService {
405
- constructor(_eventService) {
406
- this._eventService = _eventService;
407
- this.showLoader = new Subject();
408
- this._boFactory = new BusinessObjectFactory();
409
- this._subs = [];
410
- }
411
- ngOnDestroy() {
412
- this._subs.forEach(s => s.unsubscribe());
413
- }
414
- initConnector(options) {
415
- return __awaiter(this, void 0, void 0, function* () {
416
- this.articleConnector = new Articles(options);
417
- yield this.articleConnector.connect();
418
- this.transactionConnector = new Transaction(options);
419
- this._subs.push(
420
- // @ts-ignore
421
- this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value)));
422
- });
423
- }
424
- setInstance(instanceId) {
425
- // this.articleConnector.setInstanceToConfigure(instanceId, false);
426
- }
427
- getProductBundleSettings(url, upId) {
428
- return __awaiter(this, void 0, void 0, function* () {
429
- const tempSettings = new ProductSettings();
430
- tempSettings.url = url;
431
- tempSettings.schema = upId.toString();
432
- const tempMainConnector = new MainApi(tempSettings);
433
- const response = yield tempMainConnector.getPublicParams(upId);
434
- if (response) {
435
- return response.productSettings;
436
- }
437
- return "";
438
- });
439
- }
440
- convertArticleFullObjectToArticleExtended(article) {
441
- if (article) {
442
- return this._boFactory.makeWithRawBackendData(ArticleListObjectExtended, article);
443
- }
444
- }
445
- getDeliveryPrognosis(goodId, branchNr) {
446
- return __awaiter(this, void 0, void 0, function* () {
447
- const deliveryPrognosis = yield this.getSelectorDeliveryDate();
448
- if (!deliveryPrognosis || !deliveryPrognosis.returnValue) {
449
- return this.getDeliveryDate2(goodId);
450
- }
451
- return deliveryPrognosis;
452
- });
453
- }
454
- getSelectorDeliveryDate() {
455
- return __awaiter(this, void 0, void 0, function* () {
456
- const response = yield this.articleConnector.getSelectorDeliveryDate();
457
- if (response && response.validationResult && response.validationResult.success) {
458
- return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
459
- }
460
- else {
461
- return null;
462
- }
463
- });
464
- }
465
- getArtStockStatus(goodId) {
466
- return __awaiter(this, void 0, void 0, function* () {
467
- const response = yield this.articleConnector.getArtStockStatus(goodId);
468
- if (response && response.validationResult && response.validationResult.success) {
469
- return response.resultObject;
470
- }
471
- else {
472
- return null;
473
- }
474
- });
475
- }
476
- getDeliveryDate2(goodId) {
477
- return __awaiter(this, void 0, void 0, function* () {
478
- const response = yield this.articleConnector.getDeliveryDate2(goodId);
479
- if (response && response.validationResult && response.validationResult.success) {
480
- return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
481
- }
482
- else {
483
- return null;
484
- }
485
- });
486
- }
487
- getJsonConfiguredArticles(configuratorStatistics) {
488
- return __awaiter(this, void 0, void 0, function* () {
489
- const response = yield this.articleConnector.getJsonConfiguredArticles(configuratorStatistics);
490
- if (response && response.validationResult && response.validationResult.success) {
491
- return response.resultObject;
492
- }
493
- else {
494
- return '';
495
- }
496
- });
497
- }
498
- getJsonArticleFlatTree(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
499
- return __awaiter(this, void 0, void 0, function* () {
500
- return this.articleConnector.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId, configuratorStatistics).catch((messages) => {
501
- this._eventService.errorMessage.next(messages);
502
- return null;
503
- });
504
- });
505
- }
506
- getGeneratedArtDirectly(goodId, showLoader) {
507
- return __awaiter(this, void 0, void 0, function* () {
508
- return this.articleConnector.getGeneratedArtDirectly(goodId, showLoader).catch((messages) => {
509
- this._eventService.errorMessage.next(messages);
510
- return null;
511
- });
512
- });
513
- }
514
- getGoodIdFromArticleNr(sku) {
515
- return __awaiter(this, void 0, void 0, function* () {
516
- const response = yield this.articleConnector.getGoodIdFromArticleNr(sku);
517
- if (response && response.validationResult && response.validationResult.success) {
518
- return response.resultObject;
519
- }
520
- else {
521
- return null;
522
- }
523
- });
524
- }
525
- getArticleFullObject(goodId, showLoader = true) {
526
- return __awaiter(this, void 0, void 0, function* () {
527
- const response = yield this.articleConnector.getArticleFullObject(goodId, showLoader);
528
- if (response && response.validationResult && response.validationResult.success) {
529
- return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject);
530
- }
531
- else {
532
- return null;
533
- }
534
- });
535
- }
536
- getSuperArticle(id, branch) {
537
- return __awaiter(this, void 0, void 0, function* () {
538
- const response = yield this.articleConnector.getSuperArticleQuickSel(id, branch);
539
- if (response && response.validationResult && response.validationResult.success) {
540
- return this._boFactory.makeWithRawBackendData(SuperArticle, response.resultObject);
541
- }
542
- else {
543
- return null;
544
- }
545
- });
546
- }
547
- getDocumentContent(docId, thumbnail = true) {
548
- return __awaiter(this, void 0, void 0, function* () {
549
- const response = yield this.articleConnector.getDocumentContent(docId, thumbnail);
550
- if (response && response.validationResult && response.validationResult.success) {
551
- return this._boFactory.makeWithRawBackendData(DocumentContent, response.resultObject);
552
- }
553
- else {
554
- return null;
555
- }
556
- });
557
- }
558
- addWebSessionTransactionLine(transactionUuid, sku, quantity) {
559
- return __awaiter(this, void 0, void 0, function* () {
560
- const response = yield this.transactionConnector.addWebSessionTransactionLine(transactionUuid, sku, quantity);
561
- if (response && response.validationResult && response.validationResult.success) {
562
- const infoResponse = this._boFactory.makeWithRawBackendData(TransactionInfoResponse, response.resultObject);
563
- return infoResponse.transactionInfo.uuid;
564
- }
565
- return "";
566
- });
567
- }
568
- }
569
- ProductConnectorAdapterService.decorators = [
570
- { type: Injectable }
571
- ];
572
- ProductConnectorAdapterService.ctorParameters = () => [
573
- { type: ProductEventService }
574
- ];
575
-
576
568
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
577
569
  class ProductConnectorService {
578
570
  constructor(_adapterService, _settingsService) {
@@ -656,9 +648,6 @@ class ProductConnectorService {
656
648
  getJsonArticleFlatTree(goodId, goodType, quantity, externalSource = false, showLoader = true, configuratorStatistics) {
657
649
  return this._adapterService.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, this._instanceId, configuratorStatistics);
658
650
  }
659
- getGeneratedArtDirectly(goodId, showLoader = true) {
660
- return this._adapterService.getGeneratedArtDirectly(goodId, showLoader);
661
- }
662
651
  addWebSessionTransactionLine(transactionUuid, sku, quantity) {
663
652
  return __awaiter(this, void 0, void 0, function* () {
664
653
  return yield this._adapterService.addWebSessionTransactionLine(transactionUuid, sku, quantity);
@@ -676,8 +665,43 @@ ProductConnectorService.ctorParameters = () => [
676
665
  { type: ProductSettingsService }
677
666
  ];
678
667
 
668
+ class RootStorageObject {
669
+ }
670
+ class LocalStorageService {
671
+ constructor() {
672
+ this.storage = localStorage;
673
+ this._appRoot = "web-order";
674
+ this._storageObj = new RootStorageObject();
675
+ this._initLocalStorageObj();
676
+ }
677
+ save() {
678
+ this.storage.setItem(this._appRoot, JSON.stringify(this._storageObj));
679
+ }
680
+ clear() {
681
+ this.storage.clear();
682
+ }
683
+ set id(id) {
684
+ this._storageObj.id = id;
685
+ this.save();
686
+ }
687
+ get id() {
688
+ return this._storageObj ? this._storageObj.id : "";
689
+ }
690
+ _initLocalStorageObj() {
691
+ this._storageObj = JSON.parse(this.storage.getItem(this._appRoot)) || this._storageObj;
692
+ this.save();
693
+ }
694
+ }
695
+ LocalStorageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalStorageService_Factory() { return new LocalStorageService(); }, token: LocalStorageService, providedIn: "root" });
696
+ LocalStorageService.decorators = [
697
+ { type: Injectable, args: [{
698
+ providedIn: 'root'
699
+ },] }
700
+ ];
701
+ LocalStorageService.ctorParameters = () => [];
702
+
679
703
  class IoneProductComponent {
680
- constructor(_appEventService, _settingsService) {
704
+ constructor(_appEventService, _settingsService, _productConnectorService, _localStorageService) {
681
705
  // this.sku = 'CF-HILL';
682
706
  // this.sku = 'CF-ALMADA';
683
707
  // this.sku = 'CF-39904ANT';
@@ -695,8 +719,11 @@ class IoneProductComponent {
695
719
  // this.sku = "1000612725";
696
720
  this._appEventService = _appEventService;
697
721
  this._settingsService = _settingsService;
722
+ this._productConnectorService = _productConnectorService;
723
+ this._localStorageService = _localStorageService;
698
724
  this.enableRenderCarousel = false;
699
725
  this.handleAddArticleInternally = true;
726
+ this.handleAddToCartInternally = false;
700
727
  this.onAddToCart = new EventEmitter();
701
728
  this.forceRenderImage = new EventEmitter();
702
729
  this.getRenderForRenderCarousel = new EventEmitter();
@@ -748,7 +775,31 @@ class IoneProductComponent {
748
775
  }
749
776
  _handleAddToCart(data) {
750
777
  return __awaiter(this, void 0, void 0, function* () {
751
- this.onAddToCart.emit(data);
778
+ if (this.handleAddToCartInternally) {
779
+ if (data && data.article) {
780
+ if (typeof data.article === 'string') {
781
+ const article = JSON.parse(data.article);
782
+ if (article.selectorData && article.selectorData.compositions) { // configured (frozen) article
783
+ const transactionId = yield this._productConnectorService.addWebSessionTransactionLine(this._localStorageService.id, article.selectorData.compositions[0].compositionArticleNo, data.quantity);
784
+ if (transactionId) {
785
+ this._localStorageService.id = transactionId;
786
+ }
787
+ }
788
+ }
789
+ else { // flat (simple) article
790
+ if (data.article.hasOwnProperty('articleNr')) {
791
+ const transactionId = yield this._productConnectorService.addWebSessionTransactionLine(this._localStorageService.id, data.article['articleNr'], data.quantity);
792
+ if (transactionId) {
793
+ this._localStorageService.id = transactionId;
794
+ }
795
+ }
796
+ }
797
+ this.onAddToCart.next(data);
798
+ }
799
+ }
800
+ else {
801
+ this.onAddToCart.emit(data);
802
+ }
752
803
  });
753
804
  }
754
805
  openStock() {
@@ -782,7 +833,9 @@ IoneProductComponent.decorators = [
782
833
  ];
783
834
  IoneProductComponent.ctorParameters = () => [
784
835
  { type: ProductEventService },
785
- { type: ProductSettingsService }
836
+ { type: ProductSettingsService },
837
+ { type: ProductConnectorService },
838
+ { type: LocalStorageService }
786
839
  ];
787
840
  IoneProductComponent.propDecorators = {
788
841
  sku: [{ type: Input }],
@@ -791,6 +844,7 @@ IoneProductComponent.propDecorators = {
791
844
  enableRenderCarousel: [{ type: Input }],
792
845
  settings: [{ type: Input }],
793
846
  handleAddArticleInternally: [{ type: Input }],
847
+ handleAddToCartInternally: [{ type: Input }],
794
848
  onAddToCart: [{ type: Output }],
795
849
  forceRenderImage: [{ type: Output }],
796
850
  getRenderForRenderCarousel: [{ type: Output }],
@@ -1040,8 +1094,7 @@ class ProductPageComponent {
1040
1094
  this._ione.getFullArticle(this._sku).then((article) => {
1041
1095
  this.article = article;
1042
1096
  if (this.article) {
1043
- this.configurable = this.article.goodType === 'B' && (this.article.isConfigurable || this.article.isConfigurable === undefined);
1044
- // this.configurable = this.article.goodType === 'B';
1097
+ this.configurable = this.article.goodType === 'B';
1045
1098
  if (this.configurable) {
1046
1099
  this.showAddToCart = false;
1047
1100
  this.currentView = SelectorType.TwoD;
@@ -1074,7 +1127,7 @@ class ProductPageComponent {
1074
1127
  ProductPageComponent.decorators = [
1075
1128
  { type: Component, args: [{
1076
1129
  selector: 'app-product-page',
1077
- template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n\r\n <app-image-carousel\r\n *ngIf=\"!enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [images]=\"article?.images\"\r\n [showRefresh]=\"configurable && threeD\">\r\n </app-image-carousel>\r\n\r\n <app-render-carousel\r\n *ngIf=\"enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [article]=\"article\">\r\n </app-render-carousel>\r\n\r\n <ng-container *ngIf=\"settingsLoaded && this.configurable\">\r\n <threed-configurator\r\n #configurator\r\n class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n </threed-configurator>\r\n </ng-container>\r\n\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\"\r\n [class.show-selections]=\"configuring\"\r\n [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n (onReadyToRender)=\"appEventService.onReadyToRender.next($event.detail)\"\r\n (onRenderImageReceived)=\"appEventService.onRenderImageReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n <!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n <!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
1130
+ template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n\r\n <app-image-carousel\r\n *ngIf=\"!enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [images]=\"article?.images\"\r\n [showRefresh]=\"configurable && threeD\">\r\n </app-image-carousel>\r\n\r\n <app-render-carousel\r\n *ngIf=\"enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [article]=\"article\">\r\n </app-render-carousel>\r\n\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator\r\n #configurator\r\n class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n </threed-configurator>\r\n </ng-container>\r\n\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\"\r\n [class.show-selections]=\"configuring\"\r\n [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n (onReadyToRender)=\"appEventService.onReadyToRender.next($event.detail)\"\r\n (onRenderImageReceived)=\"appEventService.onRenderImageReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n <!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n <!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
1078
1131
  animations: [
1079
1132
  trigger('toggleFullScreen', [
1080
1133
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -1729,12 +1782,11 @@ ProductPriceModule.decorators = [
1729
1782
  ];
1730
1783
 
1731
1784
  class ProductAddtocartComponent {
1732
- constructor(iconCache, _ioneControllerService, _appEventService, _settingsService, _productConnectorAdapterService) {
1785
+ constructor(iconCache, _ioneControllerService, _appEventService, _settingsService) {
1733
1786
  this.iconCache = iconCache;
1734
1787
  this._ioneControllerService = _ioneControllerService;
1735
1788
  this._appEventService = _appEventService;
1736
1789
  this._settingsService = _settingsService;
1737
- this._productConnectorAdapterService = _productConnectorAdapterService;
1738
1790
  this.icon = IconEnum;
1739
1791
  this.createFrozenArticle = true;
1740
1792
  this.configurable = false;
@@ -1774,19 +1826,9 @@ class ProductAddtocartComponent {
1774
1826
  return __awaiter(this, void 0, void 0, function* () {
1775
1827
  if (this.createFrozenArticle) {
1776
1828
  if (this.article.goodType === 'B') {
1777
- if (this.article.isConfigurable) {
1778
- const article = yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity });
1779
- if (article) {
1780
- this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
1781
- }
1782
- }
1783
- else {
1784
- const generatedGoodId = yield this._getGeneratedArtDirectly(this.article.goodId);
1785
- if (generatedGoodId) {
1786
- const articleFull = yield this._productConnectorAdapterService.getArticleFullObject(generatedGoodId, true);
1787
- const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(articleFull);
1788
- this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
1789
- }
1829
+ const article = yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity });
1830
+ if (article) {
1831
+ this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
1790
1832
  }
1791
1833
  }
1792
1834
  else {
@@ -1825,11 +1867,6 @@ class ProductAddtocartComponent {
1825
1867
  return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, !!this.externalSource, true, configuratorStatistics);
1826
1868
  });
1827
1869
  }
1828
- _getGeneratedArtDirectly(goodId) {
1829
- return __awaiter(this, void 0, void 0, function* () {
1830
- return yield this._ioneControllerService.getGeneratedArtDirectly(goodId, true);
1831
- });
1832
- }
1833
1870
  }
1834
1871
  ProductAddtocartComponent.decorators = [
1835
1872
  { type: Component, args: [{
@@ -1872,8 +1909,7 @@ ProductAddtocartComponent.ctorParameters = () => [
1872
1909
  { type: IconCacheService },
1873
1910
  { type: ProductConnectorService },
1874
1911
  { type: ProductEventService },
1875
- { type: ProductSettingsService },
1876
- { type: ProductConnectorAdapterService }
1912
+ { type: ProductSettingsService }
1877
1913
  ];
1878
1914
  ProductAddtocartComponent.propDecorators = {
1879
1915
  addToCartButton: [{ type: ViewChild, args: ['addtocartbutton', { read: ElementRef },] }],
@@ -3364,5 +3400,5 @@ IoneProductModule.decorators = [
3364
3400
  * Generated bundle index. Do not edit.
3365
3401
  */
3366
3402
 
3367
- export { IoneProductComponent, IoneProductModule, ProductConnectorAdapterService, ProductConnectorService, ProductEventService, ProductExternalSourceComponent, ProductExternalSourceModule, ProductSettingsService, Version, ProductPageModule as ɵa, ProductSelectorTypeModule as ɵb, ProductInfoTabsModule as ɵba, ProductAdditionalInfoModule as ɵbb, ProductAdditionalInfoComponent as ɵbc, ProductPropertiesModule as ɵbd, ProductPropertiesComponent as ɵbe, ProductDocumentModule as ɵbf, ProductDocumentsComponent as ɵbg, ProductSymbolsModule as ɵbh, ProductSymbolsComponent as ɵbi, ProductInfoTabsComponent as ɵbj, ProductDialogModule as ɵbk, ProductDialogComponent as ɵbl, RenderCarouselModule as ɵbm, RenderCarouselComponent as ɵbn, ProductPageComponent as ɵbo, ProductHdModule as ɵbp, ProductHdComponent as ɵbq, ProductScriptLoaderService as ɵbr, PipeModule as ɵc, LocalizePipe as ɵd, DictionaryService as ɵe, JsonUtilsService as ɵf, ProductSelectorTypeComponent as ɵg, IconCacheService as ɵh, ImageCarouselModule as ɵi, ImageCarouselComponent as ɵj, ProductDescriptionModule as ɵk, ProductDescriptionComponent as ɵl, ProductAdditionalDescriptionModule as ɵm, ProductAdditionalDescriptionComponent as ɵn, ProductPriceModule as ɵo, ProductPriceComponent as ɵp, ProductAddtocartModule as ɵq, ProductAddtocartComponent as ɵr, ProductRelatedModule as ɵs, HeaderModule as ɵt, HeaderComponent as ɵu, ProductRelatedComponent as ɵv, ProductStockModule as ɵw, ProductStockComponent as ɵx, ProductDeliveryModule as ɵy, ProductDeliveryComponent as ɵz };
3403
+ export { IoneProductComponent, IoneProductModule, ProductConnectorAdapterService, ProductConnectorService, ProductEventService, ProductExternalSourceComponent, ProductExternalSourceModule, ProductSettingsService, Version, ProductPageModule as ɵa, ProductSelectorTypeModule as ɵb, ProductInfoTabsModule as ɵba, ProductAdditionalInfoModule as ɵbb, ProductAdditionalInfoComponent as ɵbc, ProductPropertiesModule as ɵbd, ProductPropertiesComponent as ɵbe, ProductDocumentModule as ɵbf, ProductDocumentsComponent as ɵbg, ProductSymbolsModule as ɵbh, ProductSymbolsComponent as ɵbi, ProductInfoTabsComponent as ɵbj, ProductDialogModule as ɵbk, ProductDialogComponent as ɵbl, RenderCarouselModule as ɵbm, RenderCarouselComponent as ɵbn, ProductPageComponent as ɵbo, ProductHdModule as ɵbp, ProductHdComponent as ɵbq, ProductScriptLoaderService as ɵbr, LocalStorageService as ɵbs, PipeModule as ɵc, LocalizePipe as ɵd, DictionaryService as ɵe, JsonUtilsService as ɵf, ProductSelectorTypeComponent as ɵg, IconCacheService as ɵh, ImageCarouselModule as ɵi, ImageCarouselComponent as ɵj, ProductDescriptionModule as ɵk, ProductDescriptionComponent as ɵl, ProductAdditionalDescriptionModule as ɵm, ProductAdditionalDescriptionComponent as ɵn, ProductPriceModule as ɵo, ProductPriceComponent as ɵp, ProductAddtocartModule as ɵq, ProductAddtocartComponent as ɵr, ProductRelatedModule as ɵs, HeaderModule as ɵt, HeaderComponent as ɵu, ProductRelatedComponent as ɵv, ProductStockModule as ɵw, ProductStockComponent as ɵx, ProductDeliveryModule as ɵy, ProductDeliveryComponent as ɵz };
3368
3404
  //# sourceMappingURL=colijnit-product.js.map