@colijnit/product 258.1.0 → 258.1.1

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 (28) hide show
  1. package/app/components/product-page/product-page.component.d.ts +1 -0
  2. package/app/components/product-selector-type/product-selector-type.component.d.ts +1 -0
  3. package/app/components/render-carousel/render-carousel.component.d.ts +40 -0
  4. package/app/components/render-carousel/render-carousel.module.d.ts +2 -0
  5. package/app/enum/icon.enum.d.ts +2 -0
  6. package/app/ione-product.component.d.ts +5 -11
  7. package/app/model/productSettings.d.ts +2 -14
  8. package/app/service/product-event.service.d.ts +2 -0
  9. package/bundles/colijnit-product.umd.js +552 -414
  10. package/bundles/colijnit-product.umd.js.map +1 -1
  11. package/colijnit-product.d.ts +6 -4
  12. package/colijnit-product.metadata.json +1 -1
  13. package/esm2015/app/components/product-page/product-page.component.js +8 -3
  14. package/esm2015/app/components/product-page/product-page.module.js +4 -2
  15. package/esm2015/app/components/product-selector-type/product-selector-type.component.js +10 -2
  16. package/esm2015/app/components/render-carousel/render-carousel.component.js +127 -0
  17. package/esm2015/app/components/render-carousel/render-carousel.module.js +25 -0
  18. package/esm2015/app/enum/icon.enum.js +3 -1
  19. package/esm2015/app/ione-product.component.js +26 -27
  20. package/esm2015/app/ione-product.module.js +3 -13
  21. package/esm2015/app/model/icon.js +3 -1
  22. package/esm2015/app/model/productSettings.js +4 -6
  23. package/esm2015/app/product-version.js +3 -3
  24. package/esm2015/app/service/product-event.service.js +3 -1
  25. package/esm2015/colijnit-product.js +7 -5
  26. package/fesm2015/colijnit-product.js +487 -333
  27. package/fesm2015/colijnit-product.js.map +1 -1
  28. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@colijnit/ioneconnector/build/model/options'), require('@colijnit/articleapi/build/model/article-full-object'), require('@colijnit/articleapi/build/model/super-article'), require('@colijnit/articleapi/build/articles'), require('@colijnit/articleapi/build/model/delivery-prognosis'), require('@colijnit/articleapi/build/model/document-content'), require('@colijnit/ioneconnector/build/service/business-object-factory'), require('@colijnit/transactionapi/build/transaction'), require('@colijnit/mainapi'), require('@colijnit/transactionapi/build/model/transaction-info-response.bo'), require('@colijnit/articleapi/build/model/article-list-object-extended.bo'), require('@angular/common/http'), require('@colijnit/ioneconnector/build/utils/string-utils'), require('@angular/common'), require('@angular/animations'), require('@angular/platform-browser'), require('@colijnit/corecomponents'), require('@colijnit/mainapi/build/model/co-document'), require('@colijnit/articleapi/build/model/configurator-statistics-environment'), require('@colijnit/corecomponents_v12')) :
3
- typeof define === 'function' && define.amd ? define('@colijnit/product', ['exports', '@angular/core', 'rxjs', '@colijnit/ioneconnector/build/model/options', '@colijnit/articleapi/build/model/article-full-object', '@colijnit/articleapi/build/model/super-article', '@colijnit/articleapi/build/articles', '@colijnit/articleapi/build/model/delivery-prognosis', '@colijnit/articleapi/build/model/document-content', '@colijnit/ioneconnector/build/service/business-object-factory', '@colijnit/transactionapi/build/transaction', '@colijnit/mainapi', '@colijnit/transactionapi/build/model/transaction-info-response.bo', '@colijnit/articleapi/build/model/article-list-object-extended.bo', '@angular/common/http', '@colijnit/ioneconnector/build/utils/string-utils', '@angular/common', '@angular/animations', '@angular/platform-browser', '@colijnit/corecomponents', '@colijnit/mainapi/build/model/co-document', '@colijnit/articleapi/build/model/configurator-statistics-environment', '@colijnit/corecomponents_v12'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.colijnit = global.colijnit || {}, global.colijnit.product = {}), global.ng.core, global.rxjs, global.options, global.articleFullObject, global.superArticle, global.articles, global.deliveryPrognosis, global.documentContent, global.businessObjectFactory, global.transaction, global.mainapi, global.transactionInfoResponse_bo, global.articleListObjectExtended_bo, global.ng.common.http, global.stringUtils, global.ng.common, global.ng.animations, global.ng.platformBrowser, global.corecomponents, global.coDocument, global.configuratorStatisticsEnvironment, global.corecomponents_v12));
5
- })(this, (function (exports, i0, rxjs, options, articleFullObject, superArticle, articles, deliveryPrognosis, documentContent, businessObjectFactory, transaction, mainapi, transactionInfoResponse_bo, articleListObjectExtended_bo, i1, stringUtils, common, animations, i1$1, corecomponents, coDocument, configuratorStatisticsEnvironment, corecomponents_v12) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/common/http'), require('@colijnit/ioneconnector/build/utils/string-utils'), require('@colijnit/ioneconnector/build/model/options'), require('@colijnit/articleapi/build/model/article-full-object'), require('@colijnit/articleapi/build/model/super-article'), require('@colijnit/articleapi/build/articles'), require('@colijnit/articleapi/build/model/delivery-prognosis'), require('@colijnit/articleapi/build/model/document-content'), require('@colijnit/ioneconnector/build/service/business-object-factory'), require('@colijnit/transactionapi/build/transaction'), require('@colijnit/mainapi'), require('@colijnit/transactionapi/build/model/transaction-info-response.bo'), require('@colijnit/articleapi/build/model/article-list-object-extended.bo'), require('@angular/common'), require('@angular/animations'), require('@angular/platform-browser'), require('@colijnit/corecomponents'), require('@colijnit/mainapi/build/model/co-document'), require('@colijnit/articleapi/build/model/configurator-statistics-environment'), require('@colijnit/corecomponents_v12')) :
3
+ typeof define === 'function' && define.amd ? define('@colijnit/product', ['exports', '@angular/core', 'rxjs', '@angular/common/http', '@colijnit/ioneconnector/build/utils/string-utils', '@colijnit/ioneconnector/build/model/options', '@colijnit/articleapi/build/model/article-full-object', '@colijnit/articleapi/build/model/super-article', '@colijnit/articleapi/build/articles', '@colijnit/articleapi/build/model/delivery-prognosis', '@colijnit/articleapi/build/model/document-content', '@colijnit/ioneconnector/build/service/business-object-factory', '@colijnit/transactionapi/build/transaction', '@colijnit/mainapi', '@colijnit/transactionapi/build/model/transaction-info-response.bo', '@colijnit/articleapi/build/model/article-list-object-extended.bo', '@angular/common', '@angular/animations', '@angular/platform-browser', '@colijnit/corecomponents', '@colijnit/mainapi/build/model/co-document', '@colijnit/articleapi/build/model/configurator-statistics-environment', '@colijnit/corecomponents_v12'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.colijnit = global.colijnit || {}, global.colijnit.product = {}), global.ng.core, global.rxjs, global.ng.common.http, global.stringUtils, global.options, global.articleFullObject, global.superArticle, global.articles, global.deliveryPrognosis, global.documentContent, global.businessObjectFactory, global.transaction, global.mainapi, global.transactionInfoResponse_bo, global.articleListObjectExtended_bo, global.ng.common, global.ng.animations, global.ng.platformBrowser, global.corecomponents, global.coDocument, global.configuratorStatisticsEnvironment, global.corecomponents_v12));
5
+ })(this, (function (exports, i0, rxjs, i1, stringUtils, options, articleFullObject, superArticle, articles, deliveryPrognosis, documentContent, businessObjectFactory, transaction, mainapi, transactionInfoResponse_bo, articleListObjectExtended_bo, common, animations, i1$1, corecomponents, coDocument, configuratorStatisticsEnvironment, corecomponents_v12) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -31,8 +31,8 @@
31
31
  function Version() {
32
32
  this.name = "@colijnit/product";
33
33
  this.description = "Product detail page project for iOne";
34
- this.symVer = "258.1.0";
35
- this.publishDate = "4/10/2025, 1:56:55 PM";
34
+ this.symVer = "258.1.1";
35
+ this.publishDate = "27-5-2025 09:44:32";
36
36
  }
37
37
  return Version;
38
38
  }());
@@ -514,6 +514,32 @@
514
514
  __disposeResources: __disposeResources,
515
515
  };
516
516
 
517
+ var ProductEventService = /** @class */ (function () {
518
+ function ProductEventService() {
519
+ this.onAddToCart = new rxjs.Subject();
520
+ this.onAlternativeClick = new rxjs.Subject();
521
+ this.onAddToQuote = new rxjs.Subject();
522
+ this.onForceRenderImage = new rxjs.Subject();
523
+ this.onArticleReceived = new rxjs.Subject();
524
+ this.onSelectionsReceived = new rxjs.Subject();
525
+ this.onImageReceived = new rxjs.Subject();
526
+ this.onRenderStarted = new rxjs.Subject();
527
+ this.onRenderImageReceived = new rxjs.Subject();
528
+ this.onDraftRenderImageReceived = new rxjs.Subject();
529
+ this.onArticleInfoReceived = new rxjs.Subject();
530
+ this.onAnswersAvailable = new rxjs.Subject();
531
+ this.onReadyToRender = new rxjs.Subject();
532
+ this.onUpdateProductInfoTab = new rxjs.Subject();
533
+ this.errorMessage = new rxjs.Subject();
534
+ this.onGetRenderForRenderCarousel = new rxjs.Subject();
535
+ }
536
+ return ProductEventService;
537
+ }());
538
+ ProductEventService.decorators = [
539
+ { type: i0.Directive },
540
+ { type: i0.Injectable }
541
+ ];
542
+
517
543
  var JsonUtilsService = /** @class */ (function () {
518
544
  function JsonUtilsService() {
519
545
  }
@@ -552,6 +578,201 @@
552
578
  },] }
