@colijnit/product 2.9.0 → 12.0.0

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.
Files changed (142) hide show
  1. package/app/components/core/header/header.module.d.ts +2 -0
  2. package/app/components/image-carousel/image-carousel.module.d.ts +2 -0
  3. package/app/components/product-additional-description/product-additional-description.module.d.ts +2 -0
  4. package/app/components/product-additional-info/product-additional-info.module.d.ts +2 -0
  5. package/app/components/product-addtocart/product-addtocart.module.d.ts +2 -0
  6. package/app/components/product-delivery/product-delivery.module.d.ts +2 -0
  7. package/app/components/product-description/product-description.module.d.ts +2 -0
  8. package/app/components/product-documents/product-document.module.d.ts +2 -0
  9. package/app/components/product-info-tabs/product-info-tabs.module.d.ts +2 -0
  10. package/app/components/product-page/product-page.component.d.ts +3 -1
  11. package/app/components/product-price/product-price.module.d.ts +2 -0
  12. package/app/components/product-properties/product-properties.module.d.ts +2 -0
  13. package/app/components/product-related/product-related.module.d.ts +2 -0
  14. package/app/components/product-selector-type/product-selector-type.module.d.ts +2 -0
  15. package/app/components/product-stock/product-stock.component.d.ts +3 -1
  16. package/app/components/product-stock/product-stock.module.d.ts +2 -0
  17. package/app/components/product-symbols/product-symbols.module.d.ts +2 -0
  18. package/app/ione-product.component.d.ts +6 -2
  19. package/app/ione-product.module.d.ts +0 -2
  20. package/bundles/colijnit-product.umd.js +1467 -998
  21. package/bundles/colijnit-product.umd.js.map +1 -1
  22. package/colijnit-product.d.ts +40 -28
  23. package/colijnit-product.metadata.json +1 -1
  24. package/esm2015/app/components/core/header/header.component.js +21 -17
  25. package/esm2015/app/components/core/header/header.module.js +19 -0
  26. package/esm2015/app/components/image-carousel/image-carousel.component.js +51 -35
  27. package/esm2015/app/components/image-carousel/image-carousel.module.js +23 -0
  28. package/esm2015/app/components/product-additional-description/product-additional-description.component.js +20 -15
  29. package/esm2015/app/components/product-additional-description/product-additional-description.module.js +21 -0
  30. package/esm2015/app/components/product-additional-info/product-additional-info.component.js +22 -20
  31. package/esm2015/app/components/product-additional-info/product-additional-info.module.js +21 -0
  32. package/esm2015/app/components/product-addtocart/product-addtocart.component.js +43 -40
  33. package/esm2015/app/components/product-addtocart/product-addtocart.module.js +24 -0
  34. package/esm2015/app/components/product-delivery/product-delivery.component.js +22 -15
  35. package/esm2015/app/components/product-delivery/product-delivery.module.js +23 -0
  36. package/esm2015/app/components/product-description/product-description.component.js +18 -14
  37. package/esm2015/app/components/product-description/product-description.module.js +19 -0
  38. package/esm2015/app/components/product-documents/product-document.module.js +25 -0
  39. package/esm2015/app/components/product-documents/product-documents.component.js +19 -18
  40. package/esm2015/app/components/product-external-source/product-external-source.component.js +32 -45
  41. package/esm2015/app/components/product-external-source/product-external-source.module.js +17 -19
  42. package/esm2015/app/components/product-info-tabs/product-info-tabs.component.js +36 -18
  43. package/esm2015/app/components/product-info-tabs/product-info-tabs.module.js +29 -0
  44. package/esm2015/app/components/product-page/product-page.component.js +56 -60
  45. package/esm2015/app/components/product-page/product-page.module.js +40 -62
  46. package/esm2015/app/components/product-price/product-price.component.js +26 -19
  47. package/esm2015/app/components/product-price/product-price.module.js +23 -0
  48. package/esm2015/app/components/product-properties/product-properties.component.js +24 -17
  49. package/esm2015/app/components/product-properties/product-properties.module.js +21 -0
  50. package/esm2015/app/components/product-related/product-related.component.js +33 -24
  51. package/esm2015/app/components/product-related/product-related.module.js +24 -0
  52. package/esm2015/app/components/product-selector-type/product-selector-type.component.js +32 -28
  53. package/esm2015/app/components/product-selector-type/product-selector-type.module.js +23 -0
  54. package/esm2015/app/components/product-stock/product-stock.component.js +29 -16
  55. package/esm2015/app/components/product-stock/product-stock.module.js +23 -0
  56. package/esm2015/app/components/product-symbols/product-symbols.component.js +28 -17
  57. package/esm2015/app/components/product-symbols/product-symbols.module.js +26 -0
  58. package/esm2015/app/enum/icon.enum.js +1 -1
  59. package/esm2015/app/enum/language-code.enum.js +1 -1
  60. package/esm2015/app/enum/selector-type.enum.js +1 -1
  61. package/esm2015/app/ione-product.component.js +58 -56
  62. package/esm2015/app/ione-product.module.js +21 -39
  63. package/esm2015/app/model/article-quantity.model.js +1 -1
  64. package/esm2015/app/model/icon.js +1 -1
  65. package/esm2015/app/model/productSettings.js +1 -1
  66. package/esm2015/app/model/render-modes.js +1 -1
  67. package/esm2015/app/model/render-parameters.js +1 -1
  68. package/esm2015/app/model/settings-options.js +1 -1
  69. package/esm2015/app/model/stock-and-delivery.js +1 -1
  70. package/esm2015/app/pipe/localize.pipe.js +8 -12
  71. package/esm2015/app/pipe/pipe.module.js +16 -18
  72. package/esm2015/app/product-version.js +3 -3
  73. package/esm2015/app/service/dictionary.service.js +10 -11
  74. package/esm2015/app/service/icon-cache.service.js +10 -12
  75. package/esm2015/app/service/product-connector-adapter.service.js +8 -8
  76. package/esm2015/app/service/product-connector.service.js +7 -8
  77. package/esm2015/app/service/product-event.service.js +12 -20
  78. package/esm2015/app/service/product-settings.service.js +7 -8
  79. package/esm2015/app/utils/bit-utils.js +1 -1
  80. package/esm2015/app/utils/json-utils.service.js +9 -10
  81. package/esm2015/assets/dictionary/text.properties.js +1 -1
  82. package/esm2015/colijnit-product.js +41 -29
  83. package/esm2015/public_api.js +2 -1
  84. package/fesm2015/colijnit-product.js +1070 -756
  85. package/fesm2015/colijnit-product.js.map +1 -1
  86. package/package.json +15 -18
  87. package/public_api.d.ts +1 -0
  88. package/app/components/product-info/product-info.component.d.ts +0 -14
  89. package/app/service/product-initializer.service.d.ts +0 -6
  90. package/bundles/colijnit-product.umd.min.js +0 -16
  91. package/bundles/colijnit-product.umd.min.js.map +0 -1
  92. package/esm2015/app/components/product-info/product-info.component.js +0 -38
  93. package/esm2015/app/service/product-initializer.service.js +0 -26
  94. package/esm5/app/components/core/header/header.component.js +0 -24
  95. package/esm5/app/components/image-carousel/image-carousel.component.js +0 -170
  96. package/esm5/app/components/product-additional-description/product-additional-description.component.js +0 -59
  97. package/esm5/app/components/product-additional-info/product-additional-info.component.js +0 -142
  98. package/esm5/app/components/product-addtocart/product-addtocart.component.js +0 -133
  99. package/esm5/app/components/product-delivery/product-delivery.component.js +0 -47
  100. package/esm5/app/components/product-description/product-description.component.js +0 -21
  101. package/esm5/app/components/product-documents/product-documents.component.js +0 -31
  102. package/esm5/app/components/product-external-source/product-external-source.component.js +0 -126
  103. package/esm5/app/components/product-external-source/product-external-source.module.js +0 -26
  104. package/esm5/app/components/product-info/product-info.component.js +0 -39
  105. package/esm5/app/components/product-info-tabs/product-info-tabs.component.js +0 -70
  106. package/esm5/app/components/product-page/product-page.component.js +0 -247
  107. package/esm5/app/components/product-page/product-page.module.js +0 -69
  108. package/esm5/app/components/product-price/product-price.component.js +0 -74
  109. package/esm5/app/components/product-properties/product-properties.component.js +0 -60
  110. package/esm5/app/components/product-related/product-related.component.js +0 -78
  111. package/esm5/app/components/product-selector-type/product-selector-type.component.js +0 -54
  112. package/esm5/app/components/product-stock/product-stock.component.js +0 -41
  113. package/esm5/app/components/product-symbols/product-symbols.component.js +0 -43
  114. package/esm5/app/enum/icon.enum.js +0 -19
  115. package/esm5/app/enum/language-code.enum.js +0 -8
  116. package/esm5/app/enum/selector-type.enum.js +0 -7
  117. package/esm5/app/ione-product.component.js +0 -161
  118. package/esm5/app/ione-product.module.js +0 -47
  119. package/esm5/app/model/article-quantity.model.js +0 -7
  120. package/esm5/app/model/icon.js +0 -18
  121. package/esm5/app/model/productSettings.js +0 -18
  122. package/esm5/app/model/render-modes.js +0 -7
  123. package/esm5/app/model/render-parameters.js +0 -12
  124. package/esm5/app/model/settings-options.js +0 -15
  125. package/esm5/app/model/stock-and-delivery.js +0 -10
  126. package/esm5/app/pipe/localize.pipe.js +0 -33
  127. package/esm5/app/pipe/pipe.module.js +0 -23
  128. package/esm5/app/product-version.js +0 -12
  129. package/esm5/app/service/dictionary.service.js +0 -95
  130. package/esm5/app/service/icon-cache.service.js +0 -47
  131. package/esm5/app/service/product-connector-adapter.service.js +0 -248
  132. package/esm5/app/service/product-connector.service.js +0 -141
  133. package/esm5/app/service/product-event.service.js +0 -38
  134. package/esm5/app/service/product-initializer.service.js +0 -29
  135. package/esm5/app/service/product-settings.service.js +0 -107
  136. package/esm5/app/utils/bit-utils.js +0 -22
  137. package/esm5/app/utils/json-utils.service.js +0 -42
  138. package/esm5/assets/dictionary/text.properties.js +0 -67
  139. package/esm5/colijnit-product.js +0 -34
  140. package/esm5/public_api.js +0 -5
  141. package/fesm5/colijnit-product.js +0 -2582
  142. package/fesm5/colijnit-product.js.map +0 -1
@@ -1,5 +1,6 @@
1
- import { __awaiter, __decorate } from 'tslib';
2
- import { ɵɵdefineInjectable, Injectable, ɵɵinject, Output, Directive, EventEmitter, ChangeDetectorRef, Input, Component, ViewEncapsulation, HostBinding, Renderer2, ViewChild, ElementRef, HostListener, Pipe, NgModule, SecurityContext, CUSTOM_ELEMENTS_SCHEMA, APP_INITIALIZER } from '@angular/core';
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Directive, Output, EventEmitter, Component, ViewEncapsulation, ChangeDetectorRef, Input, Renderer2, ViewChild, ElementRef, Pipe, NgModule, HostListener, HostBinding, SecurityContext, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { __awaiter } from 'tslib';
3
4
  import { Subject, BehaviorSubject } from 'rxjs';
4
5
  import { Options } from '@colijnit/ioneconnector/build/model/options';
5
6
  import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
@@ -10,13 +11,15 @@ import { DocumentContent } from '@colijnit/articleapi/build/model/document-conte
10
11
  import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
11
12
  import { Transaction } from '@colijnit/transactionapi/build/transaction';
12
13
  import { MainApi } from '@colijnit/mainapi';
14
+ import * as i1 from '@angular/common/http';
13
15
  import { HttpClient } from '@angular/common/http';
14
16
  import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
15
17
  import { CommonModule } from '@angular/common';
16
- import { DomSanitizer } from '@angular/platform-browser';
17
18
  import { trigger, state, style, transition, animate } from '@angular/animations';
19
+ import * as i1$1 from '@angular/platform-browser';
20
+ import { DomSanitizer } from '@angular/platform-browser';
18
21
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
19
- import { IconModule, LoaderModule, NumberPickerModule, ButtonModule, PriceDisplayPipeModule, InputTextModule, FilesUploadModule, ScrollContainerModule, TileModule, LevelIndicatorModule, ArticleTileModule } from '@colijnit/corecomponents';
22
+ import { LoaderModule, ScrollContainerModule, PriceDisplayPipeModule, NumberPickerModule, ButtonModule, ArticleTileModule, IconModule, FilesUploadModule, TileModule } from '@colijnit/corecomponents';
20
23
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
21
24
 
22
25
  // this file is dynamically created, do not change this
@@ -24,12 +27,12 @@ class Version {
24
27
  constructor() {
25
28
  this.name = "@colijnit/product";
26
29
  this.description = "Product detail page project for iOne";
27
- this.symVer = "2.9.0";
28
- this.publishDate = "7-9-2023 15:18:44";
30
+ this.symVer = "12.0.0";
31
+ this.publishDate = "23-9-2023 11:50:39";
29
32
  }
30
33
  }
31
34
 