553
579
  ];
554
580
 
581
+ var LanguageCode;
582
+ (function (LanguageCode) {
583
+ LanguageCode["Dutch"] = "nl-NL";
584
+ LanguageCode["English"] = "en-GB";
585
+ LanguageCode["German"] = "de-DE";
586
+ LanguageCode["French"] = "fr-FR";
587
+ })(LanguageCode || (LanguageCode = {}));
588
+
589
+ var Dictionary = /** @class */ (function () {
590
+ function Dictionary() {
591
+ this.strings = {
592
+ "en": {
593
+ "ADDITIONAL_DATA": "Additional information",
594
+ "ALTERNATIVE_PRODUCTS": "Alternative products",
595
+ "ARTICLE_NUMBER": "Productnumber",
596
+ "AS_CONFIGURED": "As configured",
597
+ "CATEGORY": "Category",
598
+ "CATEGORY_TYPE": "Category type",
599
+ "CONFIGURE": "Configure",
600
+ "DELIVERY_TIME_PERIOD": "Delivery time",
601
+ "DESCRIPTION": "Description",
602
+ "DOCUMENTS": "Documents",
603
+ "DOWNLOADS": "Downloads",
604
+ "FEATURES": "Features",
605
+ "HEIGHT": "Height",
606
+ "MATERIAL": "Material",
607
+ "PRODUCT_IN_STOCK": "In stock",
608
+ "PRODUCT_LIMITED_STOCK": "Limited stock",
609
+ "PRODUCT_NOT_IN_STOCK": "Not in stock",
610
+ "PROPERTIES": "Characteristics",
611
+ "QUOTATION": "Quotation",
612
+ "READ_MORE": "Read more",
613
+ "RELATED_PRODUCTS": "Related products",
614
+ "SHOPPING_CART_IN": "In Shopping Cart",
615
+ "SHOW_IN": "Show in",
616
+ "STOCK": "Stock",
617
+ "SYMBOLS": "Symbols",
618
+ "TITLE": "Title",
619
+ "TURNOVERGROUP": "Turnover group",
620
+ "VARIANTS": "Variations",
621
+ "WIDTH": "Width",
622
+ "SUGGESTION": "Suggestion",
623
+ },
624
+ "nl": {
625
+ "ADDITIONAL_DATA": "Extra informatie",
626
+ "ALTERNATIVE_PRODUCTS": "Alternatieve producten",
627
+ "ARTICLE_NUMBER": "Artikel nummer",
628
+ "AS_CONFIGURED": "Zoals samengesteld",
629
+ "CATEGORY": "Categorie",
630
+ "CATEGORY_TYPE": "Categorie type",
631
+ "CONFIGURE": "Configureren",
632
+ "DELIVERY_TIME_PERIOD": "Levertijd",
633
+ "DESCRIPTION": "Omschrijving",
634
+ "DOCUMENTS": "Documenten",
635
+ "DOWNLOADS": "Downloads",
636
+ "FEATURES": "Kenmerken",
637
+ "HEIGHT": "Hoogte",
638
+ "MATERIAL": "Materiaal",
639
+ "PRODUCT_IN_STOCK": "Op voorraad",
640
+ "PRODUCT_LIMITED_STOCK": "Beperkt op voorraad",
641
+ "PRODUCT_NOT_IN_STOCK": "Niet op voorraad",
642
+ "PROPERTIES": "Eigenschappen",
643
+ "QUOTATION": "Quotatie",
644
+ "READ_MORE": "Lees meer",
645
+ "RELATED_PRODUCTS": "Gerelateerde producten",
646
+ "SHOPPING_CART_IN": "In winkelwagen",
647
+ "SHOW_IN": "Laat zien",
648
+ "STOCK": "Voorraad",
649
+ "SYMBOLS": "Symbolen",
650
+ "TITLE": "Titel",
651
+ "TURNOVERGROUP": "Omzetgroep",
652
+ "VARIANTS": "Varianten",
653
+ "WIDTH": "Breedte",
654
+ "SUGGESTION": "Suggesties bij",
655
+ },
656
+ "de": {
657
+ "ADDITIONAL_DATA": "Extra informatie",
658
+ "ALTERNATIVE_PRODUCTS": "Alternative Produkte",
659
+ "ARTICLE_NUMBER": "Artikelnummer",
660
+ "CATEGORY": "Kategorie",
661
+ "CATEGORY_TYPE": "Kategorietype",
662
+ "CONFIGURE": "Konfigurieren",
663
+ "DELIVERY_TIME_PERIOD": "Lieferzeit",
664
+ "DESCRIPTION": "Beschreibung",
665
+ "DOCUMENTS": "Dateien",
666
+ "DOWNLOADS": "Downloads",
667
+ "FEATURES": "Eigenschaften",
668
+ "HEIGHT": "Höhe",
669
+ "MATERIAL": "Material",
670
+ "PRODUCT_IN_STOCK": "Auf lager",
671
+ "PRODUCT_LIMITED_STOCK": "Begrentzt auf lager",
672
+ "PRODUCT_NOT_IN_STOCK": "Nicht auf lager",
673
+ "PROPERTIES": "Eigenschaften",
674
+ "QUOTATION": "Angebot",
675
+ "READ_MORE": "Lesen Sie mehr",
676
+ "RELATED_PRODUCTS": "Verwandte Produkte",
677
+ "SHOPPING_CART_IN": "Im Einkaufswagen",
678
+ "SHOW_IN": "Zeigen",
679
+ "STOCK": "Vorrat",
680
+ "SYMBOLS": "Symbole",
681
+ "TITLE": "Titulatur",
682
+ "TURNOVERGROUP": "Umsatzgruppe",
683
+ "VARIANTS": "Varianten",
684
+ "WIDTH": "Breite",
685
+ "SUGGESTION": "Suggesties bij",
686
+ }
687
+ };
688
+ }
689
+ return Dictionary;
690
+ }());
691
+
692
+ // The localization service, providing peers with text translation functionality.
693
+ var DictionaryService = /** @class */ (function () {
694
+ function DictionaryService(_http, _jsonUtils) {
695
+ this._http = _http;
696
+ this._jsonUtils = _jsonUtils;
697
+ this.dictionaryUrl = 'js/browser/res/dictionary/';
698
+ // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();
699
+ this._dictionaries = new Map();
700
+ // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.
701
+ this._placeholder = '|~';
702
+ }
703
+ Object.defineProperty(DictionaryService.prototype, "language", {
704
+ get: function () {
705
+ return this._language;
706
+ },
707
+ enumerable: false,
708
+ configurable: true
709
+ });
710
+ Object.defineProperty(DictionaryService.prototype, "rootUrl", {
711
+ set: function (value) {
712
+ this._rootUrl = value;
713
+ this._dictBasePath = this._rootUrl + '/' + this.dictionaryUrl;
714
+ },
715
+ enumerable: false,
716
+ configurable: true
717
+ });
718
+ // Loads the dictionary for given language in memory.
719
+ DictionaryService.prototype.setDictionary = function (language) {
720
+ return __awaiter(this, void 0, void 0, function () {
721
+ var dictionary;
722
+ return __generator(this, function (_a) {
723
+ this._language = language || LanguageCode.Dutch;
724
+ if (!this._dictionaries.has(this._language)) {
725
+ dictionary = new Dictionary();
726
+ if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {
727
+ this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);
728
+ }
729
+ }
730
+ return [2 /*return*/];
731
+ });
732
+ });
733
+ };
734
+ /**
735
+ * Returns the localized text for the given dictionary key.
736
+ * @param {string} key
737
+ * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val
738
+ * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value
739
+ * @returns {string} The translated text for given dictionary key
740
+ */
741
+ DictionaryService.prototype.get = function (key, upperCaseFirst) {
742
+ if (upperCaseFirst === void 0) { upperCaseFirst = true; }
743
+ var replacementTexts = [];
744
+ for (var _i = 2; _i < arguments.length; _i++) {
745
+ replacementTexts[_i - 2] = arguments[_i];
746
+ }
747
+ if (!stringUtils.StringUtils.IsStringWithLength(key)) {
748
+ return key || '';
749
+ }
750
+ var text = this._dictionaries.get(this.language)[key];
751
+ text = stringUtils.StringUtils.IsStringWithLength(text) ? text : key;
752
+ if (upperCaseFirst) {
753
+ text = text.charAt(0).toUpperCase() + text.slice(1);
754
+ }
755
+ else {
756
+ text = text.charAt(0).toLowerCase() + text.slice(1);
757
+ }
758
+ if (replacementTexts.length > 0) {
759
+ text = stringUtils.StringUtils.ReplaceOccurrencesIn.apply(stringUtils.StringUtils, __spreadArray([text, this._placeholder], __read(replacementTexts)));
760
+ }
761
+ return text;
762
+ };
763
+ return DictionaryService;
764
+ }());
765
+ DictionaryService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(i0__namespace.ɵɵinject(i1__namespace.HttpClient), i0__namespace.ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
766
+ DictionaryService.decorators = [
767
+ { type: i0.Injectable, args: [{
768
+ providedIn: 'root'
769
+ },] }
770
+ ];
771
+ DictionaryService.ctorParameters = function () { return [
772
+ { type: i1.HttpClient },
773
+ { type: JsonUtilsService }
774
+ ]; };
775
+
555
776
  var SettingsOptions = /** @class */ (function () {
556
777
  function SettingsOptions() {
557
778
  this.showStockStatus = false;
@@ -573,7 +794,7 @@
573
794
  RenderModes["RenderIone"] = "render_ione";
574
795
  })(RenderModes || (RenderModes = {}));
575
796
 
576
- var RenderParameters = /** @class */ (function () {
797
+ var RenderParameters$1 = /** @class */ (function () {
577
798
  function RenderParameters() {
578
799
  this.host = "";
579
800
  this.port = 0;
@@ -583,44 +804,123 @@
583
804
  return RenderParameters;
584
805
  }());
585
806
 
586
- var ProductSettings = /** @class */ (function () {
807
+ var ProductSettings = /** @class */ (function (_super) {
808
+ __extends(ProductSettings, _super);
587
809
  function ProductSettings() {
588
- this.session = undefined;
589
- this.useGroups = true;
590
- this.useRenders = false;
591
- this.useLoginEncryption = true;
592
- this.createWebOrder = true;
593
- this.useMatch = false;
594
- this.currencySymbol = '€';
595
- this.options = new SettingsOptions();
596
- this.renderParameters = new RenderParameters();
810
+ var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
811
+ _this.session = undefined;
812
+ _this.createWebOrder = true;
813
+ _this.currencySymbol = '€';
814
+ _this.options = new SettingsOptions();
815
+ _this.renderParameters = new RenderParameters$1();
816
+ return _this;
597
817
  }
598
818
  return ProductSettings;
599
- }());
819
+ }(options.Options));
600
820
 
601
- var ProductEventService = /** @class */ (function () {
602
- function ProductEventService() {
603
- this.onAddToCart = new rxjs.Subject();
604
- this.onAlternativeClick = new rxjs.Subject();
605
- this.onAddToQuote = new rxjs.Subject();
606
- this.onForceRenderImage = new rxjs.Subject();
607
- this.onArticleReceived = new rxjs.Subject();
608
- this.onSelectionsReceived = new rxjs.Subject();
609
- this.onImageReceived = new rxjs.Subject();
610
- this.onRenderStarted = new rxjs.Subject();
611
- this.onRenderImageReceived = new rxjs.Subject();
612
- this.onDraftRenderImageReceived = new rxjs.Subject();
613
- this.onArticleInfoReceived = new rxjs.Subject();
614
- this.onAnswersAvailable = new rxjs.Subject();
615
- this.onUpdateProductInfoTab = new rxjs.Subject();
616
- this.errorMessage = new rxjs.Subject();
821
+ var ProductSettingsService = /** @class */ (function () {
822
+ function ProductSettingsService(_jsonUtilsService, _dictionaryService) {
823
+ this._jsonUtilsService = _jsonUtilsService;
824
+ this._dictionaryService = _dictionaryService;
825
+ this.settingsLoaded = new rxjs.BehaviorSubject(false);
617
826
  }
618
- return ProductEventService;
827
+ Object.defineProperty(ProductSettingsService.prototype, "settings", {
828
+ get: function () {
829
+ return this._settings;
830
+ },
831
+ set: function (value) {
832
+ this._settings = value;
833
+ },
834
+ enumerable: false,
835
+ configurable: true
836
+ });
837
+ ProductSettingsService.prototype.initializeSettings = function (finish) {
838
+ if (finish === void 0) { finish = true; }
839
+ return __awaiter(this, void 0, void 0, function () {
840
+ var jsonSettings;
841
+ return __generator(this, function (_a) {
842
+ switch (_a.label) {
843
+ case 0:
844
+ if (!(typeof settings === 'undefined')) return [3 /*break*/, 2];
845
+ return [4 /*yield*/, this._jsonUtilsService.readJsonFile('product-settings.json')];
846
+ case 1:
847
+ jsonSettings = _a.sent();
848
+ if (jsonSettings) {
849
+ this.settings = Object.assign(new ProductSettings(), jsonSettings);
850
+ this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
851
+ if (finish) {
852
+ this.settingsFinished();
853
+ }
854
+ }
855
+ return [3 /*break*/, 3];
856
+ case 2:
857
+ this.settings = Object.assign(new ProductSettings(), settings);
858
+ this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
859
+ if (finish) {
860
+ this.settingsFinished();
861
+ }
862
+ _a.label = 3;
863
+ case 3: return [2 /*return*/];
864
+ }
865
+ });
866
+ });
867
+ };
868
+ ProductSettingsService.prototype.createSettingsFromObject = function (obj) {
869
+ return __awaiter(this, void 0, void 0, function () {
870
+ var ownOptions, ownRenderParameters;
871
+ return __generator(this, function (_a) {
872
+ if (!this.settings) {
873
+ this.settings = new ProductSettings();
874
+ }
875
+ ownOptions = Object.assign({}, this.settings.options);
876
+ ownRenderParameters = Object.assign({}, this.settings.renderParameters);
877
+ this.settings = Object.assign({}, this.settings, obj);
878
+ if (obj.renderParameters) {
879
+ this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);
880
+ }
881
+ if (obj.options) {
882
+ this.settings.options = Object.assign({}, ownOptions, obj.options);
883
+ }
884
+ if (obj.hasOwnProperty('assetPath')) {
885
+ this.settings.assetPath = obj['assetPath'];
886
+ if (this.settings.assetPath[this.settings.assetPath.length - 1] !== '/') {
887
+ this.settings.assetPath += '/';
888
+ }
889
+ this.settings.threeDAssetPath = this.settings.assetPath;
890
+ }
891
+ if (obj.hasOwnProperty('threeDAssetPath')) {
892
+ this.settings.threeDAssetPath = obj['threeDAssetPath'];
893
+ if (this.settings.threeDAssetPath[this.settings.threeDAssetPath.length - 1] !== '/') {
894
+ this.settings.threeDAssetPath += '/';
895
+ }
896
+ }
897
+ this.settingsFinished();
898
+ return [2 /*return*/];
899
+ });
900
+ });
901
+ };
902
+ ProductSettingsService.prototype.settingsFinished = function () {
903
+ return __awaiter(this, void 0, void 0, function () {
904
+ return __generator(this, function (_a) {
905
+ switch (_a.label) {
906
+ case 0: return [4 /*yield*/, this._dictionaryService.setDictionary(this.settings.languageCode)];
907
+ case 1:
908
+ _a.sent();
909
+ this.settingsLoaded.next(true);
910
+ return [2 /*return*/];
911
+ }
912
+ });
913
+ });
914
+ };
915
+ return ProductSettingsService;
619
916
  }());
620
- ProductEventService.decorators = [
621
- { type: i0.Directive },
917
+ ProductSettingsService.decorators = [
622
918
  { type: i0.Injectable }
623
- ];
919
+ ];
920
+ ProductSettingsService.ctorParameters = function () { return [
921
+ { type: JsonUtilsService },
922
+ { type: DictionaryService }
923
+ ]; };
624
924
 
625
925
  // 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.
626
926
  // Only to be used by the IOneControllerService.
@@ -812,382 +1112,83 @@
812
1112
  var response;
813
1113
  return __generator(this, function (_a) {
814
1114
  switch (_a.label) {
815
- case 0: return [4 /*yield*/, this.articleConnector.getArticleFullObject(goodId, showLoader)];
816
- case 1:
817
- response = _a.sent();
818
- if (response && response.validationResult && response.validationResult.success) {
819
- return [2 /*return*/, this._boFactory.makeWithRawBackendData(articleFullObject.ArticleFullObject, response.resultObject)];
820
- }
821
- else {
822
- return [2 /*return*/, null];
823
- }
824
- return [2 /*return*/];
825
- }
826
- });
827
- });
828
- };
829
- ProductConnectorAdapterService.prototype.getSuperArticle = function (id, branch) {
830
- return __awaiter(this, void 0, void 0, function () {
831
- var response;
832
- return __generator(this, function (_a) {
833
- switch (_a.label) {
834
- case 0: return [4 /*yield*/, this.articleConnector.getSuperArticleQuickSel(id, branch)];
835
- case 1:
836
- response = _a.sent();
837
- if (response && response.validationResult && response.validationResult.success) {
838
- return [2 /*return*/, this._boFactory.makeWithRawBackendData(superArticle.SuperArticle, response.resultObject)];
839
- }
840
- else {
841
- return [2 /*return*/, null];
842
- }
843
- return [2 /*return*/];
844
- }
845
- });
846
- });
847
- };
848
- ProductConnectorAdapterService.prototype.getDocumentContent = function (docId, thumbnail) {
849
- if (thumbnail === void 0) { thumbnail = true; }
850
- return __awaiter(this, void 0, void 0, function () {
851
- var response;
852
- return __generator(this, function (_a) {
853
- switch (_a.label) {
854
- case 0: return [4 /*yield*/, this.articleConnector.getDocumentContent(docId, thumbnail)];
855
- case 1:
856
- response = _a.sent();
857
- if (response && response.validationResult && response.validationResult.success) {
858
- return [2 /*return*/, this._boFactory.makeWithRawBackendData(documentContent.DocumentContent, response.resultObject)];
859
- }
860
- else {
861
- return [2 /*return*/, null];
862
- }
863
- return [2 /*return*/];
864
- }
865
- });
866
- });
867
- };
868
- ProductConnectorAdapterService.prototype.addWebSessionTransactionLine = function (transactionUuid, sku, quantity) {
869
- return __awaiter(this, void 0, void 0, function () {
870
- var response, infoResponse;
871
- return __generator(this, function (_a) {
872
- switch (_a.label) {
873
- case 0: return [4 /*yield*/, this.transactionConnector.addWebSessionTransactionLine(transactionUuid, sku, quantity)];
874
- case 1:
875
- response = _a.sent();
876
- if (response && response.validationResult && response.validationResult.success) {
877
- infoResponse = this._boFactory.makeWithRawBackendData(transactionInfoResponse_bo.TransactionInfoResponse, response.resultObject);
878
- return [2 /*return*/, infoResponse.transactionInfo.uuid];
879
- }
880
- return [2 /*return*/, ""];
881
- }
882
- });
883
- });
884
- };
885
- return ProductConnectorAdapterService;
886
- }());
887
- ProductConnectorAdapterService.decorators = [
888
- { type: i0.Injectable }
889
- ];
890
- ProductConnectorAdapterService.ctorParameters = function () { return [
891
- { type: ProductEventService }
892
- ]; };
893
-
894
- var LanguageCode;
895
- (function (LanguageCode) {
896
- LanguageCode["Dutch"] = "nl-NL";
897
- LanguageCode["English"] = "en-GB";
898
- LanguageCode["German"] = "de-DE";
899
- LanguageCode["French"] = "fr-FR";
900
- })(LanguageCode || (LanguageCode = {}));
901
-
902
- var Dictionary = /** @class */ (function () {
903
- function Dictionary() {
904
- this.strings = {
905
- "en": {
906
- "ADDITIONAL_DATA": "Additional information",
907
- "ALTERNATIVE_PRODUCTS": "Alternative products",
908
- "ARTICLE_NUMBER": "Productnumber",
909
- "AS_CONFIGURED": "As configured",
910
- "CATEGORY": "Category",
911
- "CATEGORY_TYPE": "Category type",
912
- "CONFIGURE": "Configure",
913
- "DELIVERY_TIME_PERIOD": "Delivery time",
914
- "DESCRIPTION": "Description",
915
- "DOCUMENTS": "Documents",
916
- "DOWNLOADS": "Downloads",
917
- "FEATURES": "Features",
918
- "HEIGHT": "Height",
919
- "MATERIAL": "Material",
920
- "PRODUCT_IN_STOCK": "In stock",
921
- "PRODUCT_LIMITED_STOCK": "Limited stock",
922
- "PRODUCT_NOT_IN_STOCK": "Not in stock",
923
- "PROPERTIES": "Characteristics",
924
- "QUOTATION": "Quotation",
925
- "READ_MORE": "Read more",
926
- "RELATED_PRODUCTS": "Related products",
927
- "SHOPPING_CART_IN": "In Shopping Cart",
928
- "SHOW_IN": "Show in",
929
- "STOCK": "Stock",
930
- "SYMBOLS": "Symbols",
931
- "TITLE": "Title",
932
- "TURNOVERGROUP": "Turnover group",
933
- "VARIANTS": "Variations",
934
- "WIDTH": "Width",
935
- "SUGGESTION": "Suggestion",
936
- },
937
- "nl": {
938
- "ADDITIONAL_DATA": "Extra informatie",
939
- "ALTERNATIVE_PRODUCTS": "Alternatieve producten",
940
- "ARTICLE_NUMBER": "Artikel nummer",
941
- "AS_CONFIGURED": "Zoals samengesteld",
942
- "CATEGORY": "Categorie",
943
- "CATEGORY_TYPE": "Categorie type",
944
- "CONFIGURE": "Configureren",
945
- "DELIVERY_TIME_PERIOD": "Levertijd",
946
- "DESCRIPTION": "Omschrijving",
947
- "DOCUMENTS": "Documenten",
948
- "DOWNLOADS": "Downloads",
949
- "FEATURES": "Kenmerken",
950
- "HEIGHT": "Hoogte",
951
- "MATERIAL": "Materiaal",
952
- "PRODUCT_IN_STOCK": "Op voorraad",
953
- "PRODUCT_LIMITED_STOCK": "Beperkt op voorraad",
954
- "PRODUCT_NOT_IN_STOCK": "Niet op voorraad",
955
- "PROPERTIES": "Eigenschappen",
956
- "QUOTATION": "Quotatie",
957
- "READ_MORE": "Lees meer",
958
- "RELATED_PRODUCTS": "Gerelateerde producten",
959
- "SHOPPING_CART_IN": "In winkelwagen",
960
- "SHOW_IN": "Laat zien",
961
- "STOCK": "Voorraad",
962
- "SYMBOLS": "Symbolen",
963
- "TITLE": "Titel",
964
- "TURNOVERGROUP": "Omzetgroep",
965
- "VARIANTS": "Varianten",
966
- "WIDTH": "Breedte",
967
- "SUGGESTION": "Suggesties bij",
968
- },
969
- "de": {
970
- "ADDITIONAL_DATA": "Extra informatie",
971
- "ALTERNATIVE_PRODUCTS": "Alternative Produkte",
972
- "ARTICLE_NUMBER": "Artikelnummer",
973
- "CATEGORY": "Kategorie",
974
- "CATEGORY_TYPE": "Kategorietype",
975
- "CONFIGURE": "Konfigurieren",
976
- "DELIVERY_TIME_PERIOD": "Lieferzeit",
977
- "DESCRIPTION": "Beschreibung",
978
- "DOCUMENTS": "Dateien",
979
- "DOWNLOADS": "Downloads",
980
- "FEATURES": "Eigenschaften",
981
- "HEIGHT": "Höhe",
982
- "MATERIAL": "Material",
983
- "PRODUCT_IN_STOCK": "Auf lager",
984
- "PRODUCT_LIMITED_STOCK": "Begrentzt auf lager",
985
- "PRODUCT_NOT_IN_STOCK": "Nicht auf lager",
986
- "PROPERTIES": "Eigenschaften",
987
- "QUOTATION": "Angebot",
988
- "READ_MORE": "Lesen Sie mehr",
989
- "RELATED_PRODUCTS": "Verwandte Produkte",
990
- "SHOPPING_CART_IN": "Im Einkaufswagen",
991
- "SHOW_IN": "Zeigen",
992
- "STOCK": "Vorrat",
993
- "SYMBOLS": "Symbole",
994
- "TITLE": "Titulatur",
995
- "TURNOVERGROUP": "Umsatzgruppe",
996
- "VARIANTS": "Varianten",
997
- "WIDTH": "Breite",
998
- "SUGGESTION": "Suggesties bij",
999
- }
1000
- };
1001
- }
1002
- return Dictionary;
1003
- }());
1004
-
1005
- // The localization service, providing peers with text translation functionality.
1006
- var DictionaryService = /** @class */ (function () {
1007
- function DictionaryService(_http, _jsonUtils) {
1008
- this._http = _http;
1009
- this._jsonUtils = _jsonUtils;
1010
- this.dictionaryUrl = 'js/browser/res/dictionary/';
1011
- // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();
1012
- this._dictionaries = new Map();
1013
- // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.
1014
- this._placeholder = '|~';
1015
- }
1016
- Object.defineProperty(DictionaryService.prototype, "language", {
1017
- get: function () {
1018
- return this._language;
1019
- },
1020
- enumerable: false,
1021
- configurable: true
1022
- });
1023
- Object.defineProperty(DictionaryService.prototype, "rootUrl", {
1024
- set: function (value) {
1025
- this._rootUrl = value;
1026
- this._dictBasePath = this._rootUrl + '/' + this.dictionaryUrl;
1027
- },
1028
- enumerable: false,
1029
- configurable: true
1030
- });
1031
- // Loads the dictionary for given language in memory.
1032
- DictionaryService.prototype.setDictionary = function (language) {
1033
- return __awaiter(this, void 0, void 0, function () {
1034
- var dictionary;
1035
- return __generator(this, function (_a) {
1036
- this._language = language || LanguageCode.Dutch;
1037
- if (!this._dictionaries.has(this._language)) {
1038
- dictionary = new Dictionary();
1039
- if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {
1040
- this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);
1041
- }
1115
+ case 0: return [4 /*yield*/, this.articleConnector.getArticleFullObject(goodId, showLoader)];
1116
+ case 1:
1117
+ response = _a.sent();
1118
+ if (response && response.validationResult && response.validationResult.success) {
1119
+ return [2 /*return*/, this._boFactory.makeWithRawBackendData(articleFullObject.ArticleFullObject, response.resultObject)];
1120
+ }
1121
+ else {
1122
+ return [2 /*return*/, null];
1123
+ }
1124
+ return [2 /*return*/];
1042
1125
  }
1043
- return [2 /*return*/];
1044
1126
  });
1045
1127
  });
1046
1128
  };
1047
- /**
1048
- * Returns the localized text for the given dictionary key.
1049
- * @param {string} key
1050
- * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val
1051
- * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value
1052
- * @returns {string} The translated text for given dictionary key
1053
- */
1054
- DictionaryService.prototype.get = function (key, upperCaseFirst) {
1055
- if (upperCaseFirst === void 0) { upperCaseFirst = true; }
1056
- var replacementTexts = [];
1057
- for (var _i = 2; _i < arguments.length; _i++) {
1058
- replacementTexts[_i - 2] = arguments[_i];
1059
- }
1060
- if (!stringUtils.StringUtils.IsStringWithLength(key)) {
1061
- return key || '';
1062
- }
1063
- var text = this._dictionaries.get(this.language)[key];
1064
- text = stringUtils.StringUtils.IsStringWithLength(text) ? text : key;
1065
- if (upperCaseFirst) {
1066
- text = text.charAt(0).toUpperCase() + text.slice(1);
1067
- }
1068
- else {
1069
- text = text.charAt(0).toLowerCase() + text.slice(1);
1070
- }
1071
- if (replacementTexts.length > 0) {
1072
- text = stringUtils.StringUtils.ReplaceOccurrencesIn.apply(stringUtils.StringUtils, __spreadArray([text, this._placeholder], __read(replacementTexts)));
1073
- }
1074
- return text;
1075
- };
1076
- return DictionaryService;
1077
- }());
1078
- DictionaryService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(i0__namespace.ɵɵinject(i1__namespace.HttpClient), i0__namespace.ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
1079
- DictionaryService.decorators = [
1080
- { type: i0.Injectable, args: [{
1081
- providedIn: 'root'
1082
- },] }
1083
- ];
1084
- DictionaryService.ctorParameters = function () { return [
1085
- { type: i1.HttpClient },
1086
- { type: JsonUtilsService }
1087
- ]; };
1088
-
1089
- var ProductSettingsService = /** @class */ (function () {
1090
- function ProductSettingsService(_jsonUtilsService, _dictionaryService) {
1091
- this._jsonUtilsService = _jsonUtilsService;
1092
- this._dictionaryService = _dictionaryService;
1093
- this.settingsLoaded = new rxjs.BehaviorSubject(false);
1094
- }
1095
- Object.defineProperty(ProductSettingsService.prototype, "settings", {
1096
- get: function () {
1097
- return this._settings;
1098
- },
1099
- set: function (value) {
1100
- this._settings = value;
1101
- },
1102
- enumerable: false,
1103
- configurable: true
1104
- });
1105
- ProductSettingsService.prototype.initializeSettings = function (finish) {
1106
- if (finish === void 0) { finish = true; }
1129
+ ProductConnectorAdapterService.prototype.getSuperArticle = function (id, branch) {
1107
1130
  return __awaiter(this, void 0, void 0, function () {
1108
- var jsonSettings;
1131
+ var response;
1109
1132
  return __generator(this, function (_a) {
1110
1133
  switch (_a.label) {
1111
- case 0:
1112
- if (!(typeof settings === 'undefined')) return [3 /*break*/, 2];
1113
- return [4 /*yield*/, this._jsonUtilsService.readJsonFile('product-settings.json')];
1134
+ case 0: return [4 /*yield*/, this.articleConnector.getSuperArticleQuickSel(id, branch)];
1114
1135
  case 1:
1115
- jsonSettings = _a.sent();
1116
- if (jsonSettings) {
1117
- this.settings = Object.assign(new ProductSettings(), jsonSettings);
1118
- this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
1119
- if (finish) {
1120
- this.settingsFinished();
1121
- }
1136
+ response = _a.sent();
1137
+ if (response && response.validationResult && response.validationResult.success) {
1138
+ return [2 /*return*/, this._boFactory.makeWithRawBackendData(superArticle.SuperArticle, response.resultObject)];
1122
1139
  }
1123
- return [3 /*break*/, 3];
1124
- case 2:
1125
- this.settings = Object.assign(new ProductSettings(), settings);
1126
- this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
1127
- if (finish) {
1128
- this.settingsFinished();
1140
+ else {
1141
+ return [2 /*return*/, null];
1129
1142
  }
1130
- _a.label = 3;
1131
- case 3: return [2 /*return*/];
1143
+ return [2 /*return*/];
1132
1144
  }
1133
1145
  });
1134
1146
  });
1135
1147
  };
1136
- ProductSettingsService.prototype.createSettingsFromObject = function (obj) {
1148
+ ProductConnectorAdapterService.prototype.getDocumentContent = function (docId, thumbnail) {
1149
+ if (thumbnail === void 0) { thumbnail = true; }
1137
1150
  return __awaiter(this, void 0, void 0, function () {
1138
- var ownOptions, ownRenderParameters;
1151
+ var response;
1139
1152
  return __generator(this, function (_a) {
1140
- if (!this.settings) {
1141
- this.settings = new ProductSettings();
1142
- }
1143
- ownOptions = Object.assign({}, this.settings.options);
1144
- ownRenderParameters = Object.assign({}, this.settings.renderParameters);
1145
- this.settings = Object.assign({}, this.settings, obj);
1146
- if (obj.renderParameters) {
1147
- this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);
1148
- }
1149
- if (obj.options) {
1150
- this.settings.options = Object.assign({}, ownOptions, obj.options);
1151
- }
1152
- if (obj.hasOwnProperty('assetPath')) {
1153
- this.settings.assetPath = obj['assetPath'];
1154
- if (this.settings.assetPath[this.settings.assetPath.length - 1] !== '/') {
1155
- this.settings.assetPath += '/';
1156
- }
1157
- this.settings.threeDAssetPath = this.settings.assetPath;
1158
- }
1159
- if (obj.hasOwnProperty('threeDAssetPath')) {
1160
- this.settings.threeDAssetPath = obj['threeDAssetPath'];
1161
- if (this.settings.threeDAssetPath[this.settings.threeDAssetPath.length - 1] !== '/') {
1162
- this.settings.threeDAssetPath += '/';
1163
- }
1153
+ switch (_a.label) {
1154
+ case 0: return [4 /*yield*/, this.articleConnector.getDocumentContent(docId, thumbnail)];
1155
+ case 1:
1156
+ response = _a.sent();
1157
+ if (response && response.validationResult && response.validationResult.success) {
1158
+ return [2 /*return*/, this._boFactory.makeWithRawBackendData(documentContent.DocumentContent, response.resultObject)];
1159
+ }
1160
+ else {
1161
+ return [2 /*return*/, null];
1162
+ }
1163
+ return [2 /*return*/];
1164
1164
  }
1165
- this.settingsFinished();
1166
- return [2 /*return*/];
1167
1165
  });
1168
1166
  });
1169
1167
  };
1170
- ProductSettingsService.prototype.settingsFinished = function () {
1168
+ ProductConnectorAdapterService.prototype.addWebSessionTransactionLine = function (transactionUuid, sku, quantity) {
1171
1169
  return __awaiter(this, void 0, void 0, function () {
1170
+ var response, infoResponse;
1172
1171
  return __generator(this, function (_a) {
1173
1172
  switch (_a.label) {
1174
- case 0: return [4 /*yield*/, this._dictionaryService.setDictionary(this.settings.languageCode)];
1173
+ case 0: return [4 /*yield*/, this.transactionConnector.addWebSessionTransactionLine(transactionUuid, sku, quantity)];
1175
1174
  case 1:
1176
- _a.sent();
1177
- this.settingsLoaded.next(true);
1178
- return [2 /*return*/];
1175
+ response = _a.sent();
1176
+ if (response && response.validationResult && response.validationResult.success) {
1177
+ infoResponse = this._boFactory.makeWithRawBackendData(transactionInfoResponse_bo.TransactionInfoResponse, response.resultObject);
1178
+ return [2 /*return*/, infoResponse.transactionInfo.uuid];
1179
+ }
1180
+ return [2 /*return*/, ""];
1179
1181
  }
1180
1182
  });
1181
1183
  });
1182
1184
  };
1183
- return ProductSettingsService;
1185
+ return ProductConnectorAdapterService;
1184
1186
  }());
1185
- ProductSettingsService.decorators = [
1187
+ ProductConnectorAdapterService.decorators = [
1186
1188
  { type: i0.Injectable }
1187
1189
  ];
1188
- ProductSettingsService.ctorParameters = function () { return [
1189
- { type: JsonUtilsService },
1190
- { type: DictionaryService }
1190
+ ProductConnectorAdapterService.ctorParameters = function () { return [
1191
+ { type: ProductEventService }
1191
1192
  ]; };
1192
1193
 
1193
1194
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
@@ -1327,7 +1328,7 @@
1327
1328
  ]; };
1328
1329
 
1329
1330
  var IoneProductComponent = /** @class */ (function () {
1330
- function IoneProductComponent(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
1331
+ function IoneProductComponent(_appEventService, _settingsService) {
1331
1332
  var _this = this;
1332
1333
  // this.sku = 'CF-HILL';
1333
1334
  // this.sku = 'CF-ALMADA';
@@ -1341,15 +1342,15 @@
1341
1342
  // this.sku = '104';
1342
1343
  // this.sku = "70000107";
1343
1344
  // this.sku = "grover";
1344
- this._dictionary = _dictionary;
1345
- this._jsonUtils = _jsonUtils;
1346
- this._ione = _ione;
1347
- this._changeDetector = _changeDetector;
1345
+ // this.sku = "1000610952";
1346
+ // this.sku = "4387";
1348
1347
  this._appEventService = _appEventService;
1349
1348
  this._settingsService = _settingsService;
1349
+ this.enableRenderCarousel = true;
1350
1350
  this.handleAddArticleInternally = true;
1351
1351
  this.onAddToCart = new i0.EventEmitter();
1352
1352
  this.forceRenderImage = new i0.EventEmitter();
1353
+ this.getRenderForRenderCarousel = new i0.EventEmitter();
1353
1354
  this.onAlternativeClick = new i0.EventEmitter();
1354
1355
  this.onArticleInfoReceived = new i0.EventEmitter();
1355
1356
  this.onArticleReceived = new i0.EventEmitter();
@@ -1360,9 +1361,7 @@
1360
1361
  this.settingsLoaded = false;
1361
1362
  this.showHD = false;
1362
1363
  this._subs = [];
1363
- this._subs.push(
1364
- // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
1365
- this._appEventService.onAddToCart.subscribe(function (data) {
1364
+ this._subs.push(this._appEventService.onAddToCart.subscribe(function (data) {
1366
1365
  _this._handleAddToCart(data);
1367
1366
  }), this._appEventService.onAddToQuote.subscribe(function (json) { return _this.onAddToQuote.emit(json); }), this._appEventService.onAlternativeClick.subscribe(function (article) { return _this.onAlternativeClick.emit(article); }), this._appEventService.onArticleInfoReceived.subscribe(function (info) { return _this._handleAnswerInfoReceived(info); }), this._appEventService.onArticleReceived.subscribe(function (article) { return _this.onArticleReceived.emit(article); }), this._appEventService.onSelectionsReceived.subscribe(function (selections) { return _this.onSelectionsReceived.emit(selections); }), this._appEventService.onAnswersAvailable.subscribe(function (answers) { return _this._handleAnswersAvailable(answers); }), this._settingsService.settingsLoaded.subscribe(function (loaded) {
1368
1367
  _this.settingsLoaded = loaded;
@@ -1400,9 +1399,6 @@
1400
1399
  });
1401
1400
  });
1402
1401
  };
1403
- IoneProductComponent.prototype.ngOnChanges = function (changes) {
1404
- this._changeDetector.detectChanges();
1405
- };
1406
1402
  IoneProductComponent.prototype.ngOnDestroy = function () {
1407
1403
  this._subs.forEach(function (s) { return s.unsubscribe(); });
1408
1404
  };
@@ -1428,16 +1424,18 @@
1428
1424
  IoneProductComponent.decorators = [
1429
1425
  { type: i0.Component, args: [{
1430
1426
  selector: 'app-ione-product',
1431
- template: "\n <app-product-page *ngIf=\"settingsLoaded\"\n [createFrozenArticle]=\"handleAddArticleInternally\"\n [isReturn]=\"isReturn\"\n (openStockEvent)=\"openStock()\"\n [sku]=\"sku\"\n [showRelatedProductsPopup]=\"showRelatedProductsPopup\"\n ></app-product-page>\n <!-- <co-button [label]=\"'click'\" (click)=\"showHD = !showHD\"></co-button>\n <co-product-hd [sku]=\"'657946ca-e1e1-41fd-7ae0-08dbf7df0cef'\" *ngIf=\"showHD\"></co-product-hd>-->\n ",
1427
+ template: "\n <app-product-page *ngIf=\"settingsLoaded\"\n [createFrozenArticle]=\"handleAddArticleInternally\"\n [isReturn]=\"isReturn\"\n [sku]=\"sku\"\n [showRelatedProductsPopup]=\"showRelatedProductsPopup\"\n [enableRenderCarousel]=\"enableRenderCarousel\"\n (openStockEvent)=\"openStock()\"\n ></app-product-page>\n <!-- <co-button [label]=\"'click'\" (click)=\"showHD = !showHD\"></co-button>\n <co-product-hd [sku]=\"'657946ca-e1e1-41fd-7ae0-08dbf7df0cef'\" *ngIf=\"showHD\"></co-product-hd>-->\n ",
1428
+ providers: [
1429
+ ProductSettingsService,
1430
+ ProductConnectorService,
1431
+ ProductEventService,
1432
+ ProductConnectorAdapterService
1433
+ ],
1432
1434
  encapsulation: i0.ViewEncapsulation.Emulated,
1433
1435
  styles: [""]
1434
1436
  },] }
1435
1437
  ];
1436
1438
  IoneProductComponent.ctorParameters = function () { return [
1437
- { type: DictionaryService },
1438
- { type: JsonUtilsService },
1439
- { type: ProductConnectorService },
1440
- { type: i0.ChangeDetectorRef },
1441
1439
  { type: ProductEventService },
1442
1440
  { type: ProductSettingsService }
1443
1441
  ]; };
@@ -1445,10 +1443,12 @@
1445
1443
  sku: [{ type: i0.Input }],
1446
1444
  isReturn: [{ type: i0.Input }],
1447
1445
  showRelatedProductsPopup: [{ type: i0.Input }],
1446
+ enableRenderCarousel: [{ type: i0.Input }],
1448
1447
  settings: [{ type: i0.Input }],
1449
1448
  handleAddArticleInternally: [{ type: i0.Input }],
1450
1449
  onAddToCart: [{ type: i0.Output }],
1451
1450
  forceRenderImage: [{ type: i0.Output }],
1451
+ getRenderForRenderCarousel: [{ type: i0.Output }],
1452
1452
  onAlternativeClick: [{ type: i0.Output }],
1453
1453
  onArticleInfoReceived: [{ type: i0.Output }],
1454
1454
  onArticleReceived: [{ type: i0.Output }],
@@ -1478,6 +1478,8 @@
1478
1478
  var IconEnum;
1479
1479
  (function (IconEnum) {
1480
1480
  IconEnum["AddToCartDrop"] = "add_to_cart_drop";
1481
+ IconEnum["ArrowPointLeft"] = "arrow_point_left";
1482
+ IconEnum["ArrowPointRight"] = "arrow_point_right";
1481
1483
  IconEnum["CrossSkinny"] = "cross_skinny";
1482
1484
  IconEnum["DeliveryTruck"] = "delivery_truck";
1483
1485
  IconEnum["Download"] = "download";
@@ -1499,6 +1501,8 @@
1499
1501
  /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
1500
1502
  var IconSvg = {
1501
1503
  "add_to_cart_drop": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.58,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,16.58,34.84Z\" fill=\"#484f60\"/><path d=\"M31.49,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,31.49,34.84Z\" fill=\"#484f60\"/><path d=\"M35.6,17.9l-1.51.18L31.88,20.3l1.31-.17a.88.88,0,0,1,1,1.08L32.35,29.5a1.52,1.52,0,0,1-1.44,1.2H16.51a1.75,1.75,0,0,1-1.57-1.17l-2.31-5.6a1,1,0,0,1,.85-1.29l4.43-.56-1.86-1.86-5.13.61a1,1,0,0,0-.87,1.28l3.34,9.44A1.73,1.73,0,0,0,15,32.72H32.64a1.51,1.51,0,0,0,1.43-1.2L36.6,19A.89.89,0,0,0,35.6,17.9Z\" fill=\"#484f60\"/><path d=\"M39,17a1.87,1.87,0,0,0-1.36,1.46l-.42,2.89c-.1.67.31,1,.9.7a2.75,2.75,0,0,0,1.33-1.7L40,18A.73.73,0,0,0,39,17Z\" fill=\"#484f60\"/><polygon points=\"24 25.35 32.04 17.3 27.04 17.3 27.04 10 20.95 10 20.95 17.3 15.96 17.3 24 25.35\" fill=\"#484f60\"/></svg>",
1504
+ "arrow_point_left": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\" ><path fill=\"#484F5F\" d=\"M31.9,36.7l-14.7-9.6C17.1,27,17,26.9,17,26.7v-2.4c0-0.2,0.1-0.3,0.2-0.4l14.7-9.6c0.2-0.2,0.5-0.1,0.7,0.1l1.4,2.1c0.2,0.2,0.1,0.5-0.1,0.7l-12,7.8c-0.3,0.2-0.3,0.6,0,0.8l12,7.8c0.2,0.2,0.3,0.5,0.1,0.7l-1.4,2.1C32.4,36.8,32.1,36.8,31.9,36.7z\"/></svg>",
1505
+ "arrow_point_right": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\" ><path fill=\"#484F5F\" d=\"M19.1,14.3l14.7,9.6c0.1,0.1,0.2,0.2,0.2,0.4v2.4c0,0.2-0.1,0.3-0.2,0.4l-14.7,9.6c-0.2,0.2-0.5,0.1-0.7-0.1l-1.4-2.1c-0.2-0.2-0.1-0.5,0.1-0.7l12-7.8c0.3-0.2,0.3-0.6,0-0.8l-12-7.8c-0.2-0.2-0.3-0.5-0.1-0.7l1.4-2.1C18.6,14.2,18.9,14.2,19.1,14.3z\"/></svg>",
1502
1506
  "cross_skinny": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><g ><polygon points=\"25.35 5.52 24.65 4.81 15 14.46 5.35 4.81 4.65 5.52 14.29 15.17 4.65 24.81 5.35 25.52 15 15.87 24.65 25.52 25.35 24.81 15.71 15.17 25.35 5.52\" fill=\"#484f60\"/></g></svg>",
1503
1507
  "delivery_truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,45A20,20,0,1,1,45,25,20,20,0,0,1,25,45ZM25,6.29A18.71,18.71,0,1,0,43.71,25,18.73,18.73,0,0,0,25,6.29Z\" fill=\"#484f60\"/><path d=\"M21.86,24.09a7.14,7.14,0,0,1,.72-3.24,6.94,6.94,0,0,1,1.18-1.66H13v10.1h8.51a3.25,3.25,0,0,1,3.27-3.07A3.33,3.33,0,0,1,27,27V25.75H21.9Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.65,30.47h-.48a3.51,3.51,0,0,1,1.13,2.19h1.57a3.22,3.22,0,0,1-1.41-.83A3.13,3.13,0,0,1,21.65,30.47Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M34.63,21.89H28.87c-.3.25-.5.43-.63.56v8H28a3.19,3.19,0,0,1-.82,1.37,3.3,3.3,0,0,1-1.41.82H29a3.53,3.53,0,0,1,7,0h1V27.1Zm-.2,5.38H30.8a.47.47,0,0,1-.46-.46V23.36a.46.46,0,0,1,.46-.46h2.1a.45.45,0,0,1,.42.27l1.53,3.45A.46.46,0,0,1,34.43,27.27Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M16.42,30.47a3.51,3.51,0,0,0-1.13,2.19H14.6l-1.6-1V30.47Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M30,33.08a2.53,2.53,0,1,0,2.53-2.53A2.52,2.52,0,0,0,30,33.08Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M16.27,33.08a2.53,2.53,0,1,0,2.53-2.53A2.52,2.52,0,0,0,16.27,33.08Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M22.45,17.27h-3.2a4.29,4.29,0,0,1,1.61-3.49,6.45,6.45,0,0,1,4.31-1.38,6.79,6.79,0,0,1,2.92.57A4.72,4.72,0,0,1,30,14.62a4,4,0,0,1,.72,2.26,3.74,3.74,0,0,1-.23,1.27,5.31,5.31,0,0,1-.73,1.29,12,12,0,0,1-1.4,1.29A8.74,8.74,0,0,0,27.06,22a3.17,3.17,0,0,0-.46.94,7.56,7.56,0,0,0-.23,1.65h-3.3v-.49a6,6,0,0,1,.59-2.68,6.8,6.8,0,0,1,1.94-2.25,9.44,9.44,0,0,0,1.56-1.41,1.5,1.5,0,0,0,.27-.9,1.47,1.47,0,0,0-.65-1.19A2.9,2.9,0,0,0,25,15.14a2.77,2.77,0,0,0-1.84.6A1.91,1.91,0,0,0,22.45,17.27Z\" fill=\"#484f60\"/><path d=\"M24.78,27.42a2.06,2.06,0,0,1,1.51.61,2,2,0,0,1,.63,1.47A2,2,0,0,1,26.3,31a2.08,2.08,0,0,1-1.5.62A2,2,0,0,1,23.31,31a2.08,2.08,0,0,1,0-2.95A2,2,0,0,1,24.78,27.42Z\" fill=\"#484f60\"/></svg>",
1504
1508
  "download": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"download.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=\"-14.056273\" inkscape:cy=\"29.806579\" 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 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.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 498.966,339.946 c -7.197,0 -13.034,5.837 -13.034,13.034 v 49.804 c 0,28.747 -23.388,52.135 -52.135,52.135 H 78.203 c -28.747,0 -52.135,-23.388 -52.135,-52.135 V 352.98 c 0,-7.197 -5.835,-13.034 -13.034,-13.034 C 5.835,339.946 0,345.782 0,352.98 v 49.804 c 0,43.121 35.082,78.203 78.203,78.203 h 355.594 c 43.121,0 78.203,-35.082 78.203,-78.203 V 352.98 c 0,-7.198 -5.835,-13.034 -13.034,-13.034 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 419.833,391.3 H 92.167 c -7.197,0 -13.034,5.837 -13.034,13.034 0,7.197 5.835,13.034 13.034,13.034 h 327.665 c 7.199,0 13.034,-5.835 13.034,-13.034 0,-7.197 -5.835,-13.034 -13.033,-13.034 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 387.919,207.93 c -4.795,-5.367 -13.034,-5.834 -18.404,-1.038 L 269.033,296.657 V 44.048 c 0,-7.197 -5.835,-13.034 -13.034,-13.034 -7.197,0 -13.034,5.835 -13.034,13.034 V 296.657 L 142.483,206.893 c -5.367,-4.796 -13.607,-4.328 -18.404,1.038 -4.794,5.369 -4.331,13.609 1.037,18.404 l 109.174,97.527 c 6.187,5.529 13.946,8.292 21.708,8.292 7.759,0 15.519,-2.763 21.708,-8.289 l 109.174,-97.53 c 5.37,-4.798 5.834,-13.038 1.039,-18.405 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
@@ -1594,6 +1598,10 @@
1594
1598
  else {
1595
1599
  _this.showAddToCart = true;
1596
1600
  }
1601
+ }), this.appEventService.onGetRenderForRenderCarousel.subscribe(function (renderParameters) {
1602
+ if (_this.selections.nativeElement) {
1603
+ _this.selections.nativeElement.getRenderForRenderCarousel(renderParameters);
1604
+ }
1597
1605
  }));
1598
1606
  }
1599
1607
  Object.defineProperty(ProductPageComponent.prototype, "sku", {
@@ -1756,7 +1764,7 @@
1756
1764
  ProductPageComponent.decorators = [
1757
1765
  { type: i0.Component, args: [{
1758
1766
  selector: 'app-product-page',
1759
- 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 (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n<!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n<!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
1767
+ template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n\r\n <app-image-carousel\r\n *ngIf=\"!enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [images]=\"article?.images\"\r\n [showRefresh]=\"configurable && threeD\">\r\n </app-image-carousel>\r\n\r\n <app-render-carousel\r\n *ngIf=\"enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [article]=\"article\">\r\n </app-render-carousel>\r\n\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator\r\n #configurator\r\n class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n </threed-configurator>\r\n </ng-container>\r\n\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\"\r\n [class.show-selections]=\"configuring\"\r\n [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n (onReadyToRender)=\"appEventService.onReadyToRender.next($event.detail)\"\r\n (onRenderImageReceived)=\"appEventService.onRenderImageReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n <!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n <!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
1760
1768
  animations: [
1761
1769
  animations.trigger('toggleFullScreen', [
1762
1770
  animations.state('fullscreen', animations.style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -1789,7 +1797,7 @@
1789
1797
  animations.transition('void => *', animations.animate('200ms ease-in-out')),
1790
1798
  ])
1791
1799
  ],
1792
- 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}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.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;margin-bottom:10px}.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 10px;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{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"]
1800
+ styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;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:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;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}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.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:none}.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;margin-bottom:10px}.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 10px;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{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"]
1793
1801
  },] }
1794
1802
  ];
1795
1803
  ProductPageComponent.ctorParameters = function () { return [
@@ -1810,6 +1818,7 @@
1810
1818
  createFrozenArticle: [{ type: i0.Input }],
1811
1819
  isReturn: [{ type: i0.Input }],
1812
1820
  showRelatedProductsPopup: [{ type: i0.Input }],
1821
+ enableRenderCarousel: [{ type: i0.Input }],
1813
1822
  openStockEvent: [{ type: i0.Output }]
1814
1823
  };
1815
1824
 
@@ -1837,7 +1846,7 @@
1837
1846
  ProductSelectorTypeComponent.decorators = [
1838
1847
  { type: i0.Component, args: [{
1839
1848
  selector: 'app-product-selector-type',
1840
- template: "\n <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 ",
1849
+ template: "\n <div *ngIf=\"show2D || show3D\" class=\"show-in\" [textContent]=\"'SHOW_IN' | localize\"></div>\n <co-icon *ngIf=\"show2D && !showRenderCarousel\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n ></co-icon>\n\n <co-icon *ngIf=\"show2D && showRenderCarousel\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n ></co-icon>\n\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 ",
1841
1850
  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"]
1842
1851
  },] }
1843
1852
  ];
@@ -1848,6 +1857,7 @@
1848
1857
  ProductSelectorTypeComponent.propDecorators = {
1849
1858
  show2D: [{ type: i0.Input }],
1850
1859
  show3D: [{ type: i0.Input }],
1860
+ showRenderCarousel: [{ type: i0.Input }],
1851
1861
  currentType: [{ type: i0.Input }],
1852
1862
  onIconClick: [{ type: i0.Output }],
1853
1863
  currentTypeChange: [{ type: i0.Output }]
@@ -3384,6 +3394,137 @@
3384
3394
  },] }
3385
3395
  ];
3386
3396
 
3397
+ var VectorObject = /** @class */ (function () {
3398
+ function VectorObject() {
3399
+ }
3400
+ return VectorObject;
3401
+ }());
3402
+ var RenderParameters = /** @class */ (function () {
3403
+ function RenderParameters() {
3404
+ }
3405
+ return RenderParameters;
3406
+ }());
3407
+ var RenderCarouselComponent = /** @class */ (function () {
3408
+ function RenderCarouselComponent(iconCache, _appEventService, _changeDetector) {
3409
+ var _this = this;
3410
+ this.iconCache = iconCache;
3411
+ this._appEventService = _appEventService;
3412
+ this._changeDetector = _changeDetector;
3413
+ this.showRefresh = false;
3414
+ this.resizing = false;
3415
+ this.showLoader = true;
3416
+ this.renderedImageLoaded = false;
3417
+ // For now we will just use mock data
3418
+ this.renderAngles = [0, -45, -90, -135, -180, -225, -270, -315];
3419
+ this.currentRenderAngleIndex = 0;
3420
+ this.icon = IconEnum;
3421
+ this._subs = [];
3422
+ this._subs.push(this._appEventService.onReadyToRender.subscribe(function (readyToRender) {
3423
+ if (readyToRender) {
3424
+ _this.showLoader = true;
3425
+ _this._createNewRender();
3426
+ }
3427
+ }), this._appEventService.onRenderStarted.subscribe(function () {
3428
+ _this.showLoader = true;
3429
+ _this._changeDetector.detectChanges();
3430
+ }), this._appEventService.onRenderImageReceived.subscribe(function (image) {
3431
+ _this.renderedImage = image;
3432
+ _this.showLoader = false;
3433
+ _this._changeDetector.detectChanges();
3434
+ }));
3435
+ }
3436
+ RenderCarouselComponent.prototype.handleWindowResize = function () {
3437
+ var _this = this;
3438
+ this.resizing = true;
3439
+ clearTimeout(this._resizeTimer);
3440
+ this._resizeTimer = setTimeout(function () {
3441
+ _this.resizing = false;
3442
+ }, 200);
3443
+ };
3444
+ RenderCarouselComponent.prototype.gotoNextSlide = function () {
3445
+ this.showLoader = true;
3446
+ this.currentRenderAngleIndex = (this.currentRenderAngleIndex + 1) % this.renderAngles.length;
3447
+ this._createNewRender();
3448
+ };
3449
+ RenderCarouselComponent.prototype.gotoPrevSlide = function () {
3450
+ this.showLoader = true;
3451
+ this.currentRenderAngleIndex = (this.currentRenderAngleIndex - 1 + this.renderAngles.length) % this.renderAngles.length;
3452
+ this._createNewRender();
3453
+ };
3454
+ RenderCarouselComponent.prototype.ngOnDestroy = function () {
3455
+ this.carousel = undefined;
3456
+ this._subs.forEach(function (s) { return s.unsubscribe(); });
3457
+ };
3458
+ RenderCarouselComponent.prototype.ngOnChanges = function () {
3459
+ this.renderedImageLoaded = false;
3460
+ };
3461
+ RenderCarouselComponent.prototype.onRenderLoaded = function () {
3462
+ this.renderedImageLoaded = true;
3463
+ };
3464
+ RenderCarouselComponent.prototype._getRenderSettings = function () {
3465
+ var settings = new RenderParameters();
3466
+ var rotation = new VectorObject();
3467
+ rotation.x = 0;
3468
+ rotation.y = this.renderAngles[this.currentRenderAngleIndex];
3469
+ rotation.z = 0;
3470
+ settings.objectRotation = rotation;
3471
+ settings.margin = 15;
3472
+ return settings;
3473
+ };
3474
+ RenderCarouselComponent.prototype._createNewRender = function () {
3475
+ this.showLoader = true;
3476
+ this.renderedImageLoaded = false;
3477
+ var renderParams = this._getRenderSettings();
3478
+ this._appEventService.onGetRenderForRenderCarousel.next(renderParams);
3479
+ };
3480
+ return RenderCarouselComponent;
3481
+ }());
3482
+ RenderCarouselComponent.decorators = [
3483
+ { type: i0.Component, args: [{
3484
+ selector: 'app-render-carousel',
3485
+ template: "\n <div id=\"product_page_carousel\">\n <div id=\"product_page_carousel_render_items\">\n <co-loader [isShown]=\"showLoader\"></co-loader>\n <div #carousel class=\"inner-carousel\">\n <div class=\"inner-carousel-render\">\n <img\n [src]=\"renderedImage\"\n [class.loaded]=\"renderedImageLoaded\"\n (load)=\"onRenderLoaded()\"\n class=\"fade-image\"\n alt=\"\">\n </div>\n <div class=\"carousel-scroller-layer\">\n <div class=\"carousel-item-scroller prev\" (click)=\"gotoPrevSlide()\">\n <co-icon [iconData]=\"iconCache.getIcon(icon.ArrowPointLeft)\"></co-icon>\n </div>\n <div class=\"carousel-item-scroller next\" (click)=\"gotoNextSlide()\">\n <co-icon [iconData]=\"iconCache.getIcon(icon.ArrowPointRight)\"></co-icon>\n </div>\n </div>\n </div>\n </div>\n </div>\n ",
3486
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3487
+ 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_render_items{position:relative;margin-bottom:10px;min-height:400px}#product_page_carousel #product_page_carousel_render_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:700px}#product_page_carousel .inner-carousel .inner-carousel-render img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;top:0;left:0;z-index:100}#product_page_carousel .carousel-scroller-layer .carousel-item-scroller{opacity:0;position:absolute;border-radius:50%;z-index:100;background:rgba(255,255,255,.4);color:#fff;width:30px;height:30px;top:calc(50% - 15px);cursor:pointer;transition:opacity .3s}#product_page_carousel .carousel-scroller-layer .carousel-item-scroller co-icon{color:#fff}#product_page_carousel .carousel-scroller-layer .prev{left:15px}#product_page_carousel .carousel-scroller-layer .next{right:15px}#product_page_carousel .carousel-scroller-layer:hover .carousel-item-scroller{opacity:1}#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}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-image{opacity:0;transition:opacity 1.5s ease-in-out}.fade-image.loaded{opacity:1}\n"]
3488
+ },] }
3489
+ ];
3490
+ RenderCarouselComponent.ctorParameters = function () { return [
3491
+ { type: IconCacheService },
3492
+ { type: ProductEventService },
3493
+ { type: i0.ChangeDetectorRef }
3494
+ ]; };
3495
+ RenderCarouselComponent.propDecorators = {
3496
+ carousel: [{ type: i0.ViewChild, args: ['carousel', { read: i0.ElementRef },] }],
3497
+ showRefresh: [{ type: i0.Input }],
3498
+ article: [{ type: i0.Input }],
3499
+ handleWindowResize: [{ type: i0.HostListener, args: ['window:resize',] }],
3500
+ gotoNextSlide: [{ type: i0.HostListener, args: ['swipeleft',] }],
3501
+ gotoPrevSlide: [{ type: i0.HostListener, args: ['swiperight',] }],
3502
+ resizing: [{ type: i0.HostBinding, args: ['class.resizing',] }]
3503
+ };
3504
+
3505
+ var RenderCarouselModule = /** @class */ (function () {
3506
+ function RenderCarouselModule() {
3507
+ }
3508
+ return RenderCarouselModule;
3509
+ }());
3510
+ RenderCarouselModule.decorators = [
3511
+ { type: i0.NgModule, args: [{
3512
+ imports: [
3513
+ common.CommonModule,
3514
+ corecomponents.LoaderModule,
3515
+ corecomponents.ScrollContainerModule,
3516
+ corecomponents.IconModule,
3517
+ corecomponents_v12.IconCollapseHandleModule
3518
+ ],
3519
+ declarations: [
3520
+ RenderCarouselComponent
3521
+ ],
3522
+ exports: [
3523
+ RenderCarouselComponent
3524
+ ]
3525
+ },] }
3526
+ ];
3527
+
3387
3528
  var ProductPageModule = /** @class */ (function () {
3388
3529
  function ProductPageModule() {
3389
3530
  }
@@ -3406,7 +3547,8 @@
3406
3547
  ProductInfoTabsModule,
3407
3548
  PipeModule,
3408
3549
  ProductDialogModule,
3409
- corecomponents_v12.LoaderModule
3550
+ corecomponents_v12.LoaderModule,
3551
+ RenderCarouselModule
3410
3552
  ],
3411
3553
  schemas: [i0.CUSTOM_ELEMENTS_SCHEMA],
3412
3554
  declarations: [
@@ -3863,7 +4005,7 @@
3863
4005
  IoneProductModule.decorators = [
3864
4006
  { type: i0.NgModule, args: [{
3865
4007
  imports: [
3866
- //BrowserAnimationsModule,
4008
+ // BrowserAnimationsModule,
3867
4009
  common.CommonModule,
3868
4010
  ProductPageModule,
3869
4011
  ProductHdModule,
@@ -3882,12 +4024,6 @@
3882
4024
  ],
3883
4025
  bootstrap: [
3884
4026
  IoneProductComponent
3885
- ],
3886
- providers: [
3887
- ProductSettingsService,
3888
- ProductConnectorService,
3889
- ProductEventService,
3890
- ProductConnectorAdapterService
3891
4027
  ]
3892
4028
  },] }
3893
4029
  ];
@@ -3919,10 +4055,12 @@
3919
4055
  exports["ɵbj"] = ProductInfoTabsComponent;
3920
4056
  exports["ɵbk"] = ProductDialogModule;
3921
4057
  exports["ɵbl"] = ProductDialogComponent;
3922
- exports["ɵbm"] = ProductPageComponent;
3923
- exports["ɵbn"] = ProductHdModule;
3924
- exports["ɵbo"] = ProductHdComponent;
3925
- exports["ɵbp"] = ProductScriptLoaderService;
4058
+ exports["ɵbm"] = RenderCarouselModule;
4059
+ exports["ɵbn"] = RenderCarouselComponent;
4060
+ exports["ɵbo"] = ProductPageComponent;
4061
+ exports["ɵbp"] = ProductHdModule;
4062
+ exports["ɵbq"] = ProductHdComponent;
4063
+ exports["ɵbr"] = ProductScriptLoaderService;
3926
4064
  exports["ɵc"] = PipeModule;
3927
4065
  exports["ɵd"] = LocalizePipe;
3928
4066
  exports["ɵe"] = DictionaryService;