32
- let JsonUtilsService = class JsonUtilsService {
35
+ class JsonUtilsService {
33
36
  readJsonFile(filePath) {
34
37
  return __awaiter(this, void 0, void 0, function* () {
35
38
  try {
@@ -47,13 +50,13 @@ let JsonUtilsService = class JsonUtilsService {
47
50
  }
48
51
  });
49
52
  }
50
- };
51
- JsonUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
52
- JsonUtilsService = __decorate([
53
- Injectable({
54
- providedIn: 'root'
55
- })
56
- ], JsonUtilsService);
53
+ }
54
+ JsonUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
55
+ JsonUtilsService.decorators = [
56
+ { type: Injectable, args: [{
57
+ providedIn: 'root'
58
+ },] }
59
+ ];
57
60
 
58
61
  class SettingsOptions {
59
62
  constructor() {
@@ -100,7 +103,7 @@ class ProductSettings {
100
103
 
101
104
  // 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.
102
105
  // Only to be used by the IOneControllerService.
103
- let ProductConnectorAdapterService = class ProductConnectorAdapterService {
106
+ class ProductConnectorAdapterService {
104
107
  constructor() {
105
108
  this.showLoader = new Subject();
106
109
  this._boFactory = new BusinessObjectFactory();
@@ -233,10 +236,11 @@ let ProductConnectorAdapterService = class ProductConnectorAdapterService {
233
236
  return yield this.transactionConnector.getWebSessionSalesOrder();
234
237
  });
235
238
  }
236
- };
237
- ProductConnectorAdapterService = __decorate([
238
- Injectable()
239
- ], ProductConnectorAdapterService);
239
+ }
240
+ ProductConnectorAdapterService.decorators = [
241
+ { type: Injectable }
242
+ ];
243
+ ProductConnectorAdapterService.ctorParameters = () => [];
240
244
 
241
245
  var LanguageCode;
242
246
  (function (LanguageCode) {
@@ -312,7 +316,7 @@ class Dictionary {
312
316
  }
313
317
 
314
318
  // The localization service, providing peers with text translation functionality.
315
- let DictionaryService = class DictionaryService {
319
+ class DictionaryService {
316
320
  constructor(_http, _jsonUtils) {
317
321
  this._http = _http;
318
322
  this._jsonUtils = _jsonUtils;
@@ -383,19 +387,19 @@ let DictionaryService = class DictionaryService {
383
387
  }
384
388
  return text;
385
389
  }
386
- };
390
+ }
391
+ DictionaryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
392
+ DictionaryService.decorators = [
393
+ { type: Injectable, args: [{
394
+ providedIn: 'root'
395
+ },] }
396
+ ];
387
397
  DictionaryService.ctorParameters = () => [
388
398
  { type: HttpClient },
389
399
  { type: JsonUtilsService }
390
- ];
391
- DictionaryService.ɵprov = ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(ɵɵinject(HttpClient), ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
392
- DictionaryService = __decorate([
393
- Injectable({
394
- providedIn: 'root'
395
- })
396
- ], DictionaryService);
400
+ ];
397
401
 
398
- let ProductSettingsService = class ProductSettingsService {
402
+ class ProductSettingsService {
399
403
  constructor(_jsonUtilsService, _dictionaryService) {
400
404
  this._jsonUtilsService = _jsonUtilsService;
401
405
  this._dictionaryService = _dictionaryService;
@@ -461,17 +465,17 @@ let ProductSettingsService = class ProductSettingsService {
461
465
  this.settingsLoaded.next(true);
462
466
  });
463
467
  }
464
- };
468
+ }
469
+ ProductSettingsService.decorators = [
470
+ { type: Injectable }
471
+ ];
465
472
  ProductSettingsService.ctorParameters = () => [
466
473
  { type: JsonUtilsService },
467
474
  { type: DictionaryService }
468
- ];
469
- ProductSettingsService = __decorate([
470
- Injectable()
471
- ], ProductSettingsService);
475
+ ];
472
476
 
473
477
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
474
- let ProductConnectorService = class ProductConnectorService {
478
+ class ProductConnectorService {
475
479
  constructor(_adapterService, _settingsService) {
476
480
  this._adapterService = _adapterService;
477
481
  this._settingsService = _settingsService;
@@ -560,16 +564,16 @@ let ProductConnectorService = class ProductConnectorService {
560
564
  onShowLoaderChange(showLoader) {
561
565
  this._shouldShowLoader = showLoader;
562
566
  }
563
- };
567
+ }
568
+ ProductConnectorService.decorators = [
569
+ { type: Injectable }
570
+ ];
564
571
  ProductConnectorService.ctorParameters = () => [
565
572
  { type: ProductConnectorAdapterService },
566
573
  { type: ProductSettingsService }
567
- ];
568
- ProductConnectorService = __decorate([
569
- Injectable()
570
- ], ProductConnectorService);
574
+ ];
571
575
 
572
- let ProductEventService = class ProductEventService {
576
+ class ProductEventService {
573
577
  constructor() {
574
578
  this.onAddToCart = new Subject();
575
579
  this.onAlternativeClick = new Subject();
@@ -584,25 +588,19 @@ let ProductEventService = class ProductEventService {
584
588
  this.onArticleInfoReceived = new Subject();
585
589
  this.onUpdateProductInfoTab = new Subject();
586
590
  }
587
- };
588
- __decorate([
589
- Output()
590
- ], ProductEventService.prototype, "onAddToCart", void 0);
591
- __decorate([
592
- Output()
593
- ], ProductEventService.prototype, "onAlternativeClick", void 0);
594
- __decorate([
595
- Output()
596
- ], ProductEventService.prototype, "onAddToQuote", void 0);
597
- __decorate([
598
- Output()
599
- ], ProductEventService.prototype, "onForceRenderImage", void 0);
600
- ProductEventService = __decorate([
601
- Directive(),
602
- Injectable()
603
- ], ProductEventService);
591
+ }
592
+ ProductEventService.decorators = [
593
+ { type: Directive },
594
+ { type: Injectable }
595
+ ];
596
+ ProductEventService.propDecorators = {
597
+ onAddToCart: [{ type: Output }],
598
+ onAlternativeClick: [{ type: Output }],
599
+ onAddToQuote: [{ type: Output }],
600
+ onForceRenderImage: [{ type: Output }]
601
+ };
604
602
 
605
- let IoneProductComponent = class IoneProductComponent {
603
+ class IoneProductComponent {
606
604
  constructor(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
607
605
  // this.sku = 'CF-HILL';
608
606
  // this.sku = 'CF-ALMADA';
@@ -627,13 +625,17 @@ let IoneProductComponent = class IoneProductComponent {
627
625
  this.onArticleReceived = new EventEmitter();
628
626
  this.onSelectionsReceived = new EventEmitter();
629
627
  this.onAddToQuote = new EventEmitter();
628
+ this.openStockEvent = new EventEmitter();
629
+ this.settingsLoaded = false;
630
630
  this._subs = [];
631
631
  // this.sku = "70000107";
632
632
  this._subs.push(
633
633
  // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
634
634
  this._appEventService.onAddToCart.subscribe((json) => {
635
635
  this._handleAddToCart(json);
636
- }), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)));
636
+ }), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)), this._settingsService.settingsLoaded.subscribe(loaded => {
637
+ this.settingsLoaded = loaded;
638
+ }));
637
639
  }
638
640
  set settings(value) {
639
641
  if (value) {
@@ -651,6 +653,11 @@ let IoneProductComponent = class IoneProductComponent {
651
653
  get settings() {
652
654
  return this._settings;
653
655
  }
656
+ ngOnInit() {
657
+ return __awaiter(this, void 0, void 0, function* () {
658
+ yield this._settingsService.initializeSettings();
659
+ });
660
+ }
654
661
  ngOnChanges(changes) {
655
662
  this._changeDetector.detectChanges();
656
663
  }
@@ -667,11 +674,16 @@ let IoneProductComponent = class IoneProductComponent {
667
674
  const articleTreeData = JSON.parse(json);
668
675
  if (articleTreeData.articleTree && articleTreeData.articleTree.article) {
669
676
  if (articleTreeData.articleTree.compositeGoods && Array.isArray(articleTreeData.articleTree.compositeGoods) &&
670
- articleTreeData.articleTree.compositeGoods.length > 0 && articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {
671
- for (let i = 0; i < articleTreeData.articleTree.compositeGoods.length - 1; i++) {
672
- const good = articleTreeData.articleTree.compositeGoods[i];
673
- const subArticle = articleTreeData.articleTree.subArticles[i];
674
- yield this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);
677
+ articleTreeData.articleTree.compositeGoods.length > 0 &&
678
+ articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {
679
+ const compositeGoods = articleTreeData.articleTree.compositeGoods;
680
+ compositeGoods.sort((a, b) => a.versionNumber < b.versionNumber ? -1 : 1);
681
+ for (let i = 0; i < compositeGoods.length; i++) {
682
+ const good = compositeGoods[i];
683
+ const subArticle = articleTreeData.articleTree.subArticles.find(s => s.goodId === good.memberGoodId);
684
+ if (subArticle) {
685
+ yield this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);
686
+ }
675
687
  }
676
688
  }
677
689
  else {
@@ -683,7 +695,28 @@ let IoneProductComponent = class IoneProductComponent {
683
695
  this.onAddToCart.emit(json);
684
696
  });
685
697
  }
686
- };
698
+ openStock() {
699
+ this.openStockEvent.emit();
700
+ }
701
+ }
702
+ IoneProductComponent.decorators = [
703
+ { type: Component, args: [{
704
+ selector: 'app-ione-product',
705
+ template: `
706
+ <app-product-page *ngIf="settingsLoaded"
707
+ (openStockEvent)="openStock()" [sku]="sku"
708
+ ></app-product-page>
709
+ `,
710
+ providers: [
711
+ ProductEventService,
712
+ ProductSettingsService,
713
+ ProductConnectorAdapterService,
714
+ ProductConnectorService
715
+ ],
716
+ encapsulation: ViewEncapsulation.Emulated,
717
+ styles: [""]
718
+ },] }
719
+ ];
687
720
  IoneProductComponent.ctorParameters = () => [
688
721
  { type: DictionaryService },
689
722
  { type: JsonUtilsService },
@@ -692,185 +725,18 @@ IoneProductComponent.ctorParameters = () => [
692
725
  { type: ProductEventService },
693
726
  { type: ProductSettingsService }
694
727
  ];
695
- __decorate([
696
- Input()
697
- ], IoneProductComponent.prototype, "sku", void 0);
698
- __decorate([
699
- Input()
700
- ], IoneProductComponent.prototype, "settings", null);
701
- __decorate([
702
- Output()
703
- ], IoneProductComponent.prototype, "onAddToCart", void 0);
704
- __decorate([
705
- Output()
706
- ], IoneProductComponent.prototype, "forceRenderImage", void 0);
707
- __decorate([
708
- Output()
709
- ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
710
- __decorate([
711
- Output()
712
- ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
713
- __decorate([
714
- Output()
715
- ], IoneProductComponent.prototype, "onArticleReceived", void 0);
716
- __decorate([
717
- Output()
718
- ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
719
- __decorate([
720
- Output()
721
- ], IoneProductComponent.prototype, "onAddToQuote", void 0);
722
- IoneProductComponent = __decorate([
723
- Component({
724
- selector: 'app-ione-product',
725
- template: `
726
- <app-product-page [sku]="sku"
727
- ></app-product-page>
728
- `,
729
- providers: [
730
- ProductEventService,
731
- ProductSettingsService,
732
- ProductConnectorAdapterService,
733
- ProductConnectorService
734
- ],
735
- encapsulation: ViewEncapsulation.Emulated,
736
- styles: [""]
737
- })
738
- ], IoneProductComponent);
739
-
740
- let ProductInitializerService = class ProductInitializerService {
741
- constructor(_settingsService) {
742
- this._settingsService = _settingsService;
743
- }
744
- initializeApp() {
745
- return __awaiter(this, void 0, void 0, function* () {
746
- return this._settingsService.initializeSettings();
747
- });
748
- }
749
- };
750
- ProductInitializerService.ctorParameters = () => [
751
- { type: ProductSettingsService }
752
- ];
753
- ProductInitializerService.ɵprov = ɵɵdefineInjectable({ factory: function ProductInitializerService_Factory() { return new ProductInitializerService(ɵɵinject(ProductSettingsService)); }, token: ProductInitializerService, providedIn: "root" });
754
- ProductInitializerService = __decorate([
755
- Injectable({
756
- providedIn: 'root',
757
- })
758
- ], ProductInitializerService);
759
-
760
- let ProductExternalSourceComponent = class ProductExternalSourceComponent {
761
- constructor(_sanitizer, _productConnectorService, _appEventService) {
762
- this._sanitizer = _sanitizer;
763
- this._productConnectorService = _productConnectorService;
764
- this._appEventService = _appEventService;
765
- this.addToCart = new EventEmitter();
766
- this.addToQuote = new EventEmitter();
767
- this.alternativeClick = new EventEmitter();
768
- this.showProduct = false;
769
- this.loaded = false;
770
- this.externalSettings = {};
771
- this._subs = [];
772
- }
773
- set externalSource(value) {
774
- this._externalSource = value;
775
- this.loaded = false;
776
- this._prepareExternalSource();
777
- }
778
- get externalSource() {
779
- return this._externalSource;
780
- }
781
- showClass() {
782
- return true;
783
- }
784
- ngOnInit() {
785
- this._subs.push(this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)), this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
786
- }
787
- ngOnDestroy() {
788
- this._subs.forEach(s => s.unsubscribe());
789
- }
790
- _prepareExternalSource() {
791
- return __awaiter(this, void 0, void 0, function* () {
792
- if (!this._externalSource) {
793
- return;
794
- }
795
- this.externalUrl = undefined;
796
- this.externalSettings = {};
797
- if (this.externalSource.type === 'CATF') {
798
- // get bundle settings from external source
799
- const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
800
- this.externalSettings = JSON.parse(bundleSettings);
801
- if (this.options) {
802
- this.externalSettings.options = this.options;
803
- }
804
- // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
805
- // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
806
- if (this.externalSource.username && this.externalSource.password) {
807
- this.externalSettings.useLoginEncryption = true;
808
- this.externalSettings.username = this.externalSource.username;
809
- this.externalSettings.password = this.externalSource.password;
810
- }
811
- // finally show the catalog
812
- this.showProduct = true;
813
- }
814
- else {
815
- this.externalUrl = this.externalSource.url;
816
- this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
817
- this.showProduct = false;
818
- }
819
- this.loaded = true;
820
- });
821
- }
822
- };
823
- ProductExternalSourceComponent.ctorParameters = () => [
824
- { type: DomSanitizer },
825
- { type: ProductConnectorService },
826
- { type: ProductEventService }
827
- ];
828
- __decorate([
829
- Input()
830
- ], ProductExternalSourceComponent.prototype, "sku", void 0);
831
- __decorate([
832
- Input()
833
- ], ProductExternalSourceComponent.prototype, "externalSource", null);
834
- __decorate([
835
- Input()
836
- ], ProductExternalSourceComponent.prototype, "options", void 0);
837
- __decorate([
838
- Output()
839
- ], ProductExternalSourceComponent.prototype, "addToCart", void 0);
840
- __decorate([
841
- Output()
842
- ], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
843
- __decorate([
844
- Output()
845
- ], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
846
- __decorate([
847
- HostBinding('class.co-product-external-source')
848
- ], ProductExternalSourceComponent.prototype, "showClass", null);
849
- ProductExternalSourceComponent = __decorate([
850
- Component({
851
- selector: 'co-product-external-source',
852
- template: `
853
- <ng-container *ngIf="loaded">
854
- <ng-container *ngIf="showProduct">
855
- <app-product-page
856
- [sku]="sku"
857
- [settings]="externalSettings"
858
- ></app-product-page>
859
- </ng-container>
860
- <ng-container *ngIf="!showProduct">
861
- <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
862
- </ng-container>
863
- </ng-container>
864
- `,
865
- providers: [
866
- ProductEventService,
867
- ProductSettingsService,
868
- ProductConnectorAdapterService,
869
- ProductConnectorService
870
- ],
871
- encapsulation: ViewEncapsulation.None
872
- })
873
- ], ProductExternalSourceComponent);
728
+ IoneProductComponent.propDecorators = {
729
+ sku: [{ type: Input }],
730
+ settings: [{ type: Input }],
731
+ onAddToCart: [{ type: Output }],
732
+ forceRenderImage: [{ type: Output }],
733
+ onAlternativeClick: [{ type: Output }],
734
+ onArticleInfoReceived: [{ type: Output }],
735
+ onArticleReceived: [{ type: Output }],
736
+ onSelectionsReceived: [{ type: Output }],
737
+ onAddToQuote: [{ type: Output }],
738
+ openStockEvent: [{ type: Output }]
739
+ };
874
740
 
875
741
  class StockAndDelivery {
876
742
  constructor(stock, deliveryDescription) {
@@ -924,7 +790,7 @@ const IconSvg = {
924
790
  "warehouse": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"warehouse.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"6.675088\" inkscape:cx=\"9.6569985\" inkscape:cy=\"12.384637\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 507.785,146.242 260.318,1.175 c -2.603,-1.519 -5.803,-1.57 -8.439,-0.111 L 4.412,137.598 C 1.69,139.091 0,141.958 0,145.064 v 358.4 c 0,4.719 3.823,8.533 8.533,8.533 H 51.2 c 4.71,0 8.533,-3.814 8.533,-8.533 V 204.798 h 392.533 v 298.667 c 0,4.719 3.814,8.533 8.533,8.533 h 42.667 c 4.719,0 8.533,-3.814 8.533,-8.533 V 153.598 c 10e-4,-3.03 -1.603,-5.829 -4.214,-7.356 z m -12.852,348.689 h -25.6 V 196.264 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 H 51.2 c -4.71,0 -8.533,3.823 -8.533,8.533 v 298.667 h -25.6 V 150.099 L 255.872,18.344 494.933,158.487 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,392.531 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 324.267,392.531 h -102.4 c -4.71,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.823,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 230.4 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 281.6,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.823,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,290.131 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,298.664 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"255.998\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"221.864\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 298.667,119.464 h -85.333 c -4.71,0 -8.533,3.823 -8.533,8.533 v 34.133 c 0,4.71 3.823,8.533 8.533,8.533 h 85.333 c 4.719,0 8.533,-3.823 8.533,-8.533 v -34.133 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z m -8.534,34.134 h -68.267 v -17.067 h 68.267 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>"
925
791
  };
926
792
 
927
- let IconCacheService = class IconCacheService {
793
+ class IconCacheService {
928
794
  constructor(_sanitizer) {
929
795
  this._sanitizer = _sanitizer;
930
796
  this._iconCache = {};
@@ -948,18 +814,18 @@ let IconCacheService = class IconCacheService {
948
814
  }
949
815
  }
950
816
  }
951
- };
817
+ }
818
+ IconCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(i0.ɵɵinject(i1$1.DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
819
+ IconCacheService.decorators = [
820
+ { type: Injectable, args: [{
821
+ providedIn: 'root'
822
+ },] }
823
+ ];
952
824
  IconCacheService.ctorParameters = () => [
953
825
  { type: DomSanitizer }
954
- ];
955
- IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
956
- IconCacheService = __decorate([
957
- Injectable({
958
- providedIn: 'root'
959
- })
960
- ], IconCacheService);
826
+ ];
961
827
 
962
- let ProductPageComponent = class ProductPageComponent {
828
+ class ProductPageComponent {
963
829
  constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
964
830
  this._ione = _ione;
965
831
  this._renderer = _renderer;
@@ -968,6 +834,7 @@ let ProductPageComponent = class ProductPageComponent {
968
834
  this.settingsService = settingsService;
969
835
  this.appEventService = appEventService;
970
836
  this.icon = IconEnum;
837
+ this.openStockEvent = new EventEmitter();
971
838
  this.configurable = false;
972
839
  this.threeD = false;
973
840
  this.show2D = true;
@@ -1101,7 +968,49 @@ let ProductPageComponent = class ProductPageComponent {
1101
968
  }));
1102
969
  });
1103
970
  }
1104
- };
971
+ openStock() {
972
+ this.openStockEvent.emit();
973
+ }
974
+ }
975
+ ProductPageComponent.decorators = [
976
+ { type: Component, args: [{
977
+ selector: 'app-product-page',
978
+ 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 <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator 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 <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\" [class.show-selections]=\"configuring\" [@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 ></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 [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\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 [configuring]=\"configuring\"\r\n [article]=\"article\"\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 [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\" (openStockEvent)=\"openStock()\" [stockAndDelivery]=\"stockAndDelivery\"></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 *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></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 *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n",
979
+ animations: [
980
+ trigger('toggleFullScreen', [
981
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
982
+ state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
983
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
984
+ ]),
985
+ trigger('toggleTopLeft', [
986
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
987
+ state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
988
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
989
+ ]),
990
+ trigger('toggleTopRight', [
991
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
992
+ state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
993
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
994
+ ]),
995
+ trigger('toggleFullScreenRight', [
996
+ state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
997
+ state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
998
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
999
+ ]),
1000
+ trigger('toggleVisibilityByState', [
1001
+ state('hide', style({ 'opacity': '0', 'display': 'none' })),
1002
+ state('show', style({ 'display': 'block', 'opacity': '1' })),
1003
+ transition('hide <=> show', animate('200ms 100ms ease-in-out')),
1004
+ ]),
1005
+ trigger('toggleVisibility', [
1006
+ state('void', style({ 'opacity': '0' })),
1007
+ state('*', style({ 'opacity': '1' })),
1008
+ transition('void => *', animate('200ms ease-in-out')),
1009
+ ])
1010
+ ],
1011
+ styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{position:absolute;right:0;bottom:0;margin:0 -40px 0 0;transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
1012
+ },] }
1013
+ ];
1105
1014
  ProductPageComponent.ctorParameters = () => [
1106
1015
  { type: ProductConnectorService },
1107
1016
  { type: Renderer2 },
@@ -1110,62 +1019,16 @@ ProductPageComponent.ctorParameters = () => [
1110
1019
  { type: ProductSettingsService },
1111
1020
  { type: ProductEventService }
1112
1021
  ];
1113
- __decorate([
1114
- ViewChild('configurator', { read: ElementRef })
1115
- ], ProductPageComponent.prototype, "configurator", void 0);
1116
- __decorate([
1117
- ViewChild('selections', { read: ElementRef })
1118
- ], ProductPageComponent.prototype, "selections", void 0);
1119
- __decorate([
1120
- ViewChild('fullscreenbutton', { read: ElementRef })
1121
- ], ProductPageComponent.prototype, "fullscreenbutton", void 0);
1122
- __decorate([
1123
- Input()
1124
- ], ProductPageComponent.prototype, "sku", null);
1125
- __decorate([
1126
- Input()
1127
- ], ProductPageComponent.prototype, "settings", null);
1128
- ProductPageComponent = __decorate([
1129
- Component({
1130
- selector: 'app-product-page',
1131
- 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 <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator 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 <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\" [class.show-selections]=\"configuring\" [@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 ></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 [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\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 [configuring]=\"configuring\"\r\n [article]=\"article\"\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 [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\" [stockAndDelivery]=\"stockAndDelivery\"></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 *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></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 *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n",
1132
- animations: [
1133
- trigger('toggleFullScreen', [
1134
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
1135
- state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
1136
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1137
- ]),
1138
- trigger('toggleTopLeft', [
1139
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
1140
- state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
1141
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1142
- ]),
1143
- trigger('toggleTopRight', [
1144
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
1145
- state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
1146
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1147
- ]),
1148
- trigger('toggleFullScreenRight', [
1149
- state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
1150
- state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
1151
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1152
- ]),
1153
- trigger('toggleVisibilityByState', [
1154
- state('hide', style({ 'opacity': '0', 'display': 'none' })),
1155
- state('show', style({ 'display': 'block', 'opacity': '1' })),
1156
- transition('hide <=> show', animate('200ms 100ms ease-in-out')),
1157
- ]),
1158
- trigger('toggleVisibility', [
1159
- state('void', style({ 'opacity': '0' })),
1160
- state('*', style({ 'opacity': '1' })),
1161
- transition('void => *', animate('200ms ease-in-out')),
1162
- ])
1163
- ],
1164
- styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content.no-top-margin,.page-wrapper-content:first-child{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:.2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional,.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74b77f}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:.14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:0;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:.2s}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{position:absolute;right:0;bottom:0;margin:0 -40px 0 0;transition:.2s;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313c;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:0;padding:15px 0;background:0 0!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width:950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left,.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width:650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}"]
1165
- })
1166
- ], ProductPageComponent);
1022
+ ProductPageComponent.propDecorators = {
1023
+ configurator: [{ type: ViewChild, args: ['configurator', { read: ElementRef },] }],
1024
+ selections: [{ type: ViewChild, args: ['selections', { read: ElementRef },] }],
1025
+ fullscreenbutton: [{ type: ViewChild, args: ['fullscreenbutton', { read: ElementRef },] }],
1026
+ sku: [{ type: Input }],
1027
+ settings: [{ type: Input }],
1028
+ openStockEvent: [{ type: Output }]
1029
+ };
1167
1030
 
1168
- let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1031
+ class ProductSelectorTypeComponent {
1169
1032
  constructor(_iconCache, _changeDetector) {
1170
1033
  this._iconCache = _iconCache;
1171
1034
  this._changeDetector = _changeDetector;
@@ -1184,35 +1047,101 @@ let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1184
1047
  this.onIconClick.next(this.currentType);
1185
1048
  this._changeDetector.detectChanges();
1186
1049
  }
1187
- };
1050
+ }
1051
+ ProductSelectorTypeComponent.decorators = [
1052
+ { type: Component, args: [{
1053
+ selector: 'app-product-selector-type',
1054
+ template: `
1055
+ <div *ngIf="show2D || show3D" class="show-in" [textContent]="'SHOW_IN' | localize"></div>
1056
+ <!--
1057
+ <co-icon *ngIf="show2D" class="selector-type-icon"
1058
+ [class.active]="currentType === type.TwoD"
1059
+ [iconData]="twoDIcon"
1060
+ (click)="handleIconClick(type.TwoD)"
1061
+ ></co-icon>
1062
+ <co-icon *ngIf="show3D" class="selector-type-icon"
1063
+ [class.active]="currentType === type.ThreeD"
1064
+ [iconData]="threeDIcon"
1065
+ (click)="handleIconClick(type.ThreeD)"
1066
+ ></co-icon>
1067
+ -->
1068
+ `,
1069
+ styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>*:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:none;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}\n"]
1070
+ },] }
1071
+ ];
1188
1072
  ProductSelectorTypeComponent.ctorParameters = () => [
1189
1073
  { type: IconCacheService },
1190
1074
  { type: ChangeDetectorRef }
1191
1075
  ];
1192
- __decorate([
1193
- Input()
1194
- ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1195
- __decorate([
1196
- Input()
1197
- ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1198
- __decorate([
1199
- Input()
1200
- ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1201
- __decorate([
1202
- Output()
1203
- ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1204
- __decorate([
1205
- Output()
1206
- ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1207
- ProductSelectorTypeComponent = __decorate([
1208
- Component({
1209
- selector: 'app-product-selector-type',
1210
- template: "<div *ngIf=\"show2D || show3D\" class=\"show-in\" [textContent]=\"'SHOW_IN' | localize\"></div>\n<co-icon *ngIf=\"show2D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n></co-icon>\n<co-icon *ngIf=\"show3D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.ThreeD\"\n [iconData]=\"threeDIcon\"\n (click)=\"handleIconClick(type.ThreeD)\"\n></co-icon>\n",
1211
- styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:0 0;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}"]
1212
- })
1213
- ], ProductSelectorTypeComponent);
1076
+ ProductSelectorTypeComponent.propDecorators = {
1077
+ show2D: [{ type: Input }],
1078
+ show3D: [{ type: Input }],
1079
+ currentType: [{ type: Input }],
1080
+ onIconClick: [{ type: Output }],
1081
+ currentTypeChange: [{ type: Output }]
1082
+ };
1214
1083
 
1215
- let ImageCarouselComponent = class ImageCarouselComponent {
1084
+ // A pipe for localizing string values in view templates.
1085
+ class LocalizePipe {
1086
+ constructor(_dictionaryService) {
1087
+ this._dictionaryService = _dictionaryService;
1088
+ }
1089
+ transform(value, upperCaseFirst = true, replace = []) {
1090
+ if (!value) {
1091
+ return '';
1092
+ }
1093
+ replace = replace ? replace : [];
1094
+ if (!Array.isArray(replace)) {
1095
+ replace = [replace];
1096
+ }
1097
+ return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1098
+ }
1099
+ }
1100
+ LocalizePipe.decorators = [
1101
+ { type: Pipe, args: [{
1102
+ name: 'localize'
1103
+ },] }
1104
+ ];
1105
+ LocalizePipe.ctorParameters = () => [
1106
+ { type: DictionaryService }
1107
+ ];
1108
+
1109
+ class PipeModule {
1110
+ }
1111
+ PipeModule.decorators = [
1112
+ { type: NgModule, args: [{
1113
+ declarations: [
1114
+ LocalizePipe
1115
+ ],
1116
+ providers: [
1117
+ LocalizePipe
1118
+ ],
1119
+ exports: [
1120
+ LocalizePipe
1121
+ ]
1122
+ },] }
1123
+ ];
1124
+
1125
+ // import {IconModule} from '@colijnit/corecomponents';
1126
+ class ProductSelectorTypeModule {
1127
+ }
1128
+ ProductSelectorTypeModule.decorators = [
1129
+ { type: NgModule, args: [{
1130
+ imports: [
1131
+ CommonModule,
1132
+ PipeModule /*,
1133
+ IconModule*/
1134
+ ],
1135
+ declarations: [
1136
+ ProductSelectorTypeComponent
1137
+ ],
1138
+ exports: [
1139
+ ProductSelectorTypeComponent
1140
+ ]
1141
+ },] }
1142
+ ];
1143
+
1144
+ class ImageCarouselComponent {
1216
1145
  constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
1217
1146
  this._ione = _ione;
1218
1147
  this._appEventService = _appEventService;
@@ -1324,7 +1253,44 @@ let ImageCarouselComponent = class ImageCarouselComponent {
1324
1253
  }
1325
1254
  }
1326
1255
  }
1327
- };
1256
+ }
1257
+ ImageCarouselComponent.decorators = [
1258
+ { type: Component, args: [{
1259
+ selector: 'app-image-carousel',
1260
+ template: `
1261
+ <div id="product_page_carousel">
1262
+ <div id="product_page_carousel_items">
1263
+ <co-loader [isShown]="showLoader"></co-loader>
1264
+ <div #carousel class="inner-carousel">
1265
+ <!-- This has been taken out of the for loop to prevent flashing images when updating. -->
1266
+ <div *ngIf="images[0]" class="carousel-item" [id]="'slide-0'" [class.active]="isCurrentIndex(0)">
1267
+ <img [src]="getImageSrc(images[0])">
1268
+ </div>
1269
+ <div *ngFor="let image of images.slice(1); let index = index" class="carousel-item" [id]="'slide-' + (index + 1)" [class.active]="isCurrentIndex((index + 1))">
1270
+ <img [src]="getImageSrc(image)">
1271
+ </div>
1272
+ <div class="carousel-scroller-layer" *ngIf="images && images.length > 1">
1273
+ <div class="carousel-item-scroller prev" (click)="gotoPrevSlide()" *ngIf="currentIndex > 0"></div>
1274
+ <div class="carousel-item-scroller next" (click)="gotoNextSlide()" *ngIf="currentIndex < images.length - 1"></div>
1275
+ </div>
1276
+ </div>
1277
+ <!--
1278
+ <co-icon class="selector-type-icon refresh-button" [iconData]="iconCache.getIcon(icons.Refresh)" (click)="onForceRenderImage()" [class.loading]="showLoader" *ngIf="showRefresh"></co-icon>
1279
+ -->
1280
+ </div>
1281
+
1282
+ <div id="product_page_carousel_thumbs">
1283
+ <co-scroll-container class="scroll-container" *ngIf="images && images.length > 1">
1284
+ <div *ngFor="let image of images; let index = index" class="carousel-thumb" [class.active]="index === currentIndex">
1285
+ <img [src]="getImageSrc(image)" (click)="handleThumbClick(index)"/>
1286
+ </div>
1287
+ </co-scroll-container>
1288
+ </div>
1289
+ </div>
1290
+ `,
1291
+ styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
1292
+ },] }
1293
+ ];
1328
1294
  ImageCarouselComponent.ctorParameters = () => [
1329
1295
  { type: ProductConnectorService },
1330
1296
  { type: ProductEventService },
@@ -1332,50 +1298,72 @@ ImageCarouselComponent.ctorParameters = () => [
1332
1298
  { type: DomSanitizer },
1333
1299
  { type: IconCacheService }
1334
1300
  ];
1335
- __decorate([
1336
- ViewChild('carousel', { read: ElementRef })
1337
- ], ImageCarouselComponent.prototype, "carousel", void 0);
1338
- __decorate([
1339
- Input()
1340
- ], ImageCarouselComponent.prototype, "showRefresh", void 0);
1341
- __decorate([
1342
- Input()
1343
- ], ImageCarouselComponent.prototype, "images", null);
1344
- __decorate([
1345
- HostListener('window:resize')
1346
- ], ImageCarouselComponent.prototype, "handleWindowResize", null);
1347
- __decorate([
1348
- HostListener('swipeleft')
1349
- ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
1350
- __decorate([
1351
- HostListener('swiperight')
1352
- ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
1353
- __decorate([
1354
- HostBinding('class.resizing')
1355
- ], ImageCarouselComponent.prototype, "resizing", void 0);
1356
- ImageCarouselComponent = __decorate([
1357
- Component({
1358
- selector: 'app-image-carousel',
1359
- template: "<div id=\"product_page_carousel\">\n <div id=\"product_page_carousel_items\">\n <co-loader [isShown]=\"showLoader\"></co-loader>\n <div #carousel class=\"inner-carousel\">\n <!-- This has been taken out of the for loop to prevent flashing images when updating. -->\n <div *ngIf=\"images[0]\" class=\"carousel-item\" [id]=\"'slide-0'\" [class.active]=\"isCurrentIndex(0)\">\n <img [src]=\"getImageSrc(images[0])\">\n </div>\n <div *ngFor=\"let image of images.slice(1); let index = index\" class=\"carousel-item\" [id]=\"'slide-' + (index + 1)\" [class.active]=\"isCurrentIndex((index + 1))\">\n <img [src]=\"getImageSrc(image)\">\n </div>\n <div class=\"carousel-scroller-layer\" *ngIf=\"images && images.length > 1\">\n <div class=\"carousel-item-scroller prev\" (click)=\"gotoPrevSlide()\" *ngIf=\"currentIndex > 0\"></div>\n <div class=\"carousel-item-scroller next\" (click)=\"gotoNextSlide()\" *ngIf=\"currentIndex < images.length - 1\"></div>\n </div>\n </div>\n <co-icon class=\"selector-type-icon refresh-button\" [iconData]=\"iconCache.getIcon(icons.Refresh)\" (click)=\"onForceRenderImage()\" [class.loading]=\"showLoader\" *ngIf=\"showRefresh\"></co-icon>\n </div>\n\n <div id=\"product_page_carousel_thumbs\">\n <co-scroll-container class=\"scroll-container\" *ngIf=\"images && images.length > 1\">\n <div *ngFor=\"let image of images; let index = index\" class=\"carousel-thumb\" [class.active]=\"index === currentIndex\">\n <img [src]=\"getImageSrc(image)\" (click)=\"handleThumbClick(index)\"/>\n </div>\n </co-scroll-container>\n </div>\n</div>\n",
1360
- styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:.2s;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width:650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}"]
1361
- })
1362
- ], ImageCarouselComponent);
1301
+ ImageCarouselComponent.propDecorators = {
1302
+ carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
1303
+ showRefresh: [{ type: Input }],
1304
+ images: [{ type: Input }],
1305
+ handleWindowResize: [{ type: HostListener, args: ['window:resize',] }],
1306
+ gotoNextSlide: [{ type: HostListener, args: ['swipeleft',] }],
1307
+ gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
1308
+ resizing: [{ type: HostBinding, args: ['class.resizing',] }]
1309
+ };
1310
+
1311
+ class ImageCarouselModule {
1312
+ }
1313
+ ImageCarouselModule.decorators = [
1314
+ { type: NgModule, args: [{
1315
+ imports: [
1316
+ CommonModule,
1317
+ LoaderModule,
1318
+ // IconModule,
1319
+ ScrollContainerModule
1320
+ ],
1321
+ declarations: [
1322
+ ImageCarouselComponent
1323
+ ],
1324
+ exports: [
1325
+ ImageCarouselComponent
1326
+ ]
1327
+ },] }
1328
+ ];
1363
1329
 
1364
- let ProductDescriptionComponent = class ProductDescriptionComponent {
1330
+ class ProductDescriptionComponent {
1365
1331
  constructor() { }
1366
1332
  ngOnInit() {
1367
1333
  }
1368
- };
1369
- __decorate([
1370
- Input()
1371
- ], ProductDescriptionComponent.prototype, "article", void 0);
1372
- ProductDescriptionComponent = __decorate([
1373
- Component({
1374
- selector: 'app-product-description',
1375
- template: "<div class=\"pd-title-wrapper\">\n <span class=\"pd-description\" [textContent]=\"article?.descriptionRetail\" *ngIf=\"article?.descriptionRetail\"></span>\n <span class=\"pd-sku\" [textContent]=\"article?.articleNr\" *ngIf=\"article?.articleNr\"></span>\n</div>\n",
1376
- styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width:650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}"]
1377
- })
1378
- ], ProductDescriptionComponent);
1334
+ }
1335
+ ProductDescriptionComponent.decorators = [
1336
+ { type: Component, args: [{
1337
+ selector: 'app-product-description',
1338
+ template: `
1339
+ <div class="pd-title-wrapper">
1340
+ <span class="pd-description" [textContent]="article?.descriptionRetail" *ngIf="article?.descriptionRetail"></span>
1341
+ <span class="pd-sku" [textContent]="article?.articleNr" *ngIf="article?.articleNr"></span>
1342
+ </div>
1343
+ `,
1344
+ styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:bold;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width: 650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}\n"]
1345
+ },] }
1346
+ ];
1347
+ ProductDescriptionComponent.ctorParameters = () => [];
1348
+ ProductDescriptionComponent.propDecorators = {
1349
+ article: [{ type: Input }]
1350
+ };
1351
+
1352
+ class ProductDescriptionModule {
1353
+ }
1354
+ ProductDescriptionModule.decorators = [
1355
+ { type: NgModule, args: [{
1356
+ imports: [
1357
+ CommonModule
1358
+ ],
1359
+ declarations: [
1360
+ ProductDescriptionComponent
1361
+ ],
1362
+ exports: [
1363
+ ProductDescriptionComponent
1364
+ ]
1365
+ },] }
1366
+ ];
1379
1367
 
1380
1368
  class BitUtils {
1381
1369
  static IsShortDescription(bit) {
@@ -1395,7 +1383,7 @@ class BitUtils {
1395
1383
  }
1396
1384
  }
1397
1385
 
1398
- let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1386
+ class ProductAdditionalDescriptionComponent {
1399
1387
  constructor(_appEventService) {
1400
1388
  this._appEventService = _appEventService;
1401
1389
  }
@@ -1428,22 +1416,46 @@ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionCo
1428
1416
  }
1429
1417
  }
1430
1418
  }
1431
- };
1419
+ }
1420
+ ProductAdditionalDescriptionComponent.decorators = [
1421
+ { type: Component, args: [{
1422
+ selector: 'app-product-additional-description',
1423
+ template: `
1424
+ <ng-container *ngIf="description !== ''">
1425
+ <div class="pd-additional-description">
1426
+ <p [innerHTML]="description"></p>
1427
+ <button class="pd-read-more-btn" [textContent]="'READ_MORE' | localize" (click)="onReadMore()"></button>
1428
+ </div>
1429
+ </ng-container>
1430
+ `,
1431
+ styles: [":host{display:block;padding-top:0!important}:host *:focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:transparent;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width: 650px){:host .pd-additional-description{font-size:12px}}\n"]
1432
+ },] }
1433
+ ];
1432
1434
  ProductAdditionalDescriptionComponent.ctorParameters = () => [
1433
1435
  { type: ProductEventService }
1434
1436
  ];
1435
- __decorate([
1436
- Input()
1437
- ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1438
- ProductAdditionalDescriptionComponent = __decorate([
1439
- Component({
1440
- selector: 'app-product-additional-description',
1441
- template: "<ng-container *ngIf=\"description !== ''\">\n <div class=\"pd-additional-description\">\n <p [innerHTML]=\"description\"></p>\n <button class=\"pd-read-more-btn\" [textContent]=\"'READ_MORE' | localize\" (click)=\"onReadMore()\"></button>\n </div>\n</ng-container>\n",
1442
- styles: [":host{display:block;padding-top:0!important}:host :focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:0 0;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width:650px){:host .pd-additional-description{font-size:12px}}"]
1443
- })
1444
- ], ProductAdditionalDescriptionComponent);
1437
+ ProductAdditionalDescriptionComponent.propDecorators = {
1438
+ article: [{ type: Input }]
1439
+ };
1440
+
1441
+ class ProductAdditionalDescriptionModule {
1442
+ }
1443
+ ProductAdditionalDescriptionModule.decorators = [
1444
+ { type: NgModule, args: [{
1445
+ imports: [
1446
+ CommonModule,
1447
+ PipeModule
1448
+ ],
1449
+ declarations: [
1450
+ ProductAdditionalDescriptionComponent
1451
+ ],
1452
+ exports: [
1453
+ ProductAdditionalDescriptionComponent
1454
+ ]
1455
+ },] }
1456
+ ];
1445
1457
 
1446
- let ProductPriceComponent = class ProductPriceComponent {
1458
+ class ProductPriceComponent {
1447
1459
  constructor(_changeDetector) {
1448
1460
  this._changeDetector = _changeDetector;
1449
1461
  this.showFromPrice = false;
@@ -1487,25 +1499,52 @@ let ProductPriceComponent = class ProductPriceComponent {
1487
1499
  return '€';
1488
1500
  }
1489
1501
  }
1490
- };
1502
+ }
1503
+ ProductPriceComponent.decorators = [
1504
+ { type: Component, args: [{
1505
+ selector: 'app-product-price',
1506
+ template: `
1507
+ <div *ngIf="toPrice">
1508
+ <div class="price-wrapper" *ngIf="fromPrice > toPrice">
1509
+ <div class="from-price-label" [textContent]="fromLabel | localize"></div>
1510
+ <div class="from-price" [textContent]="fromPrice | priceDisplay: valutaSign"></div>
1511
+ </div>
1512
+ <div class="price-wrapper">
1513
+ <div class="to-price-label" [textContent]="toLabel | localize"></div>
1514
+ <div class="to-price" [textContent]="toPrice | priceDisplay: valutaSign"></div>
1515
+ </div>
1516
+ </div>
1517
+ `,
1518
+ styles: [":host{display:flex;flex-direction:column}.price-wrapper{width:100%;font-size:15px;margin:0 0 5px;display:inline-block}.price-wrapper:last-child{margin:0}.from-price-label,.to-price-label{color:#5b6875;display:none}.from-price{font-size:16px;font-weight:bold;text-decoration:line-through;color:#5b6875}.to-price{font-size:25px;font-weight:bold;color:#74b77f}@media screen and (max-width: 650px){.from-price{font-size:13px}.to-price{font-size:21px}}\n"]
1519
+ },] }
1520
+ ];
1491
1521
  ProductPriceComponent.ctorParameters = () => [
1492
1522
  { type: ChangeDetectorRef }
1493
1523
  ];
1494
- __decorate([
1495
- Input()
1496
- ], ProductPriceComponent.prototype, "pricing", null);
1497
- __decorate([
1498
- Input()
1499
- ], ProductPriceComponent.prototype, "configurable", null);
1500
- ProductPriceComponent = __decorate([
1501
- Component({
1502
- selector: 'app-product-price',
1503
- template: "<div *ngIf=\"toPrice\">\n <div class=\"price-wrapper\" *ngIf=\"fromPrice > toPrice\">\n <div class=\"from-price-label\" [textContent]=\"fromLabel | localize\"></div>\n <div class=\"from-price\" [textContent]=\"fromPrice | priceDisplay\"></div>\n </div>\n <div class=\"price-wrapper\">\n <div class=\"to-price-label\" [textContent]=\"toLabel | localize\"></div>\n <div class=\"to-price\" [textContent]=\"toPrice | priceDisplay\"></div>\n </div>\n</div>\n",
1504
- styles: [":host{display:flex;flex-direction:column}.price-wrapper{width:100%;font-size:15px;margin:0 0 5px;display:inline-block}.price-wrapper:last-child{margin:0}.from-price-label,.to-price-label{color:#5b6875;display:none}.from-price{font-size:16px;font-weight:700;text-decoration:line-through;color:#5b6875}.to-price{font-size:25px;font-weight:700;color:#74b77f}@media screen and (max-width:650px){.from-price{font-size:13px}.to-price{font-size:21px}}"]
1505
- })
1506
- ], ProductPriceComponent);
1524
+ ProductPriceComponent.propDecorators = {
1525
+ pricing: [{ type: Input }],
1526
+ configurable: [{ type: Input }]
1527
+ };
1507
1528
 
1508
- let ProductAddtocartComponent = class ProductAddtocartComponent {
1529
+ class ProductPriceModule {
1530
+ }
1531
+ ProductPriceModule.decorators = [
1532
+ { type: NgModule, args: [{
1533
+ imports: [
1534
+ CommonModule,
1535
+ PipeModule,
1536
+ PriceDisplayPipeModule
1537
+ ],
1538
+ declarations: [
1539
+ ProductPriceComponent
1540
+ ],
1541
+ exports: [
1542
+ ProductPriceComponent
1543
+ ]
1544
+ },] }
1545
+ ];
1546
+
1547
+ class ProductAddtocartComponent {
1509
1548
  constructor(iconCache, _ioneControllerService, _appEventService, _settingsService) {
1510
1549
  this.iconCache = iconCache;
1511
1550
  this._ioneControllerService = _ioneControllerService;
@@ -1554,50 +1593,73 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
1554
1593
  return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);
1555
1594
  });
1556
1595
  }
1557
- };
1596
+ }
1597
+ ProductAddtocartComponent.decorators = [
1598
+ { type: Component, args: [{
1599
+ selector: 'app-product-addtocart',
1600
+ template: `
1601
+ <div class="atc-wrapper">
1602
+ <co-number-picker *ngIf="!configurable && !configuring" class="quantity-select" [(model)]="quantity" [min]="1" horizontal></co-number-picker>
1603
+ <div class="button-wrapper">
1604
+ <co-button class="configure-button" *ngIf="configurable"
1605
+ [iconData]="iconCache.getIcon(icon.MagicWand)"
1606
+ [label]="'CONFIGURE' | localize"
1607
+ (onClick)="startConfiguration.emit()"
1608
+ ></co-button>
1609
+ <co-button #addtocartbutton class="cart-button" *ngIf="!configurable"
1610
+ [iconData]="iconCache.getIcon(icon.AddToCartDrop)"
1611
+ [label]="'SHOPPING_CART_IN' | localize"
1612
+ (onClick)="handleAddToCartClick(quantity)"
1613
+ ></co-button>
1614
+ <co-button class="cart-button quote" *ngIf="!configurable && showQuoteButton"
1615
+ [iconData]="iconCache.getIcon(icon.Quote)"
1616
+ [label]="'QUOTATION' | localize"
1617
+ (onClick)="handleAddToQuoteClick(quantity)"
1618
+ ></co-button>
1619
+ </div>
1620
+ </div>
1621
+ `,
1622
+ styles: [":host{display:flex;flex-direction:column}:host *:not(:last-child){margin-bottom:5px}:host .atc-wrapper{display:flex;flex-direction:row;align-items:baseline}:host .atc-wrapper .quantity-select{margin-right:5px}:host.full-screen .cart-button{position:fixed;right:20px;bottom:20px;z-index:3}::ng-deep co-number-picker{max-width:100px;border:2px solid #f6f5f4;border-radius:5px}::ng-deep co-number-picker ::ng-deep co-input-text{height:50px!important;border:none!important;width:50px!important}::ng-deep co-number-picker ::ng-deep co-input-text:after{display:none}::ng-deep co-number-picker ::ng-deep co-input-text.focused{box-shadow:none!important;border:none!important;background:none!important}::ng-deep co-number-picker ::ng-deep co-input-text .clear-icon{display:none}::ng-deep co-number-picker ::ng-deep co-input-text input{width:100%;text-align:center}::ng-deep co-number-picker ::ng-deep co-button{justify-content:center;padding:0!important;margin:0!important;height:50px!important;background-color:transparent!important}::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon [fill]{fill:#22313c!important}.button-wrapper ::ng-deep co-button{height:50px;max-width:300px;justify-content:center;font-size:15px;border-radius:5px!important;cursor:pointer;padding:0 20px!important}.button-wrapper ::ng-deep co-button:hover{background:#74B77F}::ng-deep co-button.cart-button{border-radius:5px}::ng-deep co-button.cart-button.quote{background:#7292b6}\n"]
1623
+ },] }
1624
+ ];
1558
1625
  ProductAddtocartComponent.ctorParameters = () => [
1559
1626
  { type: IconCacheService },
1560
1627
  { type: ProductConnectorService },
1561
1628
  { type: ProductEventService },
1562
1629
  { type: ProductSettingsService }
1563
1630
  ];
1564
- __decorate([
1565
- ViewChild('addtocartbutton', { read: ElementRef })
1566
- ], ProductAddtocartComponent.prototype, "addToCartButton", void 0);
1567
- __decorate([
1568
- Input()
1569
- ], ProductAddtocartComponent.prototype, "article", void 0);
1570
- __decorate([
1571
- Input()
1572
- ], ProductAddtocartComponent.prototype, "configurable", void 0);
1573
- __decorate([
1574
- Input()
1575
- ], ProductAddtocartComponent.prototype, "configuring", void 0);
1576
- __decorate([
1577
- HostBinding('class.full-screen'),
1578
- Input()
1579
- ], ProductAddtocartComponent.prototype, "fullscreen", void 0);
1580
- __decorate([
1581
- Input()
1582
- ], ProductAddtocartComponent.prototype, "quantity", null);
1583
- __decorate([
1584
- Output()
1585
- ], ProductAddtocartComponent.prototype, "startConfiguration", void 0);
1586
- __decorate([
1587
- Output()
1588
- ], ProductAddtocartComponent.prototype, "addToCartClick", void 0);
1589
- __decorate([
1590
- Output()
1591
- ], ProductAddtocartComponent.prototype, "addToQuoteClick", void 0);
1592
- ProductAddtocartComponent = __decorate([
1593
- Component({
1594
- selector: 'app-product-addtocart',
1595
- template: "<div class=\"atc-wrapper\">\n <co-number-picker *ngIf=\"!configurable && !configuring\" class=\"quantity-select\" [(model)]=\"quantity\" [min]=\"1\" horizontal></co-number-picker>\n <div class=\"button-wrapper\">\n <co-button class=\"configure-button\" *ngIf=\"configurable\"\n [iconData]=\"iconCache.getIcon(icon.MagicWand)\"\n [label]=\"'CONFIGURE' | localize\"\n (onClick)=\"startConfiguration.emit()\"\n ></co-button>\n <co-button #addtocartbutton class=\"cart-button\" *ngIf=\"!configurable\"\n [iconData]=\"iconCache.getIcon(icon.AddToCartDrop)\"\n [label]=\"'SHOPPING_CART_IN' | localize\"\n (onClick)=\"handleAddToCartClick(quantity)\"\n ></co-button>\n <co-button class=\"cart-button quote\" *ngIf=\"!configurable && showQuoteButton\"\n [iconData]=\"iconCache.getIcon(icon.Quote)\"\n [label]=\"'QUOTATION' | localize\"\n (onClick)=\"handleAddToQuoteClick(quantity)\"\n ></co-button>\n </div>\n</div>\n",
1596
- styles: [":host{display:flex;flex-direction:column}:host :not(:last-child){margin-bottom:5px}:host .atc-wrapper{display:flex;flex-direction:row;align-items:baseline}:host .atc-wrapper .quantity-select{margin-right:5px}:host.full-screen .cart-button{position:fixed;right:20px;bottom:20px;z-index:3}::ng-deep co-number-picker{max-width:100px;border:2px solid #f6f5f4;border-radius:5px}::ng-deep co-number-picker ::ng-deep co-input-text{height:50px!important;border:none!important;width:50px!important}::ng-deep co-number-picker ::ng-deep co-input-text:after{display:none}::ng-deep co-number-picker ::ng-deep co-input-text.focused{box-shadow:none!important;border:none!important;background:0 0!important}::ng-deep co-number-picker ::ng-deep co-input-text .clear-icon{display:none}::ng-deep co-number-picker ::ng-deep co-input-text input{width:100%;text-align:center}::ng-deep co-number-picker ::ng-deep co-button{justify-content:center;padding:0!important;margin:0!important;height:50px!important;background-color:transparent!important}::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon [fill]{fill:#22313c!important}.button-wrapper ::ng-deep co-button{height:50px;max-width:300px;justify-content:center;font-size:15px;border-radius:5px!important;cursor:pointer;padding:0 20px!important}.button-wrapper ::ng-deep co-button:hover{background:#74b77f}::ng-deep co-button.cart-button{border-radius:5px}::ng-deep co-button.cart-button.quote{background:#7292b6}"]
1597
- })
1598
- ], ProductAddtocartComponent);
1631
+ ProductAddtocartComponent.propDecorators = {
1632
+ addToCartButton: [{ type: ViewChild, args: ['addtocartbutton', { read: ElementRef },] }],
1633
+ article: [{ type: Input }],
1634
+ configurable: [{ type: Input }],
1635
+ configuring: [{ type: Input }],
1636
+ fullscreen: [{ type: HostBinding, args: ['class.full-screen',] }, { type: Input }],
1637
+ quantity: [{ type: Input }],
1638
+ startConfiguration: [{ type: Output }],
1639
+ addToCartClick: [{ type: Output }],
1640
+ addToQuoteClick: [{ type: Output }]
1641
+ };
1599
1642
 
1600
- let ProductRelatedComponent = class ProductRelatedComponent {
1643
+ class ProductAddtocartModule {
1644
+ }
1645
+ ProductAddtocartModule.decorators = [
1646
+ { type: NgModule, args: [{
1647
+ imports: [
1648
+ CommonModule,
1649
+ NumberPickerModule,
1650
+ ButtonModule,
1651
+ PipeModule
1652
+ ],
1653
+ declarations: [
1654
+ ProductAddtocartComponent
1655
+ ],
1656
+ exports: [
1657
+ ProductAddtocartComponent
1658
+ ]
1659
+ },] }
1660
+ ];
1661
+
1662
+ class ProductRelatedComponent {
1601
1663
  constructor(_iOne, _appEventService) {
1602
1664
  this._iOne = _iOne;
1603
1665
  this._appEventService = _appEventService;
@@ -1638,36 +1700,108 @@ let ProductRelatedComponent = class ProductRelatedComponent {
1638
1700
  }
1639
1701
  });
1640
1702
  }
1641
- };
1703
+ }
1704
+ ProductRelatedComponent.decorators = [
1705
+ { type: Component, args: [{
1706
+ selector: 'app-product-related',
1707
+ template: `
1708
+ <div *ngIf="articles && articles.length > 0">
1709
+ <app-header [label]="label" [amount]="articles?.length" *ngIf="label"></app-header>
1710
+ <co-scroll-container>
1711
+ <div class="article-wrapper" *ngFor="let article of articles">
1712
+ <co-article-tile
1713
+ [imageData]="article.image.documentBodyAsDataUri"
1714
+ [description]="article.description"
1715
+ [price]="article.price"
1716
+ [level]="article.stockStatus"
1717
+ [isSmallModus]="isSmallModus"
1718
+ [hasConfigureButton]="article.goodType === 'B'"
1719
+ (contentClick)="handleContentClick(article)"
1720
+ ></co-article-tile>
1721
+ </div>
1722
+ </co-scroll-container>
1723
+ </div>
1724
+ `,
1725
+ styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:none!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:none!important;background:transparent!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}\n"]
1726
+ },] }
1727
+ ];
1642
1728
  ProductRelatedComponent.ctorParameters = () => [
1643
1729
  { type: ProductConnectorService },
1644
1730
  { type: ProductEventService }
1645
1731
  ];
1646
- __decorate([
1647
- Input()
1648
- ], ProductRelatedComponent.prototype, "refType", void 0);
1649
- __decorate([
1650
- Input()
1651
- ], ProductRelatedComponent.prototype, "label", void 0);
1652
- __decorate([
1653
- Input()
1654
- ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1655
- __decorate([
1656
- Input()
1657
- ], ProductRelatedComponent.prototype, "articles", null);
1658
- ProductRelatedComponent = __decorate([
1659
- Component({
1660
- selector: 'app-product-related',
1661
- template: "<div *ngIf=\"articles && articles.length > 0\">\n <app-header [label]=\"label\" [amount]=\"articles?.length\" *ngIf=\"label\"></app-header>\n <co-scroll-container>\n <div class=\"article-wrapper\" *ngFor=\"let article of articles\">\n <co-article-tile\n [imageData]=\"article.image.documentBodyAsDataUri\"\n [description]=\"article.description\"\n [price]=\"article.price\"\n [level]=\"article.stockStatus\"\n [isSmallModus]=\"isSmallModus\"\n [hasConfigureButton]=\"article.goodType === 'B'\"\n (contentClick)=\"handleContentClick(article)\"\n ></co-article-tile>\n </div>\n </co-scroll-container>\n</div>\n",
1662
- styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:0!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:0!important;background:0 0!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}"]
1663
- })
1664
- ], ProductRelatedComponent);
1732
+ ProductRelatedComponent.propDecorators = {
1733
+ refType: [{ type: Input }],
1734
+ label: [{ type: Input }],
1735
+ isSmallModus: [{ type: Input }],
1736
+ articles: [{ type: Input }]
1737
+ };
1665
1738
 
1666
- let ProductStockComponent = class ProductStockComponent {
1739
+ class HeaderComponent {
1740
+ constructor() { }
1741
+ ngOnInit() {
1742
+ }
1743
+ }
1744
+ HeaderComponent.decorators = [
1745
+ { type: Component, args: [{
1746
+ selector: 'app-header',
1747
+ template: `
1748
+ <ng-container *ngIf="label">
1749
+ <div class="header-wrapper">
1750
+ <h3 [textContent]="label"></h3>
1751
+ <span *ngIf="amount" class="amount" [textContent]="'(' + amount + ')'"></span>
1752
+ </div>
1753
+ </ng-container>
1754
+ `,
1755
+ styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}\n"]
1756
+ },] }
1757
+ ];
1758
+ HeaderComponent.ctorParameters = () => [];
1759
+ HeaderComponent.propDecorators = {
1760
+ label: [{ type: Input }],
1761
+ amount: [{ type: Input }]
1762
+ };
1763
+
1764
+ class HeaderModule {
1765
+ }
1766
+ HeaderModule.decorators = [
1767
+ { type: NgModule, args: [{
1768
+ imports: [
1769
+ CommonModule
1770
+ ],
1771
+ declarations: [
1772
+ HeaderComponent
1773
+ ],
1774
+ exports: [
1775
+ HeaderComponent
1776
+ ]
1777
+ },] }
1778
+ ];
1779
+
1780
+ class ProductRelatedModule {
1781
+ }
1782
+ ProductRelatedModule.decorators = [
1783
+ { type: NgModule, args: [{
1784
+ imports: [
1785
+ CommonModule,
1786
+ HeaderModule,
1787
+ ScrollContainerModule,
1788
+ ArticleTileModule
1789
+ ],
1790
+ declarations: [
1791
+ ProductRelatedComponent
1792
+ ],
1793
+ exports: [
1794
+ ProductRelatedComponent
1795
+ ]
1796
+ },] }
1797
+ ];
1798
+
1799
+ class ProductStockComponent {
1667
1800
  constructor(_iOne, _iconCache) {
1668
1801
  this._iOne = _iOne;
1669
1802
  this._iconCache = _iconCache;
1670
1803
  this.icon = IconEnum;
1804
+ this.openStockEvent = new EventEmitter();
1671
1805
  this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1672
1806
  }
1673
1807
  set stockAndDelivery(value) {
@@ -1677,50 +1811,55 @@ let ProductStockComponent = class ProductStockComponent {
1677
1811
  }
1678
1812
  ngOnInit() {
1679
1813
  }
1680
- };
1814
+ openStock() {
1815
+ this.openStockEvent.emit();
1816
+ }
1817
+ }
1818
+ ProductStockComponent.decorators = [
1819
+ { type: Component, args: [{
1820
+ selector: 'app-product-stock',
1821
+ template: `
1822
+ <!--<app-header [label]="'STOCK' | localize"></app-header>-->
1823
+ <!--<co-level-indicator [model]="'medium'"></co-level-indicator>-->
1824
+ <div class="product-stock-wrapper">
1825
+ <co-icon class="stock-icon" [iconData]="iconData"></co-icon>
1826
+ <div class="product-stock-fields" (click)="openStock()">
1827
+ <div class="pp-default-label in-stock" [textContent]="'PRODUCT_IN_STOCK' | localize" *ngIf="numberInStock > 0"></div>
1828
+ <div class="pp-default-label not-in-stock" [textContent]="'PRODUCT_NOT_IN_STOCK' | localize" *ngIf="!(numberInStock > 0)"></div>
1829
+ </div>
1830
+ </div>
1831
+ `,
1832
+ styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px;cursor:pointer}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0;color:#2b60a7;text-decoration:underline}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74B77F;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width: 400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}\n"]
1833
+ },] }
1834
+ ];
1681
1835
  ProductStockComponent.ctorParameters = () => [
1682
1836
  { type: ProductConnectorService },
1683
1837
  { type: IconCacheService }
1684
1838
  ];
1685
- __decorate([
1686
- Input()
1687
- ], ProductStockComponent.prototype, "stockAndDelivery", null);
1688
- ProductStockComponent = __decorate([
1689
- Component({
1690
- selector: 'app-product-stock',
1691
- template: "<!--<app-header [label]=\"'STOCK' | localize\"></app-header>-->\n<!--<co-level-indicator [model]=\"'medium'\"></co-level-indicator>-->\n<div class=\"product-stock-wrapper\">\n <co-icon class=\"stock-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-stock-fields\">\n <div class=\"pp-default-label in-stock\" [textContent]=\"'PRODUCT_IN_STOCK' | localize\" *ngIf=\"numberInStock > 0\"></div>\n <div class=\"pp-default-label not-in-stock\" [textContent]=\"'PRODUCT_NOT_IN_STOCK' | localize\" *ngIf=\"!(numberInStock > 0)\"></div>\n </div>\n</div>\n",
1692
- styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74b77f;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width:400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}"]
1693
- })
1694
- ], ProductStockComponent);
1839
+ ProductStockComponent.propDecorators = {
1840
+ stockAndDelivery: [{ type: Input }],
1841
+ openStockEvent: [{ type: Output }]
1842
+ };
1695
1843
 
1696
- let LocalizePipe =
1697
- // A pipe for localizing string values in view templates.
1698
- class LocalizePipe {
1699
- constructor(_dictionaryService) {
1700
- this._dictionaryService = _dictionaryService;
1701
- }
1702
- transform(value, upperCaseFirst = true, replace = []) {
1703
- if (!value) {
1704
- return '';
1705
- }
1706
- replace = replace ? replace : [];
1707
- if (!Array.isArray(replace)) {
1708
- replace = [replace];
1709
- }
1710
- return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1711
- }
1712
- };
1713
- LocalizePipe.ctorParameters = () => [
1714
- { type: DictionaryService }
1715
- ];
1716
- LocalizePipe = __decorate([
1717
- Pipe({
1718
- name: 'localize'
1719
- })
1720
- // A pipe for localizing string values in view templates.
1721
- ], LocalizePipe);
1844
+ class ProductStockModule {
1845
+ }
1846
+ ProductStockModule.decorators = [
1847
+ { type: NgModule, args: [{
1848
+ imports: [
1849
+ CommonModule,
1850
+ IconModule,
1851
+ PipeModule
1852
+ ],
1853
+ declarations: [
1854
+ ProductStockComponent
1855
+ ],
1856
+ exports: [
1857
+ ProductStockComponent
1858
+ ]
1859
+ },] }
1860
+ ];
1722
1861
 
1723
- let ProductDeliveryComponent = class ProductDeliveryComponent {
1862
+ class ProductDeliveryComponent {
1724
1863
  constructor(_localizePipe, _iOne, _iconCache) {
1725
1864
  this._localizePipe = _localizePipe;
1726
1865
  this._iOne = _iOne;
@@ -1738,24 +1877,51 @@ let ProductDeliveryComponent = class ProductDeliveryComponent {
1738
1877
  }
1739
1878
  ngOnInit() {
1740
1879
  }
1741
- };
1880
+ }
1881
+ ProductDeliveryComponent.decorators = [
1882
+ { type: Component, args: [{
1883
+ selector: 'app-product-delivery',
1884
+ template: `
1885
+ <!--<app-header [label]="'DELIVERY_TIME_PERIOD' | localize"></app-header>-->
1886
+ <div class="product-delivery-wrapper">
1887
+ <co-icon class="delivery-icon" [iconData]="iconData"></co-icon>
1888
+ <div class="product-delivery-fields">
1889
+ <div class="pp-default-label" [textContent]="'DELIVERY_TIME_PERIOD' | localize"></div>
1890
+ <div class="pp-default-description" [textContent]="deliveryDescription | date:'dd MMMM yyyy'"></div>
1891
+ </div>
1892
+ </div>
1893
+ `,
1894
+ styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width: 400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}\n"]
1895
+ },] }
1896
+ ];
1742
1897
  ProductDeliveryComponent.ctorParameters = () => [
1743
1898
  { type: LocalizePipe },
1744
1899
  { type: ProductConnectorService },
1745
1900
  { type: IconCacheService }
1746
1901
  ];
1747
- __decorate([
1748
- Input()
1749
- ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1750
- ProductDeliveryComponent = __decorate([
1751
- Component({
1752
- selector: 'app-product-delivery',
1753
- template: "<!--<app-header [label]=\"'DELIVERY_TIME_PERIOD' | localize\"></app-header>-->\n<div class=\"product-delivery-wrapper\">\n <co-icon class=\"delivery-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-delivery-fields\">\n <div class=\"pp-default-label\" [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\"></div>\n <div class=\"pp-default-description\" [textContent]=\"deliveryDescription | date:'dd MMMM yyyy'\"></div>\n </div>\n</div>\n",
1754
- styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width:400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}"]
1755
- })
1756
- ], ProductDeliveryComponent);
1902
+ ProductDeliveryComponent.propDecorators = {
1903
+ stockAndDelivery: [{ type: Input }]
1904
+ };
1905
+
1906
+ class ProductDeliveryModule {
1907
+ }
1908
+ ProductDeliveryModule.decorators = [
1909
+ { type: NgModule, args: [{
1910
+ imports: [
1911
+ CommonModule,
1912
+ IconModule,
1913
+ PipeModule
1914
+ ],
1915
+ declarations: [
1916
+ ProductDeliveryComponent
1917
+ ],
1918
+ exports: [
1919
+ ProductDeliveryComponent
1920
+ ]
1921
+ },] }
1922
+ ];
1757
1923
 
1758
- let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1924
+ class ProductInfoTabsComponent {
1759
1925
  constructor(_appEventService) {
1760
1926
  this._appEventService = _appEventService;
1761
1927
  this.activeTabHeight = 0;
@@ -1797,119 +1963,45 @@ let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1797
1963
  this.tabs.push({ title: 'SYMBOLS' });
1798
1964
  }
1799
1965
  }
1800
- };
1966
+ }
1967
+ ProductInfoTabsComponent.decorators = [
1968
+ { type: Component, args: [{
1969
+ selector: 'app-product-info-tabs',
1970
+ template: `
1971
+ <div class="tab-container">
1972
+ <div class="tab-header">
1973
+ <button *ngFor="let tab of tabs; let i = index" class="tab-header-button" [class.active]="activeTab === i" [textContent]="tab.title | localize" (click)="updateTab(i)"></button>
1974
+ </div>
1975
+ <div class="tab-content" #tabContent [style.height.px]="(activeTabHeight > 0 ? activeTabHeight : '')">
1976
+ <div class="tab-content-item" *ngFor="let tab of tabs; let i = index" [class.active]="activeTab === i">
1977
+ <ng-container *ngIf="i === 0">
1978
+ <app-product-additional-info class="" [article]="articleObject" [showLabel]="false"></app-product-additional-info>
1979
+ </ng-container>
1980
+ <ng-container *ngIf="i === 1">
1981
+ <app-product-properties class="" [article]="articleObject" [showLabel]="false"></app-product-properties>
1982
+ </ng-container>
1983
+ <ng-container *ngIf="i === 2">
1984
+ <app-product-documents [showLabel]="false" class="" *ngIf="articleObject?.documents && articleObject?.documents.length > 0" [documents]="articleObject?.documents"></app-product-documents>
1985
+ </ng-container>
1986
+ <ng-container *ngIf="i === 3">
1987
+ <app-product-symbols class="" *ngIf="articleObject?.symbols && articleObject?.symbols.length > 0" [symbols]="articleObject?.symbols"></app-product-symbols>
1988
+ </ng-container>
1989
+ </div>
1990
+ </div>
1991
+ </div>
1992
+ `,
1993
+ styles: ["*:focus{outline:none}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:transparent;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:bold;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:all .2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width: 650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width: 450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}\n"]
1994
+ },] }
1995
+ ];
1801
1996
  ProductInfoTabsComponent.ctorParameters = () => [
1802
1997
  { type: ProductEventService }
1803
1998
  ];
1804
- __decorate([
1805
- ViewChild('tabContent')
1806
- ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1807
- __decorate([
1808
- Input()
1809
- ], ProductInfoTabsComponent.prototype, "article", null);
1810
- ProductInfoTabsComponent = __decorate([
1811
- Component({
1812
- selector: 'app-product-info-tabs',
1813
- template: "<div class=\"tab-container\">\r\n <div class=\"tab-header\">\r\n <button *ngFor=\"let tab of tabs; let i = index\" class=\"tab-header-button\" [class.active]=\"activeTab === i\" [textContent]=\"tab.title | localize\" (click)=\"updateTab(i)\"></button>\r\n </div>\r\n <div class=\"tab-content\" #tabContent [style.height.px]=\"(activeTabHeight > 0 ? activeTabHeight : '')\">\r\n <div class=\"tab-content-item\" *ngFor=\"let tab of tabs; let i = index\" [class.active]=\"activeTab === i\">\r\n <ng-container *ngIf=\"i === 0\">\r\n <app-product-additional-info class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-additional-info>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 1\">\r\n <app-product-properties class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-properties>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 2\">\r\n <app-product-documents [showLabel]=\"false\" class=\"\" *ngIf=\"articleObject?.documents && articleObject?.documents.length > 0\" [documents]=\"articleObject?.documents\"></app-product-documents>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 3\">\r\n <app-product-symbols class=\"\" *ngIf=\"articleObject?.symbols && articleObject?.symbols.length > 0\" [symbols]=\"articleObject?.symbols\"></app-product-symbols>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
1814
- styles: [":focus{outline:0}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:0 0;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:700;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:.2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width:650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width:450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}"]
1815
- })
1816
- ], ProductInfoTabsComponent);
1817
-
1818
- let PipeModule = class PipeModule {
1819
- };
1820
- PipeModule = __decorate([
1821
- NgModule({
1822
- exports: [
1823
- LocalizePipe
1824
- ],
1825
- declarations: [
1826
- LocalizePipe
1827
- ],
1828
- providers: [
1829
- LocalizePipe
1830
- ]
1831
- })
1832
- ], PipeModule);
1833
-
1834
- let ProductDocumentsComponent = class ProductDocumentsComponent {
1835
- constructor(iconCache) {
1836
- this.iconCache = iconCache;
1837
- this.icon = IconEnum;
1838
- this.showLabel = false;
1839
- this.documents = [];
1840
- }
1841
- };
1842
- ProductDocumentsComponent.ctorParameters = () => [
1843
- { type: IconCacheService }
1844
- ];
1845
- __decorate([
1846
- Input()
1847
- ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1848
- __decorate([
1849
- Input()
1850
- ], ProductDocumentsComponent.prototype, "documents", void 0);
1851
- ProductDocumentsComponent = __decorate([
1852
- Component({
1853
- selector: 'app-product-documents',
1854
- template: "<app-header *ngIf=\"showLabel\" [label]=\"'DOCUMENTS' | localize\" [amount]=\"documents?.length\"></app-header>\n<div *ngIf=\"documents && documents.length > 0\">\n <co-files-upload [documents]=\"documents\" [canAdd]=\"false\" readonly></co-files-upload>\n</div>\n",
1855
- styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:0!important;border:none!important;background:url(../../../assets/icons/download.svg) left 6px center/36px auto no-repeat!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}"]
1856
- })
1857
- ], ProductDocumentsComponent);
1858
-
1859
- let HeaderComponent = class HeaderComponent {
1860
- constructor() { }
1861
- ngOnInit() {
1862
- }
1863
- };
1864
- __decorate([
1865
- Input()
1866
- ], HeaderComponent.prototype, "label", void 0);
1867
- __decorate([
1868
- Input()
1869
- ], HeaderComponent.prototype, "amount", void 0);
1870
- HeaderComponent = __decorate([
1871
- Component({
1872
- selector: 'app-header',
1873
- template: "<ng-container *ngIf=\"label\">\n <div class=\"header-wrapper\">\n <h3 [textContent]=\"label\"></h3>\n <span *ngIf=\"amount\" class=\"amount\" [textContent]=\"'(' + amount + ')'\"></span>\n </div>\n</ng-container>\n",
1874
- styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
1875
- })
1876
- ], HeaderComponent);
1877
-
1878
- var TabType;
1879
- (function (TabType) {
1880
- TabType["Additional"] = "additional";
1881
- TabType["Properties"] = "properties";
1882
- })(TabType || (TabType = {}));
1883
- let ProductInfoComponent = class ProductInfoComponent {
1884
- constructor() {
1885
- this.tabType = TabType;
1886
- this.currentTab = TabType.Additional;
1887
- }
1888
- ngOnInit() {
1889
- }
1890
- switchTab(tab) {
1891
- this.currentTab = tab;
1892
- }
1893
- };
1894
- __decorate([
1895
- Input()
1896
- ], ProductInfoComponent.prototype, "article", void 0);
1897
- ProductInfoComponent = __decorate([
1898
- Component({
1899
- selector: 'app-product-info',
1900
- template: "<div>\n <div class=\"info-wrapper\">\n <div class=\"info-navigation\">\n <span [textContent]=\"'ADDITIONAL_DATA' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Additional\" (mouseup)=\"switchTab(tabType.Additional)\"></span>\n <span [textContent]=\"'PROPERTIES' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Properties\" (mouseup)=\"switchTab(tabType.Properties)\"></span>\n </div>\n <ng-container [ngSwitch]=\"currentTab\" class=\"content\">\n <div *ngSwitchCase=\"tabType.Additional\" @showContent>\n <app-product-additional-info\n [article]=\"article\"\n ></app-product-additional-info>\n </div>\n <div *ngSwitchCase=\"tabType.Properties\" @showContent>\n <app-product-properties [article]=\"article\"></app-product-properties>\n </div>\n </ng-container>\n </div>\n</div>\n",
1901
- animations: [
1902
- trigger('showContent', [
1903
- state('void', style({ 'opacity': '0' })),
1904
- state('*', style({ 'opacity': '1' })),
1905
- transition('void => *', animate('200ms 100ms ease-in-out')),
1906
- ])
1907
- ],
1908
- styles: [".info-navigation{margin:30px 0}.info-navigation .navigator:not(:last-child){margin-right:30px}.navigator{font-size:15px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigator.selected{color:#2b60a7}"]
1909
- })
1910
- ], ProductInfoComponent);
1999
+ ProductInfoTabsComponent.propDecorators = {
2000
+ tabContent: [{ type: ViewChild, args: ['tabContent',] }],
2001
+ article: [{ type: Input }]
2002
+ };
1911
2003
 
1912
- let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
2004
+ class ProductAdditionalInfoComponent {
1913
2005
  constructor(_sanitizer, _connectorService, _changeDetector) {
1914
2006
  this._sanitizer = _sanitizer;
1915
2007
  this._connectorService = _connectorService;
@@ -1989,25 +2081,45 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1989
2081
  return;
1990
2082
  });
1991
2083
  }
1992
- };
2084
+ }
2085
+ ProductAdditionalInfoComponent.decorators = [
2086
+ { type: Component, args: [{
2087
+ selector: 'app-product-additional-info',
2088
+ template: `
2089
+ <h3 *ngIf="showLabel" [textContent]="'ADDITIONAL_DATA' | localize"></h3>
2090
+ <ng-container *ngIf="textParts && textParts.length > 0">
2091
+ <div class="additional-info-parts" *ngFor="let text of textParts" [innerHTML]="text"></div>
2092
+ </ng-container>
2093
+ `,
2094
+ styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:\"iOneMontserrat\"}:host .additional-info-parts>*:first-child{margin-top:0}:host .additional-info-parts>*:last-child{margin-bottom:0}\n"]
2095
+ },] }
2096
+ ];
1993
2097
  ProductAdditionalInfoComponent.ctorParameters = () => [
1994
2098
  { type: DomSanitizer },
1995
2099
  { type: ProductConnectorService },
1996
2100
  { type: ChangeDetectorRef }
1997
2101
  ];
1998
- __decorate([
1999
- Input()
2000
- ], ProductAdditionalInfoComponent.prototype, "article", null);
2001
- __decorate([
2002
- Input()
2003
- ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
2004
- ProductAdditionalInfoComponent = __decorate([
2005
- Component({
2006
- selector: 'app-product-additional-info',
2007
- template: "<h3 *ngIf=\"showLabel\" [textContent]=\"'ADDITIONAL_DATA' | localize\"></h3>\n<ng-container *ngIf=\"textParts && textParts.length > 0\">\n <div class=\"additional-info-parts\" *ngFor=\"let text of textParts\" [innerHTML]=\"text\"></div>\n</ng-container>\n",
2008
- styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:iOneMontserrat}:host .additional-info-parts>:first-child{margin-top:0}:host .additional-info-parts>:last-child{margin-bottom:0}"]
2009
- })
2010
- ], ProductAdditionalInfoComponent);
2102
+ ProductAdditionalInfoComponent.propDecorators = {
2103
+ article: [{ type: Input }],
2104
+ showLabel: [{ type: Input }]
2105
+ };
2106
+
2107
+ class ProductAdditionalInfoModule {
2108
+ }
2109
+ ProductAdditionalInfoModule.decorators = [
2110
+ { type: NgModule, args: [{
2111
+ imports: [
2112
+ CommonModule,
2113
+ PipeModule
2114
+ ],
2115
+ declarations: [
2116
+ ProductAdditionalInfoComponent
2117
+ ],
2118
+ exports: [
2119
+ ProductAdditionalInfoComponent
2120
+ ]
2121
+ },] }
2122
+ ];
2011
2123
 
2012
2124
  const propertyMap = new Map([
2013
2125
  ['articleNr', 'ARTICLE_NUMBER'],
@@ -2020,7 +2132,7 @@ const propertyMap = new Map([
2020
2132
  ['height', 'HEIGHT'],
2021
2133
  ['width', 'WIDTH']
2022
2134
  ]);
2023
- let ProductPropertiesComponent = class ProductPropertiesComponent {
2135
+ class ProductPropertiesComponent {
2024
2136
  constructor() {
2025
2137
  this.showLabel = false;
2026
2138
  this.properties = [];
@@ -2045,22 +2157,95 @@ let ProductPropertiesComponent = class ProductPropertiesComponent {
2045
2157
  }
2046
2158
  });
2047
2159
  }
2048
- };
2049
- __decorate([
2050
- Input()
2051
- ], ProductPropertiesComponent.prototype, "article", null);
2052
- __decorate([
2053
- Input()
2054
- ], ProductPropertiesComponent.prototype, "showLabel", void 0);
2055
- ProductPropertiesComponent = __decorate([
2056
- Component({
2057
- selector: 'app-product-properties',
2058
- template: "<div class=\"article-properties-wrapper\">\n <h3 *ngIf=\"showLabel\" [textContent]=\"'PROPERTIES' | localize\"></h3>\n <ng-container *ngFor=\"let property of properties\">\n <div class=\"article-property\">\n <div class=\"article-property-key\" [textContent]=\"property.key | localize\"></div>\n <div class=\"article-property-value\" [textContent]=\"property.value\"></div>\n </div>\n </ng-container>\n</div>\n",
2059
- styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width:450px){.article-property-key{flex-basis:130px}}"]
2060
- })
2061
- ], ProductPropertiesComponent);
2160
+ }
2161
+ ProductPropertiesComponent.decorators = [
2162
+ { type: Component, args: [{
2163
+ selector: 'app-product-properties',
2164
+ template: `
2165
+ <div class="article-properties-wrapper">
2166
+ <h3 *ngIf="showLabel" [textContent]="'PROPERTIES' | localize"></h3>
2167
+ <ng-container *ngFor="let property of properties">
2168
+ <div class="article-property">
2169
+ <div class="article-property-key" [textContent]="property.key | localize"></div>
2170
+ <div class="article-property-value" [textContent]="property.value"></div>
2171
+ </div>
2172
+ </ng-container>
2173
+ </div>
2174
+ `,
2175
+ styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width: 450px){.article-property-key{flex-basis:130px}}\n"]
2176
+ },] }
2177
+ ];
2178
+ ProductPropertiesComponent.ctorParameters = () => [];
2179
+ ProductPropertiesComponent.propDecorators = {
2180
+ article: [{ type: Input }],
2181
+ showLabel: [{ type: Input }]
2182
+ };
2062
2183
 
2063
- let ProductSymbolsComponent = class ProductSymbolsComponent {
2184
+ class ProductPropertiesModule {
2185
+ }
2186
+ ProductPropertiesModule.decorators = [
2187
+ { type: NgModule, args: [{
2188
+ imports: [
2189
+ CommonModule,
2190
+ PipeModule
2191
+ ],
2192
+ declarations: [
2193
+ ProductPropertiesComponent
2194
+ ],
2195
+ exports: [
2196
+ ProductPropertiesComponent
2197
+ ]
2198
+ },] }
2199
+ ];
2200
+
2201
+ class ProductDocumentsComponent {
2202
+ constructor(iconCache) {
2203
+ this.iconCache = iconCache;
2204
+ this.icon = IconEnum;
2205
+ this.showLabel = false;
2206
+ this.documents = [];
2207
+ }
2208
+ }
2209
+ ProductDocumentsComponent.decorators = [
2210
+ { type: Component, args: [{
2211
+ selector: 'app-product-documents',
2212
+ template: `
2213
+ <app-header *ngIf="showLabel" [label]="'DOCUMENTS' | localize" [amount]="documents?.length"></app-header>
2214
+ <div *ngIf="documents && documents.length > 0">
2215
+ <co-files-upload [documents]="documents" [canAdd]="false" readonly></co-files-upload>
2216
+ </div>
2217
+ `,
2218
+ styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:none!important;border:none!important;background:transparent!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important;background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22 standalone%3D%22no%22%3F%3E%3Csvg xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22 xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22 xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22 xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Asodipodi%3D%22http%3A%2F%2Fsodipodi.sourceforge.net%2FDTD%2Fsodipodi-0.dtd%22 xmlns%3Ainkscape%3D%22http%3A%2F%2Fwww.inkscape.org%2Fnamespaces%2Finkscape%22 viewBox%3D%220 0 50 50%22 version%3D%221.1%22 id%3D%22svg8%22 sodipodi%3Adocname%3D%22download.svg%22 inkscape%3Aversion%3D%220.92.4 (5da689c313%2C 2019-01-14)%22%3E %3Cmetadata id%3D%22metadata14%22%3E %3Crdf%3ARDF%3E %3Ccc%3AWork rdf%3Aabout%3D%22%22%3E %3Cdc%3Aformat%3Eimage%2Fsvg%2Bxml%3C%2Fdc%3Aformat%3E %3Cdc%3Atype rdf%3Aresource%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fdcmitype%2FStillImage%22 %2F%3E %3Cdc%3Atitle%3E%3C%2Fdc%3Atitle%3E %3C%2Fcc%3AWork%3E %3C%2Frdf%3ARDF%3E %3C%2Fmetadata%3E %3Cdefs id%3D%22defs12%22 %2F%3E %3Csodipodi%3Anamedview pagecolor%3D%22%23ffffff%22 bordercolor%3D%22%23666666%22 borderopacity%3D%221%22 objecttolerance%3D%2210%22 gridtolerance%3D%2210%22 guidetolerance%3D%2210%22 inkscape%3Apageopacity%3D%220%22 inkscape%3Apageshadow%3D%222%22 inkscape%3Awindow-width%3D%221920%22 inkscape%3Awindow-height%3D%221017%22 id%3D%22namedview10%22 showgrid%3D%22false%22 inkscape%3Azoom%3D%226.675088%22 inkscape%3Acx%3D%22-14.056273%22 inkscape%3Acy%3D%2229.806579%22 inkscape%3Awindow-x%3D%22-8%22 inkscape%3Awindow-y%3D%22-8%22 inkscape%3Awindow-maximized%3D%221%22 inkscape%3Acurrent-layer%3D%22svg8%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g62%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g64%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g66%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g68%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g70%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g72%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g74%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g76%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g78%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g80%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g82%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g84%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g86%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g88%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g90%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g6-0%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g4-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22m 498.966%2C339.946 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 v 49.804 c 0%2C28.747 -23.388%2C52.135 -52.135%2C52.135 H 78.203 c -28.747%2C0 -52.135%2C-23.388 -52.135%2C-52.135 V 352.98 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 C 5.835%2C339.946 0%2C345.782 0%2C352.98 v 49.804 c 0%2C43.121 35.082%2C78.203 78.203%2C78.203 h 355.594 c 43.121%2C0 78.203%2C-35.082 78.203%2C-78.203 V 352.98 c 0%2C-7.198 -5.835%2C-13.034 -13.034%2C-13.034 z%22 id%3D%22path2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g12-0%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g10-8%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22M 419.833%2C391.3 H 92.167 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 0%2C7.197 5.835%2C13.034 13.034%2C13.034 h 327.665 c 7.199%2C0 13.034%2C-5.835 13.034%2C-13.034 0%2C-7.197 -5.835%2C-13.034 -13.033%2C-13.034 z%22 id%3D%22path8-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g18-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g16-7%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22m 387.919%2C207.93 c -4.795%2C-5.367 -13.034%2C-5.834 -18.404%2C-1.038 L 269.033%2C296.657 V 44.048 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 -7.197%2C0 -13.034%2C5.835 -13.034%2C13.034 V 296.657 L 142.483%2C206.893 c -5.367%2C-4.796 -13.607%2C-4.328 -18.404%2C1.038 -4.794%2C5.369 -4.331%2C13.609 1.037%2C18.404 l 109.174%2C97.527 c 6.187%2C5.529 13.946%2C8.292 21.708%2C8.292 7.759%2C0 15.519%2C-2.763 21.708%2C-8.289 l 109.174%2C-97.53 c 5.37%2C-4.798 5.834%2C-13.038 1.039%2C-18.405 z%22 id%3D%22path14-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g20%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g22-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g24-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g26%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g28-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g30-2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g32%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g34-2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g36-1%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g38%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g40-6%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g42-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g44%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g46-7%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g48-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%3C%2Fsvg%3E\") no-repeat left 6px center / 36px auto!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}\n"]
2219
+ },] }
2220
+ ];
2221
+ ProductDocumentsComponent.ctorParameters = () => [
2222
+ { type: IconCacheService }
2223
+ ];
2224
+ ProductDocumentsComponent.propDecorators = {
2225
+ showLabel: [{ type: Input }],
2226
+ documents: [{ type: Input }]
2227
+ };
2228
+
2229
+ class ProductDocumentModule {
2230
+ }
2231
+ ProductDocumentModule.decorators = [
2232
+ { type: NgModule, args: [{
2233
+ imports: [
2234
+ CommonModule,
2235
+ HeaderModule,
2236
+ PipeModule,
2237
+ FilesUploadModule
2238
+ ],
2239
+ declarations: [
2240
+ ProductDocumentsComponent
2241
+ ],
2242
+ exports: [
2243
+ ProductDocumentsComponent
2244
+ ]
2245
+ },] }
2246
+ ];
2247
+
2248
+ class ProductSymbolsComponent {
2064
2249
  constructor() {
2065
2250
  this.symbolStrings = [];
2066
2251
  }
@@ -2080,119 +2265,248 @@ let ProductSymbolsComponent = class ProductSymbolsComponent {
2080
2265
  }
2081
2266
  ngOnInit() {
2082
2267
  }
2083
- };
2084
- __decorate([
2085
- Input()
2086
- ], ProductSymbolsComponent.prototype, "symbols", null);
2087
- __decorate([
2088
- HostBinding('class')
2089
- ], ProductSymbolsComponent.prototype, "_className", void 0);
2090
- ProductSymbolsComponent = __decorate([
2091
- Component({
2092
- selector: 'app-product-symbols',
2093
- template: "<div *ngIf=\"symbols && symbols.length > 0\">\n <app-header [label]=\"'SYMBOLS' | localize\" [amount]=\"symbols?.length\"></app-header>\n <co-scroll-container>\n <co-tile small noImagePlaceholder *ngFor=\"let symbol of symbolStrings\">\n <ng-container tile-over-image>\n <div class=\"symbol\" [textContent]=\"symbol\"></div>\n </ng-container>\n <ng-container tile-extra-bottom-content>\n <div class=\"symbol-name\" [textContent]=\"'Wat moet hier?'\"></div>\n </ng-container>\n </co-tile>\n </co-scroll-container>\n</div>\n",
2094
- styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
2095
- })
2096
- ], ProductSymbolsComponent);
2268
+ }
2269
+ ProductSymbolsComponent.decorators = [
2270
+ { type: Component, args: [{
2271
+ selector: 'app-product-symbols',
2272
+ template: `
2273
+ <div *ngIf="symbols && symbols.length > 0">
2274
+ <app-header [label]="'SYMBOLS' | localize" [amount]="symbols?.length"></app-header>
2275
+ <co-scroll-container>
2276
+ <co-tile small noImagePlaceholder *ngFor="let symbol of symbolStrings">
2277
+ <ng-container tile-over-image>
2278
+ <div class="symbol" [textContent]="symbol"></div>
2279
+ </ng-container>
2280
+ <ng-container tile-extra-bottom-content>
2281
+ <div class="symbol-name" [textContent]="'Wat moet hier?'"></div>
2282
+ </ng-container>
2283
+ </co-tile>
2284
+ </co-scroll-container>
2285
+ </div>
2286
+ `,
2287
+ styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}\n"]
2288
+ },] }
2289
+ ];
2290
+ ProductSymbolsComponent.ctorParameters = () => [];
2291
+ ProductSymbolsComponent.propDecorators = {
2292
+ symbols: [{ type: Input }],
2293
+ _className: [{ type: HostBinding, args: ['class',] }]
2294
+ };
2295
+
2296
+ class ProductSymbolsModule {
2297
+ }
2298
+ ProductSymbolsModule.decorators = [
2299
+ { type: NgModule, args: [{
2300
+ imports: [
2301
+ CommonModule,
2302
+ HeaderModule,
2303
+ PipeModule,
2304
+ ScrollContainerModule,
2305
+ TileModule
2306
+ ],
2307
+ declarations: [
2308
+ ProductSymbolsComponent
2309
+ ],
2310
+ exports: [
2311
+ ProductSymbolsComponent
2312
+ ]
2313
+ },] }
2314
+ ];
2097
2315
 
2098
- let ProductPageModule = class ProductPageModule {
2099
- };
2100
- ProductPageModule = __decorate([
2101
- NgModule({
2102
- imports: [
2103
- CommonModule,
2104
- IconModule,
2105
- LoaderModule,
2106
- PipeModule,
2107
- NumberPickerModule,
2108
- ButtonModule,
2109
- PriceDisplayPipeModule,
2110
- InputTextModule,
2111
- FilesUploadModule,
2112
- ScrollContainerModule,
2113
- TileModule,
2114
- LevelIndicatorModule,
2115
- ArticleTileModule,
2116
- ],
2117
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
2118
- declarations: [
2119
- ProductPageComponent,
2120
- ProductSelectorTypeComponent,
2121
- ImageCarouselComponent,
2122
- ProductDescriptionComponent,
2123
- ProductAdditionalDescriptionComponent,
2124
- ProductPriceComponent,
2125
- ProductAddtocartComponent,
2126
- ProductRelatedComponent,
2127
- ProductStockComponent,
2128
- ProductDeliveryComponent,
2129
- ProductInfoTabsComponent,
2130
- ProductDocumentsComponent,
2131
- HeaderComponent,
2132
- ProductInfoComponent,
2133
- ProductAdditionalInfoComponent,
2134
- ProductPropertiesComponent,
2135
- ProductSymbolsComponent
2136
- ],
2137
- exports: [ProductPageComponent]
2138
- })
2139
- ], ProductPageModule);
2316
+ class ProductInfoTabsModule {
2317
+ }
2318
+ ProductInfoTabsModule.decorators = [
2319
+ { type: NgModule, args: [{
2320
+ imports: [
2321
+ CommonModule,
2322
+ PipeModule,
2323
+ ProductAdditionalInfoModule,
2324
+ ProductPropertiesModule,
2325
+ ProductDocumentModule,
2326
+ ProductSymbolsModule
2327
+ ],
2328
+ declarations: [
2329
+ ProductInfoTabsComponent
2330
+ ],
2331
+ exports: [
2332
+ ProductInfoTabsComponent
2333
+ ]
2334
+ },] }
2335
+ ];
2140
2336
 
2141
- let ProductExternalSourceModule = class ProductExternalSourceModule {
2142
- };
2143
- ProductExternalSourceModule = __decorate([
2144
- NgModule({
2145
- imports: [
2146
- CommonModule,
2147
- ProductPageModule
2148
- ],
2149
- declarations: [
2150
- ProductExternalSourceComponent
2151
- ],
2152
- exports: [
2153
- ProductExternalSourceComponent
2154
- ]
2155
- })
2156
- ], ProductExternalSourceModule);
2337
+ class ProductPageModule {
2338
+ }
2339
+ ProductPageModule.decorators = [
2340
+ { type: NgModule, args: [{
2341
+ imports: [
2342
+ CommonModule,
2343
+ ProductSelectorTypeModule,
2344
+ ImageCarouselModule,
2345
+ IconModule,
2346
+ ProductDescriptionModule,
2347
+ ProductAdditionalDescriptionModule,
2348
+ ProductPriceModule,
2349
+ ProductAddtocartModule,
2350
+ ProductRelatedModule,
2351
+ ProductStockModule,
2352
+ ProductDeliveryModule,
2353
+ ProductInfoTabsModule,
2354
+ PipeModule
2355
+ ],
2356
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
2357
+ declarations: [
2358
+ ProductPageComponent
2359
+ ],
2360
+ exports: [
2361
+ ProductPageComponent
2362
+ ]
2363
+ },] }
2364
+ ];
2157
2365
 
2158
- function initializeApp(context) {
2159
- const x = () => context.initializeApp();
2160
- return x;
2366
+ class IoneProductModule {
2161
2367
  }
2162
- let IoneProductModule = class IoneProductModule {
2163
- };
2164
- IoneProductModule = __decorate([
2165
- NgModule({
2166
- imports: [
2167
- // BrowserAnimationsModule,
2168
- CommonModule,
2169
- ProductExternalSourceModule,
2170
- ProductPageModule
2171
- ],
2172
- declarations: [
2173
- IoneProductComponent
2174
- ],
2175
- entryComponents: [
2176
- IoneProductComponent
2177
- ],
2178
- providers: [
2179
- {
2180
- provide: APP_INITIALIZER,
2181
- useFactory: initializeApp,
2182
- deps: [ProductInitializerService],
2183
- multi: true
2368
+ IoneProductModule.decorators = [
2369
+ { type: NgModule, args: [{
2370
+ imports: [
2371
+ // BrowserAnimationsModule,
2372
+ CommonModule,
2373
+ ProductPageModule
2374
+ ],
2375
+ declarations: [
2376
+ IoneProductComponent
2377
+ ],
2378
+ exports: [
2379
+ IoneProductComponent
2380
+ ],
2381
+ bootstrap: [
2382
+ IoneProductComponent
2383
+ ]
2384
+ },] }
2385
+ ];
2386
+
2387
+ class ProductExternalSourceComponent {
2388
+ constructor(_sanitizer, _productConnectorService, _appEventService) {
2389
+ this._sanitizer = _sanitizer;
2390
+ this._productConnectorService = _productConnectorService;
2391
+ this._appEventService = _appEventService;
2392
+ this.addToCart = new EventEmitter();
2393
+ this.addToQuote = new EventEmitter();
2394
+ this.alternativeClick = new EventEmitter();
2395
+ this.showProduct = false;
2396
+ this.loaded = false;
2397
+ this.externalSettings = {};
2398
+ this._subs = [];
2399
+ }
2400
+ set externalSource(value) {
2401
+ this._externalSource = value;
2402
+ this.loaded = false;
2403
+ this._prepareExternalSource();
2404
+ }
2405
+ get externalSource() {
2406
+ return this._externalSource;
2407
+ }
2408
+ showClass() {
2409
+ return true;
2410
+ }
2411
+ ngOnInit() {
2412
+ this._subs.push(this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)), this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
2413
+ }
2414
+ ngOnDestroy() {
2415
+ this._subs.forEach(s => s.unsubscribe());
2416
+ }
2417
+ _prepareExternalSource() {
2418
+ return __awaiter(this, void 0, void 0, function* () {
2419
+ if (!this._externalSource) {
2420
+ return;
2421
+ }
2422
+ this.externalUrl = undefined;
2423
+ this.externalSettings = {};
2424
+ if (this.externalSource.type === 'CATF') {
2425
+ // get bundle settings from external source
2426
+ const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
2427
+ this.externalSettings = JSON.parse(bundleSettings);
2428
+ if (this.options) {
2429
+ this.externalSettings.options = this.options;
2430
+ }
2431
+ // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
2432
+ // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
2433
+ if (this.externalSource.username && this.externalSource.password) {
2434
+ this.externalSettings.useLoginEncryption = true;
2435
+ this.externalSettings.username = this.externalSource.username;
2436
+ this.externalSettings.password = this.externalSource.password;
2437
+ }
2438
+ // finally show the catalog
2439
+ this.showProduct = true;
2184
2440
  }
2185
- ],
2186
- exports: [IoneProductComponent],
2187
- bootstrap: [
2188
- IoneProductComponent
2189
- ]
2190
- })
2191
- ], IoneProductModule);
2441
+ else {
2442
+ this.externalUrl = this.externalSource.url;
2443
+ this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
2444
+ this.showProduct = false;
2445
+ }
2446
+ this.loaded = true;
2447
+ });
2448
+ }
2449
+ }
2450
+ ProductExternalSourceComponent.decorators = [
2451
+ { type: Component, args: [{
2452
+ selector: 'co-product-external-source',
2453
+ template: `
2454
+ <ng-container *ngIf="loaded">
2455
+ <ng-container *ngIf="showProduct">
2456
+ <app-product-page
2457
+ [sku]="sku"
2458
+ [settings]="externalSettings"
2459
+ ></app-product-page>
2460
+ </ng-container>
2461
+ <ng-container *ngIf="!showProduct">
2462
+ <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
2463
+ </ng-container>
2464
+ </ng-container>
2465
+ `,
2466
+ providers: [
2467
+ ProductEventService,
2468
+ ProductSettingsService,
2469
+ ProductConnectorAdapterService,
2470
+ ProductConnectorService
2471
+ ],
2472
+ encapsulation: ViewEncapsulation.None
2473
+ },] }
2474
+ ];
2475
+ ProductExternalSourceComponent.ctorParameters = () => [
2476
+ { type: DomSanitizer },
2477
+ { type: ProductConnectorService },
2478
+ { type: ProductEventService }
2479
+ ];
2480
+ ProductExternalSourceComponent.propDecorators = {
2481
+ sku: [{ type: Input }],
2482
+ externalSource: [{ type: Input }],
2483
+ options: [{ type: Input }],
2484
+ addToCart: [{ type: Output }],
2485
+ addToQuote: [{ type: Output }],
2486
+ alternativeClick: [{ type: Output }],
2487
+ showClass: [{ type: HostBinding, args: ['class.co-product-external-source',] }]
2488
+ };
2489
+
2490
+ class ProductExternalSourceModule {
2491
+ }
2492
+ ProductExternalSourceModule.decorators = [
2493
+ { type: NgModule, args: [{
2494
+ imports: [
2495
+ CommonModule,
2496
+ ProductPageModule
2497
+ ],
2498
+ declarations: [
2499
+ ProductExternalSourceComponent
2500
+ ],
2501
+ exports: [
2502
+ ProductExternalSourceComponent
2503
+ ]
2504
+ },] }
2505
+ ];
2192
2506
 
2193
2507
  /**
2194
2508
  * Generated bundle index. Do not edit.
2195
2509
  */
2196
2510
 
2197
- export { IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, initializeApp, ProductPageModule as ɵa, PipeModule as ɵb, ProductSymbolsComponent as ɵba, IoneProductComponent as ɵbb, ProductInitializerService as ɵbc, LocalizePipe as ɵc, DictionaryService as ɵd, JsonUtilsService as ɵe, ProductPageComponent as ɵf, ProductConnectorService as ɵg, ProductConnectorAdapterService as ɵh, ProductSettingsService as ɵi, IconCacheService as ɵj, ProductEventService as ɵk, ProductSelectorTypeComponent as ɵl, ImageCarouselComponent as ɵm, ProductDescriptionComponent as ɵn, ProductAdditionalDescriptionComponent as ɵo, ProductPriceComponent as ɵp, ProductAddtocartComponent as ɵq, ProductRelatedComponent as ɵr, ProductStockComponent as ɵs, ProductDeliveryComponent as ɵt, ProductInfoTabsComponent as ɵu, ProductDocumentsComponent as ɵv, HeaderComponent as ɵw, ProductInfoComponent as ɵx, ProductAdditionalInfoComponent as ɵy, ProductPropertiesComponent as ɵz };
2511
+ export { IoneProductComponent, IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, ProductPageModule as ɵa, ProductSelectorTypeModule as ɵb, ProductStockModule as ɵba, ProductStockComponent as ɵbb, ProductDeliveryModule as ɵbc, ProductDeliveryComponent as ɵbd, ProductInfoTabsModule as ɵbe, ProductAdditionalInfoModule as ɵbf, ProductAdditionalInfoComponent as ɵbg, ProductPropertiesModule as ɵbh, ProductPropertiesComponent as ɵbi, ProductDocumentModule as ɵbj, ProductDocumentsComponent as ɵbk, ProductSymbolsModule as ɵbl, ProductSymbolsComponent as ɵbm, ProductInfoTabsComponent as ɵbn, ProductPageComponent as ɵbo, PipeModule as ɵc, LocalizePipe as ɵd, DictionaryService as ɵe, JsonUtilsService as ɵf, ProductSelectorTypeComponent as ɵg, IconCacheService as ɵh, ImageCarouselModule as ɵi, ImageCarouselComponent as ɵj, ProductConnectorService as ɵk, ProductConnectorAdapterService as ɵl, ProductSettingsService as ɵm, ProductEventService as ɵn, ProductDescriptionModule as ɵo, ProductDescriptionComponent as ɵp, ProductAdditionalDescriptionModule as ɵq, ProductAdditionalDescriptionComponent as ɵr, ProductPriceModule as ɵs, ProductPriceComponent as ɵt, ProductAddtocartModule as ɵu, ProductAddtocartComponent as ɵv, ProductRelatedModule as ɵw, HeaderModule as ɵx, HeaderComponent as ɵy, ProductRelatedComponent as ɵz };
2198
2512
  //# sourceMappingURL=colijnit-product.js.map