@colijnit/product 1.9.4 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/app/components/product-additional-info/product-additional-info.component.d.ts +4 -3
  2. package/app/components/product-external-source/product-external-source.component.d.ts +30 -0
  3. package/app/components/product-external-source/product-external-source.module.d.ts +2 -0
  4. package/app/components/product-page/product-page.component.d.ts +4 -0
  5. package/app/components/product-page/product-page.module.d.ts +2 -0
  6. package/app/ione-product.component.d.ts +1 -3
  7. package/app/model/{settings.d.ts → productSettings.d.ts} +3 -2
  8. package/app/pipe/pipe.module.d.ts +2 -0
  9. package/app/service/product-connector-adapter.service.d.ts +8 -2
  10. package/app/service/product-connector.service.d.ts +10 -5
  11. package/app/service/product-settings.service.d.ts +3 -3
  12. package/bundles/colijnit-product.umd.js +1472 -1253
  13. package/bundles/colijnit-product.umd.js.map +1 -1
  14. package/bundles/colijnit-product.umd.min.js +2 -2
  15. package/bundles/colijnit-product.umd.min.js.map +1 -1
  16. package/colijnit-product.d.ts +29 -28
  17. package/colijnit-product.metadata.json +1 -1
  18. package/esm2015/app/components/product-additional-info/product-additional-info.component.js +23 -16
  19. package/esm2015/app/components/product-addtocart/product-addtocart.component.js +2 -2
  20. package/esm2015/app/components/product-delivery/product-delivery.component.js +1 -2
  21. package/esm2015/app/components/product-external-source/product-external-source.component.js +123 -0
  22. package/esm2015/app/components/product-external-source/product-external-source.module.js +23 -0
  23. package/esm2015/app/components/product-page/product-page.component.js +45 -15
  24. package/esm2015/app/components/product-page/product-page.module.js +66 -0
  25. package/esm2015/app/ione-product.component.js +41 -19
  26. package/esm2015/app/ione-product.module.js +8 -61
  27. package/esm2015/app/model/productSettings.js +16 -0
  28. package/esm2015/app/pipe/pipe.module.js +20 -0
  29. package/esm2015/app/product-version.js +3 -3
  30. package/esm2015/app/service/dictionary.service.js +1 -1
  31. package/esm2015/app/service/product-connector-adapter.service.js +35 -10
  32. package/esm2015/app/service/product-connector.service.js +33 -35
  33. package/esm2015/app/service/product-event.service.js +2 -6
  34. package/esm2015/app/service/product-settings.service.js +17 -76
  35. package/esm2015/colijnit-product.js +30 -29
  36. package/esm2015/public_api.js +3 -1
  37. package/esm5/app/components/product-additional-info/product-additional-info.component.js +43 -24
  38. package/esm5/app/components/product-addtocart/product-addtocart.component.js +2 -2
  39. package/esm5/app/components/product-delivery/product-delivery.component.js +1 -2
  40. package/esm5/app/components/product-external-source/product-external-source.component.js +126 -0
  41. package/esm5/app/components/product-external-source/product-external-source.module.js +26 -0
  42. package/esm5/app/components/product-page/product-page.component.js +49 -15
  43. package/esm5/app/components/product-page/product-page.module.js +69 -0
  44. package/esm5/app/ione-product.component.js +50 -20
  45. package/esm5/app/ione-product.module.js +8 -61
  46. package/esm5/app/model/productSettings.js +18 -0
  47. package/esm5/app/pipe/pipe.module.js +23 -0
  48. package/esm5/app/product-version.js +3 -3
  49. package/esm5/app/service/dictionary.service.js +1 -1
  50. package/esm5/app/service/product-connector-adapter.service.js +62 -11
  51. package/esm5/app/service/product-connector.service.js +65 -52
  52. package/esm5/app/service/product-event.service.js +2 -6
  53. package/esm5/app/service/product-settings.service.js +18 -76
  54. package/esm5/colijnit-product.js +30 -29
  55. package/esm5/public_api.js +3 -1
  56. package/fesm2015/colijnit-product.js +1194 -1043
  57. package/fesm2015/colijnit-product.js.map +1 -1
  58. package/fesm5/colijnit-product.js +1444 -1226
  59. package/fesm5/colijnit-product.js.map +1 -1
  60. package/package.json +5 -4
  61. package/public_api.d.ts +2 -0
  62. package/app/service/product-module.service.d.ts +0 -9
  63. package/esm2015/app/model/settings.js +0 -15
  64. package/esm2015/app/service/product-module.service.js +0 -39
  65. package/esm5/app/model/settings.js +0 -17
  66. package/esm5/app/service/product-module.service.js +0 -50
@@ -1,47 +1,102 @@
1
- import { __decorate, __awaiter } from 'tslib';
2
- import { Input, Component, ɵɵdefineInjectable, Injectable, ɵɵinject, Output, Directive, ChangeDetectorRef, ViewChild, ElementRef, HostListener, HostBinding, Renderer2, SecurityContext, Pipe, EventEmitter, ViewEncapsulation, NgModule, CUSTOM_ELEMENTS_SCHEMA, APP_INITIALIZER } from '@angular/core';
3
- import { ButtonModule, IconModule, NumberPickerModule, InputTextModule, FilesUploadModule, LoaderModule, ScrollContainerModule, TileModule, LevelIndicatorModule, PriceDisplayPipeModule, ArticleTileModule } from '@colijnit/corecomponents';
4
- import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
1
+ import { __awaiter, __decorate } from 'tslib';
2
+ import { ɵɵdefineInjectable, Injectable, ɵɵinject, Output, Directive, EventEmitter, ChangeDetectorRef, Input, Component, ViewEncapsulation, HostBinding, Renderer2, ViewChild, ElementRef, HostListener, Pipe, NgModule, SecurityContext, CUSTOM_ELEMENTS_SCHEMA, APP_INITIALIZER } from '@angular/core';
5
3
  import { Subject, BehaviorSubject } from 'rxjs';
6
4
  import { Options } from '@colijnit/ioneconnector/build/model/options';
7
5
  import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
8
6
  import { SuperArticle } from '@colijnit/articleapi/build/model/super-article';
9
7
  import { Articles } from '@colijnit/articleapi/build/articles';
10
- import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/factory/business-object-factory';
11
8
  import { DeliveryPrognosis } from '@colijnit/articleapi/build/model/delivery-prognosis';
12
9
  import { DocumentContent } from '@colijnit/articleapi/build/model/document-content';
10
+ import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
11
+ import { Transaction } from '@colijnit/transactionapi/build/transaction';
12
+ import { MainApi } from '@colijnit/mainapi';
13
13
  import { HttpClient } from '@angular/common/http';
14
14
  import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
15
+ import { CommonModule } from '@angular/common';
15
16
  import { DomSanitizer } from '@angular/platform-browser';
16
17
  import { trigger, state, style, transition, animate } from '@angular/animations';
18
+ import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
19
+ import { IconModule, LoaderModule, NumberPickerModule, ButtonModule, PriceDisplayPipeModule, InputTextModule, FilesUploadModule, ScrollContainerModule, TileModule, LevelIndicatorModule, ArticleTileModule } from '@colijnit/corecomponents';
17
20
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
18
- import { CommonModule } from '@angular/common';
19
21
 
20
22
  // this file is dynamically created, do not change this
21
23
  class Version {
22
24
  constructor() {
23
25
  this.name = "@colijnit/product";
24
26
  this.description = "Product detail page project for iOne";
25
- this.symVer = "1.9.4";
26
- this.publishDate = "20-4-2023 15:19:25";
27
+ this.symVer = "2.9.0";
28
+ this.publishDate = "7-9-2023 15:18:44";
27
29
  }
28
30
  }
29
31
 
30
- let ProductDescriptionComponent = class ProductDescriptionComponent {
31
- constructor() { }
32
- ngOnInit() {
32
+ let JsonUtilsService = class JsonUtilsService {
33
+ readJsonFile(filePath) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ try {
36
+ const response = yield fetch(filePath);
37
+ if (!response.ok) {
38
+ return null;
39
+ }
40
+ else {
41
+ return response.json();
42
+ }
43
+ }
44
+ catch (e) {
45
+ console.error('Error getting file:', e.message);
46
+ return '';
47
+ }
48
+ });
33
49
  }
34
50
  };
35
- __decorate([
36
- Input()
37
- ], ProductDescriptionComponent.prototype, "article", void 0);
38
- ProductDescriptionComponent = __decorate([
39
- Component({
40
- selector: 'app-product-description',
41
- template: "<div class=\"pd-title-wrapper\">\n <span class=\"pd-description\" [textContent]=\"article?.descriptionRetail\" *ngIf=\"article?.descriptionRetail\"></span>\n <span class=\"pd-sku\" [textContent]=\"article?.articleNr\" *ngIf=\"article?.articleNr\"></span>\n</div>\n",
42
- styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width:650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}"]
51
+ JsonUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
52
+ JsonUtilsService = __decorate([
53
+ Injectable({
54
+ providedIn: 'root'
43
55
  })
44
- ], ProductDescriptionComponent);
56
+ ], JsonUtilsService);
57
+
58
+ class SettingsOptions {
59
+ constructor() {
60
+ this.showStockStatus = false;
61
+ this.showZoomButton = false;
62
+ this.showTagFilter = false;
63
+ this.showAsConfigured = false;
64
+ this.inlineAnswers = false;
65
+ this.showArButton = false;
66
+ this.arEnabled = false;
67
+ this.vrEnabled = false;
68
+ }
69
+ }
70
+
71
+ var RenderModes;
72
+ (function (RenderModes) {
73
+ RenderModes["RenderRoom"] = "render_room";
74
+ RenderModes["RenderShop"] = "render_shop";
75
+ RenderModes["RenderIone"] = "render_ione";
76
+ })(RenderModes || (RenderModes = {}));
77
+
78
+ class RenderParameters {
79
+ constructor() {
80
+ this.host = "";
81
+ this.port = 0;
82
+ this.secure = false;
83
+ this.renderMode = RenderModes.RenderShop;
84
+ }
85
+ }
86
+
87
+ class ProductSettings {
88
+ constructor() {
89
+ this.session = undefined;
90
+ this.useGroups = true;
91
+ this.useRenders = false;
92
+ this.useLoginEncryption = true;
93
+ this.createWebOrder = true;
94
+ this.useMatch = false;
95
+ this.currencySymbol = '€';
96
+ this.options = new SettingsOptions();
97
+ this.renderParameters = new RenderParameters();
98
+ }
99
+ }
45
100
 
46
101
  // 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.
47
102
  // Only to be used by the IOneControllerService.
@@ -54,13 +109,29 @@ let ProductConnectorAdapterService = class ProductConnectorAdapterService {
54
109
  this.articleConnector.showLoader.unsubscribe();
55
110
  }
56
111
  initConnector(options) {
57
- this.articleConnector = new Articles(options);
58
- options.session = this.articleConnector.session;
59
- this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value));
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ this.articleConnector = new Articles(options);
114
+ yield this.articleConnector.connect();
115
+ this.transactionConnector = new Transaction(options);
116
+ this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value));
117
+ });
60
118
  }
61
119
  setInstance(instanceId) {
62
120
  // this.articleConnector.setInstanceToConfigure(instanceId, false);
63
121
  }
122
+ getProductBundleSettings(url, upId) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const tempSettings = new ProductSettings();
125
+ tempSettings.url = url;
126
+ tempSettings.schema = upId.toString();
127
+ const tempMainConnector = new MainApi(tempSettings);
128
+ const response = yield tempMainConnector.getPublicParams(upId);
129
+ if (response) {
130
+ return response.productSettings;
131
+ }
132
+ return "";
133
+ });
134
+ }
64
135
  getDeliveryPrognosis(goodId, branchNr) {
65
136
  return __awaiter(this, void 0, void 0, function* () {
66
137
  const deliveryPrognosis = yield this.getSelectorDeliveryDate();
@@ -152,39 +223,20 @@ let ProductConnectorAdapterService = class ProductConnectorAdapterService {
152
223
  }
153
224
  });
154
225
  }
155
- };
156
- ProductConnectorAdapterService.ɵprov = ɵɵdefineInjectable({ factory: function ProductConnectorAdapterService_Factory() { return new ProductConnectorAdapterService(); }, token: ProductConnectorAdapterService, providedIn: "root" });
157
- ProductConnectorAdapterService = __decorate([
158
- Injectable({
159
- providedIn: 'root'
160
- })
161
- ], ProductConnectorAdapterService);
162
-
163
- let JsonUtilsService = class JsonUtilsService {
164
- readJsonFile(filePath) {
226
+ addWebSessionTransactionLine(sku, quantity) {
165
227
  return __awaiter(this, void 0, void 0, function* () {
166
- try {
167
- const response = yield fetch(filePath);
168
- if (!response.ok) {
169
- return null;
170
- }
171
- else {
172
- return response.json();
173
- }
174
- }
175
- catch (e) {
176
- console.error('Error getting file:', e.message);
177
- return '';
178
- }
228
+ return yield this.transactionConnector.addWebSessionTransactionLine(sku, quantity);
229
+ });
230
+ }
231
+ getWebTransaction() {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ return yield this.transactionConnector.getWebSessionSalesOrder();
179
234
  });
180
235
  }
181
236
  };
182
- JsonUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
183
- JsonUtilsService = __decorate([
184
- Injectable({
185
- providedIn: 'root'
186
- })
187
- ], JsonUtilsService);
237
+ ProductConnectorAdapterService = __decorate([
238
+ Injectable()
239
+ ], ProductConnectorAdapterService);
188
240
 
189
241
  var LanguageCode;
190
242
  (function (LanguageCode) {
@@ -343,48 +395,6 @@ DictionaryService = __decorate([
343
395
  })
344
396
  ], DictionaryService);
345
397
 
346
- class SettingsOptions {
347
- constructor() {
348
- this.showStockStatus = false;
349
- this.showZoomButton = false;
350
- this.showTagFilter = false;
351
- this.showAsConfigured = false;
352
- this.inlineAnswers = false;
353
- this.showArButton = false;
354
- this.arEnabled = false;
355
- this.vrEnabled = false;
356
- }
357
- }
358
-
359
- var RenderModes;
360
- (function (RenderModes) {
361
- RenderModes["RenderRoom"] = "render_room";
362
- RenderModes["RenderShop"] = "render_shop";
363
- RenderModes["RenderIone"] = "render_ione";
364
- })(RenderModes || (RenderModes = {}));
365
-
366
- class RenderParameters {
367
- constructor() {
368
- this.host = "";
369
- this.port = 0;
370
- this.secure = false;
371
- this.renderMode = RenderModes.RenderShop;
372
- }
373
- }
374
-
375
- class Settings {
376
- constructor() {
377
- this.session = undefined;
378
- this.useGroups = true;
379
- this.useRenders = false;
380
- this.useEncryption = true;
381
- this.useMatch = false;
382
- this.currencySymbol = '€';
383
- this.options = new SettingsOptions();
384
- this.renderParameters = new RenderParameters();
385
- }
386
- }
387
-
388
398
  let ProductSettingsService = class ProductSettingsService {
389
399
  constructor(_jsonUtilsService, _dictionaryService) {
390
400
  this._jsonUtilsService = _jsonUtilsService;
@@ -402,12 +412,14 @@ let ProductSettingsService = class ProductSettingsService {
402
412
  // see if there's a json file for application settings
403
413
  if (typeof settings === 'undefined') {
404
414
  const jsonSettings = yield this._jsonUtilsService.readJsonFile('product-settings.json');
405
- this.settings = Object.assign(new Settings(), jsonSettings);
406
- this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
407
- this.settingsFinished();
415
+ if (jsonSettings) {
416
+ this.settings = Object.assign(new ProductSettings(), jsonSettings);
417
+ this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
418
+ this.settingsFinished();
419
+ }
408
420
  }
409
421
  else {
410
- this.settings = Object.assign(new Settings(), settings);
422
+ this.settings = Object.assign(new ProductSettings(), settings);
411
423
  this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
412
424
  this.settingsFinished();
413
425
  }
@@ -416,50 +428,16 @@ let ProductSettingsService = class ProductSettingsService {
416
428
  createSettingsFromObject(obj) {
417
429
  return __awaiter(this, void 0, void 0, function* () {
418
430
  if (!this.settings) {
419
- this.settings = new Settings();
420
- }
421
- if (obj.hasOwnProperty('url')) {
422
- this.settings.url = obj['url'];
423
- this._dictionaryService.rootUrl = this.settings.url.replace('/ajaxservice', '');
431
+ this.settings = new ProductSettings();
424
432
  }
425
- if (obj.hasOwnProperty('schema')) {
426
- this.settings.schema = obj['schema'];
433
+ const ownOptions = Object.assign({}, this.settings.options);
434
+ const ownRenderParameters = Object.assign({}, this.settings.renderParameters);
435
+ this.settings = Object.assign({}, this.settings, obj);
436
+ if (obj.renderParameters) {
437
+ this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);
427
438
  }
428
- if (obj.hasOwnProperty('version')) {
429
- this.settings.version = obj['version'];
430
- }
431
- if (obj.hasOwnProperty('branch')) {
432
- this.settings.branch = obj['branch'];
433
- }
434
- if (obj.hasOwnProperty('currency')) {
435
- this.settings.currency = obj['currency'];
436
- }
437
- if (obj.hasOwnProperty('client')) {
438
- this.settings.client = obj['client'];
439
- }
440
- if (obj.hasOwnProperty('languageCode')) {
441
- this.settings.languageCode = obj['languageCode'];
442
- }
443
- if (obj.hasOwnProperty('username')) {
444
- this.settings.username = obj['username'];
445
- }
446
- if (obj.hasOwnProperty('password')) {
447
- this.settings.password = obj['password'];
448
- }
449
- if (obj.hasOwnProperty('timeoutInMs')) {
450
- this.settings.timeoutInMs = obj['timeoutInMs'];
451
- }
452
- if (obj.hasOwnProperty('session')) {
453
- this.settings.session = obj['session'];
454
- }
455
- if (obj.hasOwnProperty('useGroups')) {
456
- this.settings.useGroups = obj['useGroups'];
457
- }
458
- if (obj.hasOwnProperty('useEncryption')) {
459
- this.settings.useEncryption = obj['useEncryption'];
460
- }
461
- if (obj.hasOwnProperty('useMatch')) {
462
- this.settings.useMatch = obj['useMatch'];
439
+ if (obj.options) {
440
+ this.settings.options = Object.assign({}, ownOptions, obj.options);
463
441
  }
464
442
  if (obj.hasOwnProperty('assetPath')) {
465
443
  this.settings.assetPath = obj['assetPath'];
@@ -474,27 +452,6 @@ let ProductSettingsService = class ProductSettingsService {
474
452
  this.settings.threeDAssetPath += '/';
475
453
  }
476
454
  }
477
- if (obj.hasOwnProperty('currencySymbol')) {
478
- this.settings.currencySymbol = obj['currencySymbol'];
479
- }
480
- if (obj.hasOwnProperty('gtm')) {
481
- this.settings.gtm = obj['gtm'];
482
- }
483
- if (obj.hasOwnProperty('assetIndex')) {
484
- this.settings.assetIndex = obj['assetIndex'];
485
- }
486
- if (obj.hasOwnProperty('lightPresetsIndex')) {
487
- this.settings.lightPresetsIndex = obj['lightPresetsIndex'];
488
- }
489
- if (obj.hasOwnProperty('additionalTranslationFile')) {
490
- this.settings.additionalTranslationFile = obj['additionalTranslationFile'];
491
- }
492
- if (obj.hasOwnProperty('options')) {
493
- this.settings.options = obj['options'];
494
- }
495
- if (obj.hasOwnProperty('renderParameters')) {
496
- this.settings.renderParameters = obj['renderParameters'];
497
- }
498
455
  this.settingsFinished();
499
456
  });
500
457
  }
@@ -509,17 +466,14 @@ ProductSettingsService.ctorParameters = () => [
509
466
  { type: JsonUtilsService },
510
467
  { type: DictionaryService }
511
468
  ];
512
- ProductSettingsService.ɵprov = ɵɵdefineInjectable({ factory: function ProductSettingsService_Factory() { return new ProductSettingsService(ɵɵinject(JsonUtilsService), ɵɵinject(DictionaryService)); }, token: ProductSettingsService, providedIn: "root" });
513
469
  ProductSettingsService = __decorate([
514
- Injectable({
515
- providedIn: 'root'
516
- })
470
+ Injectable()
517
471
  ], ProductSettingsService);
518
472
 
519
473
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
520
474
  let ProductConnectorService = class ProductConnectorService {
521
- constructor(connector, _settingsService) {
522
- this.connector = connector;
475
+ constructor(_adapterService, _settingsService) {
476
+ this._adapterService = _adapterService;
523
477
  this._settingsService = _settingsService;
524
478
  this.controllerInitialized = new BehaviorSubject(false);
525
479
  this._initializing = false;
@@ -533,7 +487,7 @@ let ProductConnectorService = class ProductConnectorService {
533
487
  ngOnDestroy() {
534
488
  this.subs.forEach(sub => sub.unsubscribe());
535
489
  }
536
- initDefaultDevelopTestConnection() {
490
+ initConnection() {
537
491
  return __awaiter(this, void 0, void 0, function* () {
538
492
  if (this._initialized || this._initializing) {
539
493
  return;
@@ -544,20 +498,8 @@ let ProductConnectorService = class ProductConnectorService {
544
498
  if (!settings) {
545
499
  throw Error('Settings are not defined!');
546
500
  }
547
- this.connectorOptions.url = settings.url;
548
- this.connectorOptions.schema = settings.schema;
549
- this.connectorOptions.version = settings.version;
550
- this.connectorOptions.branch = settings.branch;
551
- this.connectorOptions.username = settings.username;
552
- this.connectorOptions.password = settings.password;
553
- this.connectorOptions.session = settings.session;
554
- this.connectorOptions.currencyId = settings.currency;
555
- this.connectorOptions.useGroups = settings.useGroups;
556
- this.connectorOptions.useRenders = settings.useRenders;
557
- this.connectorOptions.useLoginEncryption = settings.useEncryption;
558
- this.connectorOptions.languageCode = settings.languageCode;
559
- this.connector.initConnector(this.connectorOptions);
560
- this._settingsService.settings.session = this.connectorOptions.session;
501
+ this.connectorOptions = Object.assign(new Options(), settings);
502
+ yield this._adapterService.initConnector(this.connectorOptions);
561
503
  this.controllerInitialized.next(true);
562
504
  this._initialized = true;
563
505
  this._initializing = false;
@@ -567,37 +509,53 @@ let ProductConnectorService = class ProductConnectorService {
567
509
  }
568
510
  });
569
511
  }
512
+ getProductBundleSettings(url, upId) {
513
+ return __awaiter(this, void 0, void 0, function* () {
514
+ return this._adapterService.getProductBundleSettings(url, upId);
515
+ });
516
+ }
570
517
  setInstance(instanceId) {
571
- this.connector.setInstance(instanceId);
518
+ this._instanceId = instanceId;
519
+ this._adapterService.setInstance(instanceId);
572
520
  }
573
521
  getFullArticle(sku) {
574
522
  return __awaiter(this, void 0, void 0, function* () {
575
- const goodId = yield this.connector.getGoodIdFromArticleNr(sku);
523
+ const goodId = yield this._adapterService.getGoodIdFromArticleNr(sku);
576
524
  if (goodId) {
577
- return this.connector.getArticleFullObject(goodId);
525
+ return this._adapterService.getArticleFullObject(goodId);
578
526
  }
579
527
  return null;
580
528
  });
581
529
  }
582
530
  getDocumentContent(docId, thumbnail = true) {
583
- return this.connector.getDocumentContent(docId, thumbnail);
531
+ return this._adapterService.getDocumentContent(docId, thumbnail);
584
532
  }
585
533
  getDeliveryPrognosis(goodId) {
586
- return this.connector.getDeliveryPrognosis(goodId);
534
+ return this._adapterService.getDeliveryPrognosis(goodId);
587
535
  }
588
536
  getSelectorDeliveryDate() {
589
537
  return __awaiter(this, void 0, void 0, function* () {
590
- return this.connector.getSelectorDeliveryDate();
538
+ return this._adapterService.getSelectorDeliveryDate();
591
539
  });
592
540
  }
593
541
  getDeliveryDate2(goodId) {
594
- return this.connector.getDeliveryDate2(goodId);
542
+ return this._adapterService.getDeliveryDate2(goodId);
595
543
  }
596
544
  getSuperArticle(id) {
597
- return this.connector.getSuperArticle(id);
545
+ return this._adapterService.getSuperArticle(id);
598
546
  }
599
- getJsonArticleFlatTree(goodId, goodType, quantity, showLoader = true, instanceId, configuratorStatistics) {
600
- return this.connector.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, instanceId, configuratorStatistics);
547
+ getJsonArticleFlatTree(goodId, goodType, quantity, showLoader = true, configuratorStatistics) {
548
+ return this._adapterService.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, this._instanceId, configuratorStatistics);
549
+ }
550
+ addWebSessionTransactionLine(sku, quantity) {
551
+ return __awaiter(this, void 0, void 0, function* () {
552
+ return yield this._adapterService.addWebSessionTransactionLine(sku, quantity);
553
+ });
554
+ }
555
+ getWebTransaction() {
556
+ this._adapterService.getWebTransaction().then((response) => {
557
+ console.log(response);
558
+ });
601
559
  }
602
560
  onShowLoaderChange(showLoader) {
603
561
  this._shouldShowLoader = showLoader;
@@ -607,11 +565,8 @@ ProductConnectorService.ctorParameters = () => [
607
565
  { type: ProductConnectorAdapterService },
608
566
  { type: ProductSettingsService }
609
567
  ];
610
- ProductConnectorService.ɵprov = ɵɵdefineInjectable({ factory: function ProductConnectorService_Factory() { return new ProductConnectorService(ɵɵinject(ProductConnectorAdapterService), ɵɵinject(ProductSettingsService)); }, token: ProductConnectorService, providedIn: "root" });
611
568
  ProductConnectorService = __decorate([
612
- Injectable({
613
- providedIn: 'root'
614
- })
569
+ Injectable()
615
570
  ], ProductConnectorService);
616
571
 
617
572
  let ProductEventService = class ProductEventService {
@@ -630,7 +585,6 @@ let ProductEventService = class ProductEventService {
630
585
  this.onUpdateProductInfoTab = new Subject();
631
586
  }
632
587
  };
633
- ProductEventService.ɵprov = ɵɵdefineInjectable({ factory: function ProductEventService_Factory() { return new ProductEventService(); }, token: ProductEventService, providedIn: "root" });
634
588
  __decorate([
635
589
  Output()
636
590
  ], ProductEventService.prototype, "onAddToCart", void 0);
@@ -645,231 +599,278 @@ __decorate([
645
599
  ], ProductEventService.prototype, "onForceRenderImage", void 0);
646
600
  ProductEventService = __decorate([
647
601
  Directive(),
648
- Injectable({
649
- providedIn: 'root'
650
- })
602
+ Injectable()
651
603
  ], ProductEventService);
652
604
 
653
- /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
654
- var IconEnum;
655
- (function (IconEnum) {
656
- IconEnum["AddToCartDrop"] = "add_to_cart_drop";
657
- IconEnum["DeliveryTruck"] = "delivery_truck";
658
- IconEnum["Download"] = "download";
659
- IconEnum["FullScreen"] = "full_screen";
660
- IconEnum["Location"] = "location";
661
- IconEnum["Logo"] = "logo";
662
- IconEnum["MagicWand"] = "magic_wand";
663
- IconEnum["NormalScreen"] = "normal_screen";
664
- IconEnum["Quote"] = "quote";
665
- IconEnum["Refresh"] = "refresh";
666
- IconEnum["ThreeD"] = "three_d";
667
- IconEnum["Truck"] = "truck";
668
- IconEnum["TwoD"] = "two_d";
669
- IconEnum["Warehouse"] = "warehouse";
670
- })(IconEnum || (IconEnum = {}));
671
-
672
- /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
673
- const IconSvg = {
674
- "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>",
675
- "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>",
676
- "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>",
677
- "full_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"17.35 32.81 17.35 26.75 19.46 28.86 28.69 19.63 26.59 17.52 32.65 17.52 32.65 23.58 30.54 21.47 21.31 30.71 23.41 32.81 17.35 32.81\" fill=\"#484f60\"/></svg>",
678
- "location": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,12.67A8.33,8.33,0,0,0,16.67,21c0,4.6,8.33,16.67,8.33,16.67S33.33,25.6,33.33,21A8.33,8.33,0,0,0,25,12.67Zm0,10.41A2.08,2.08,0,1,1,27.08,21,2.08,2.08,0,0,1,25,23.08Z\" fill=\"#484f60\"/></svg>",
679
- "logo": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><rect x=\"10\" y=\"21.19\" width=\"2.04\" height=\"6.32\" fill=\"#484f60\"/><path d=\"M18.66,29.24a3.84,3.84,0,0,1-2.85-1.19,4.19,4.19,0,0,1,0-5.77,4,4,0,0,1,5.71,0,4.19,4.19,0,0,1,0,5.77A3.85,3.85,0,0,1,18.66,29.24Zm0-6.16a1.79,1.79,0,0,0-1.38.58,2.12,2.12,0,0,0-.57,1.51,2,2,0,0,0,.57,1.49,1.94,1.94,0,0,0,2.76,0,2.08,2.08,0,0,0,.56-1.5,2.15,2.15,0,0,0-.56-1.51A1.76,1.76,0,0,0,18.67,23.08Z\" fill=\"#484f60\"/><polygon points=\"31.05 29.18 27.33 25.02 27.33 29.14 25.29 29.14 25.29 21.15 26.57 21.15 30.29 25.33 30.29 21.19 32.33 21.19 32.33 29.18 31.05 29.18\" fill=\"#484f60\"/><polygon points=\"35.34 29.14 35.34 21.19 39.9 21.19 39.9 23.17 37.38 23.17 37.38 23.9 39.66 23.9 39.66 25.87 37.38 25.87 37.38 27.14 40 27.14 40 29.14 35.34 29.14\" fill=\"#484f60\"/></svg>",
680
- "magic_wand": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><title>magic_wand</title><g style=\"isolation:isolate\"><path d=\"M20.45,10.71a.28.28,0,0,1,.49-.19l1.4,1.25a.93.93,0,0,0,.83.23L25,11.62a.29.29,0,0,1,.34.41l-.76,1.71a.93.93,0,0,0,0,.86l.93,1.62c.12.26,0,.45-.29.45l-1.86-.2a1,1,0,0,0-.81.32l-1.26,1.38a.28.28,0,0,1-.5-.14l-.39-1.83a1,1,0,0,0-.55-.67l-1.71-.77a.28.28,0,0,1,0-.52l1.62-.94a1,1,0,0,0,.48-.73Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M23.3,16.21a1,1,0,0,0-.8.31l-1,1.13a.29.29,0,0,1-.51-.14L20.66,16a1,1,0,0,0-.55-.68l-1.39-.62a.28.28,0,0,1,0-.52L20,13.45a1,1,0,0,0,.48-.73l.16-1.5a.29.29,0,0,1,.49-.2l1.13,1a.93.93,0,0,0,.83.23L24.58,12a.29.29,0,0,1,.34.41l-.62,1.38a.91.91,0,0,0,.05.86l.75,1.32a.29.29,0,0,1-.29.44Z\" fill=\"#484f60\"/></g><path d=\"M33.57,36.76a.53.53,0,0,1,0,.72l-2.37,2.18a.48.48,0,0,1-.7,0L18,25.34a.51.51,0,0,1,0-.71l2.36-2.19a.49.49,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M18.6,19.94a.51.51,0,0,1,0,.71L16.2,22.84a.48.48,0,0,1-.7,0l-2.76-3.13a.51.51,0,0,1,0-.71l2.37-2.19a.48.48,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M30.67,10.55a.29.29,0,0,1,.47.24v1.12a1,1,0,0,0,.4.77l.9.66a.29.29,0,0,1-.08.52l-1.07.35a1,1,0,0,0-.61.61l-.35,1.06a.28.28,0,0,1-.51.09l-.67-.91a1,1,0,0,0-.77-.4H27.27a.29.29,0,0,1-.25-.47l.66-.9a.93.93,0,0,0,.14-.85l-.35-1.07a.29.29,0,0,1,.38-.38l1.07.35a1,1,0,0,0,.85-.13Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M29.25,14.88a1,1,0,0,0-.77-.4h-.86a.29.29,0,0,1-.24-.47l.5-.69a.93.93,0,0,0,.14-.85l-.26-.82c-.07-.27.1-.44.37-.37l.82.26a1,1,0,0,0,.85-.13l.69-.51a.29.29,0,0,1,.47.25V12a.94.94,0,0,0,.39.76l.7.51a.29.29,0,0,1-.09.52l-.81.26a1,1,0,0,0-.62.61l-.26.82a.29.29,0,0,1-.52.08Z\" fill=\"#484f60\"/></g><path d=\"M37,15.81a.29.29,0,0,1,.32.43l-.13.26a.91.91,0,0,0,0,.85l.15.26A.29.29,0,0,1,37,18l-.29,0a.93.93,0,0,0-.81.27l-.2.21a.28.28,0,0,1-.5-.16l0-.29a1,1,0,0,0-.52-.69l-.27-.13a.28.28,0,0,1,0-.52l.26-.13a.93.93,0,0,0,.5-.71l0-.29a.29.29,0,0,1,.5-.17l.21.21a.92.92,0,0,0,.82.26Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M35.25,18a1,1,0,0,0-.52-.7l-.12-.05a.28.28,0,0,1,0-.52l.12-.06a1,1,0,0,0,.51-.7V15.8a.29.29,0,0,1,.5-.18l.09.1a.92.92,0,0,0,.82.26l.13,0a.29.29,0,0,1,.32.42L37,16.5a.91.91,0,0,0,0,.85l.07.12a.29.29,0,0,1-.31.43l-.13,0a1,1,0,0,0-.82.28l-.09.1a.28.28,0,0,1-.5-.16Z\" fill=\"#484f60\"/></g></g></svg>",
681
- "normal_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"22.18 29.83 24.29 31.93 24.29 25.87 18.23 25.87 20.34 27.98 16.43 31.89 18.28 33.73 22.18 29.83\" fill=\"#484f60\"/><polygon points=\"33.57 18.44 31.73 16.6 27.82 20.51 25.71 18.4 25.71 24.46 31.77 24.46 29.66 22.35 33.57 18.44\" fill=\"#484f60\"/></svg>",
682
- "quote": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M14.5,31.51V12a.5.5,0,0,1,.5-.5H35a.5.5,0,0,1,.5.5V38a.5.5,0,0,1-.5.5H21.27V40H35a2,2,0,0,0,2-2V12a2,2,0,0,0-2-2H15a2,2,0,0,0-2,2V31.51Z\" fill=\"#484f60\"/><path d=\"M21.27,40V33.56c0-1.78-.27-2.05-2.05-2.05H13Z\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"18.5\" width=\"6\" height=\"4\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"21.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"18.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"25.5\" width=\"6\" height=\"4\" transform=\"translate(59 55) rotate(-180)\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"28.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"25.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"14.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"34.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/></svg>",
683
- "refresh": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"refresh.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=\"9.44\" inkscape:cx=\"13.990693\" inkscape:cy=\"13.961336\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /><g transform=\"matrix(0.05356365,0,0,0.05356365,11.44076,11.82465)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 414.32892,173.53368 397.86852,58.29997 c -1.3534,-9.447409 -12.96516,-13.373353 -19.75699,-6.581524 l -23.97472,23.97472 C 323.3074,57.095569 288.30682,47.308258 252.3168,47.308258 c -108.23157,0 -195.126154,84.711612 -197.8314,192.852392 -0.147446,5.91103 4.149441,10.98085 9.992183,11.82206 l 46.516107,6.64982 c 6.93462,1.01194 13.38577,-4.43269 13.28954,-11.68548 -0.9646,-71.37163 56.68057,-129.79595 128.03357,-129.79595 17.27835,0 34.3526,3.51232 50.13165,10.23043 l -23.11022,23.11022 c -6.74915,6.74915 -2.91866,18.3966 6.58152,19.75699 l 115.23371,16.4604 c 7.59269,1.14465 14.26423,-5.4586 13.17546,-13.17546 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.77603161\" /></g></g><path inkscape:connector-curvature=\"0\" d=\"m 35.105827,24.725982 -2.489742,-0.355606 c -0.321647,-0.04073 -0.711797,0.234897 -0.711797,0.671018 0,3.781814 -3.076753,6.858567 -6.858567,6.858567 -0.920628,0 -1.830946,-0.186303 -2.673013,-0.542533 l 1.198298,-1.198297 c 0.361507,-0.361507 0.156331,-0.985389 -0.352533,-1.058254 l -6.172336,-0.882302 c -0.405403,-0.05792 -0.764422,0.289765 -0.705726,0.705725 l 0.881637,6.172381 c 0.07258,0.506577 0.694003,0.71545 1.058254,0.352527 l 1.315225,-1.314599 c 1.643397,0.987012 3.516951,1.506391 5.450194,1.506391 5.769264,0 10.423029,-4.514936 10.595325,-10.27871 0.0091,-0.317237 -0.221012,-0.591248 -0.535219,-0.636308 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.04156709\" /></svg>",
684
- "three_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.08,30.77a4.85,4.85,0,0,1-3-.8,4,4,0,0,0-2.49-.15,6.21,6.21,0,0,0,2.53,1.09,12.84,12.84,0,0,0,2.93-.14\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M14.27,19.68A4.71,4.71,0,0,0,11,20.78l2,.14c.31,0,1.2-.69,1.55-.81a3.88,3.88,0,0,1,1.65-.24l-1.94-.19\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.64,28.79a4.13,4.13,0,0,0-3.1-4c.89-.7,1.77-1.09,2.26-2.21a5.12,5.12,0,0,0,.35-1.9c-.13-3.24-2.64-3.73-5.29-4.15a4,4,0,0,1,3.44,3.7,4.61,4.61,0,0,1-.83,3.12,9.7,9.7,0,0,1-1.82,1.43,4.3,4.3,0,0,1,3.17,4.34,4.9,4.9,0,0,1-4.21,5c2.09-.34,4.37-.64,5.46-2.69a5,5,0,0,0,.57-2.58\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M28.44,18.88l.38-.07.48-.06.57,0h.75l.36,0,.35.05c-.2,0-.42-.08-1.57-.25l-.36-.05-.37,0h-.77l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38H27l.13,0h1.63l.21,0h.2l.2,0h.05l1.55-.24h0l-.34.05-.33,0H29.12l-.36,0-.33,0a1.15,1.15,0,0,1-.28-.06V19Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M40,24.34a9,9,0,0,0-3-7.1,11.06,11.06,0,0,0-4.47-1.86c4.38,1.13,6.23,5.31,6.13,9.54-.12,4.5-2.27,8.55-6.86,9.66,2.59-.63,5-1.41,6.52-3.78A12,12,0,0,0,40,24.34\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M35.38,16.71A7.32,7.32,0,0,1,36.74,18a7.82,7.82,0,0,1,1,1.73,10.32,10.32,0,0,1,.68,2.16,13.86,13.86,0,0,1,.23,2.59,15,15,0,0,1-.25,2.78,11.39,11.39,0,0,1-.68,2.31,9.34,9.34,0,0,1-1,1.85,8.23,8.23,0,0,1-1.28,1.4,7.76,7.76,0,0,1-1.7,1.07,9.07,9.07,0,0,1-2,.69,13.36,13.36,0,0,1-2.26.33,18.25,18.25,0,0,1-2.45,0c-.5,0-1-.08-1.39-.12l-1.17-.14c-.36,0-.68-.11-1-.16l-.77-.15V15.86c.34-.09.71-.18,1.09-.26s.81-.15,1.24-.21.88-.12,1.34-.17.95-.1,1.44-.13a20.57,20.57,0,0,1,2.33,0,12,12,0,0,1,2,.24,8.24,8.24,0,0,1,1.72.55A7.1,7.1,0,0,1,35.38,16.71ZM27.92,31.53a6.53,6.53,0,0,0,2.46-.32A4.81,4.81,0,0,0,32.32,30a5.82,5.82,0,0,0,1.27-2.18A10.11,10.11,0,0,0,34,24.67a8.65,8.65,0,0,0-.42-2.85,4.94,4.94,0,0,0-1.18-2,4.45,4.45,0,0,0-1.83-1.11,6.55,6.55,0,0,0-2.35-.28l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38a2.11,2.11,0,0,0,.29.06l.34,0,.37,0,.36,0h.07\" fill=\"#484f60\"/><path d=\"M14.57,16.47a5.49,5.49,0,0,1,2,.22,3.89,3.89,0,0,1,1.49.84A3.66,3.66,0,0,1,19,18.89a4.29,4.29,0,0,1,.33,1.7,5.29,5.29,0,0,1-.17,1.34,4.29,4.29,0,0,1-.5,1.16,4.17,4.17,0,0,1-.84.94,4.88,4.88,0,0,1-1.16.69v.05a3.7,3.7,0,0,1,1.22.5,4,4,0,0,1,1,.92,4.61,4.61,0,0,1,.69,1.3,5.24,5.24,0,0,1,.25,1.62,5.36,5.36,0,0,1-.42,2.15,4.44,4.44,0,0,1-1.2,1.64,4.84,4.84,0,0,1-1.86,1,6.78,6.78,0,0,1-2.39.23,7.69,7.69,0,0,1-2.36-.52,6.89,6.89,0,0,1-.9-.42,4.36,4.36,0,0,1-.69-.47l.62-2.9a4.12,4.12,0,0,0,.53.34,6.21,6.21,0,0,0,.73.36,5.69,5.69,0,0,0,.88.31,5.19,5.19,0,0,0,1,.15,3.11,3.11,0,0,0,1.1-.13,2,2,0,0,0,.8-.45,1.93,1.93,0,0,0,.49-.71,2.35,2.35,0,0,0,.17-.89A2.48,2.48,0,0,0,16,27.67a2.23,2.23,0,0,0-.63-.79,2.9,2.9,0,0,0-.89-.46,3.5,3.5,0,0,0-1-.15H12.2V23.44l1.23,0a3.44,3.44,0,0,0,.83-.11,2.83,2.83,0,0,0,.79-.36,2,2,0,0,0,.6-.62,2,2,0,0,0,.23-.94,1.8,1.8,0,0,0-.13-.71,1.36,1.36,0,0,0-.38-.56,1.58,1.58,0,0,0-.64-.35,2.79,2.79,0,0,0-.9-.1,4.07,4.07,0,0,0-.84.13c-.27.08-.53.18-.78.28a6.56,6.56,0,0,0-1.17.7L10.42,18a5,5,0,0,1,.72-.51,7.82,7.82,0,0,1,2.12-.82A8,8,0,0,1,14.57,16.47Z\" fill=\"#484f60\"/></svg>",
685
- "truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"truck.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=\"9.44\" inkscape:cx=\"31.555563\" inkscape:cy=\"21.585628\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 119.467,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.964,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.824,0 34.133,15.309 34.133,34.133 0,18.824 -15.309,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 409.6,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.963,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.825,0 34.133,15.309 34.133,34.133 0,18.824 -15.308,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 510.643,289.784 -76.8,-119.467 c -1.57,-2.441 -4.275,-3.917 -7.177,-3.917 H 332.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 213.333 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 v -17.067 h -25.6 V 183.467 h 80.674 l 72.926,113.442 v 82.825 H 452.266 V 396.8 h 51.2 c 4.719,0 8.533,-3.814 8.533,-8.533 V 294.4 c 10e-4,-1.63 -0.468,-3.243 -1.356,-4.616 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 375.467,277.333 V 217.6 h 68.267 v -17.067 h -76.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 76.8 c 0,4.719 3.814,8.533 8.533,8.533 h 128 V 277.332 H 375.467 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 332.8,106.667 H 8.533 C 3.823,106.667 0,110.49 0,115.2 v 273.067 c 0,4.719 3.823,8.533 8.533,8.533 H 76.8 V 379.733 H 17.067 v -256 h 307.2 v 256 H 162.133 V 396.8 H 332.8 c 4.719,0 8.533,-3.814 8.533,-8.533 V 115.2 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"8.533\" y=\"345.60001\" width=\"51.200001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"179.2\" y=\"345.60001\" width=\"145.067\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"469.33301\" y=\"345.60001\" width=\"34.132999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"34.132999\" y=\"140.8\" width=\"298.66699\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"110.933\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"401.06699\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
686
- "two_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M22.41,33.89H11V31c.87-.76,1.75-1.56,2.62-2.41S15.2,27,15.73,26.39A11.84,11.84,0,0,0,17.4,24a4.45,4.45,0,0,0,.5-2,2.52,2.52,0,0,0-.64-1.85,2.47,2.47,0,0,0-1.84-.65,4.57,4.57,0,0,0-1.89.45,8.17,8.17,0,0,0-1.84,1.14h-.31V17.2a10.26,10.26,0,0,1,2-.73,10.46,10.46,0,0,1,2.71-.36,5.79,5.79,0,0,1,4.16,1.37,5.15,5.15,0,0,1,1.44,3.9,7.37,7.37,0,0,1-.69,3.14A12.94,12.94,0,0,1,19,27.59c-.6.66-1.19,1.26-1.79,1.81s-1,.93-1.28,1.15h6.53Z\" fill=\"#484f60\"/><path d=\"M38.14,20.79a7.49,7.49,0,0,0-2.37-3,6.52,6.52,0,0,0-2.17-1,11.93,11.93,0,0,0-3.06-.35H25.26V33.89h5.13a13.25,13.25,0,0,0,3-.3,6.61,6.61,0,0,0,2.33-1.08,7.71,7.71,0,0,0,2.34-3A9.9,9.9,0,0,0,39,25.19,10.47,10.47,0,0,0,38.14,20.79Zm-3.49,7.27a4,4,0,0,1-1.51,1.88,3.77,3.77,0,0,1-1.22.54,10.07,10.07,0,0,1-2,.14H29V19.7H30a9.8,9.8,0,0,1,1.81.13,3.75,3.75,0,0,1,1.18.46,4.07,4.07,0,0,1,1.65,1.92,7.4,7.4,0,0,1,.52,2.94A7.92,7.92,0,0,1,34.65,28.06Z\" fill=\"#484f60\"/></svg>",
687
- "warehouse": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"warehouse.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"6.675088\" inkscape:cx=\"9.6569985\" inkscape:cy=\"12.384637\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 507.785,146.242 260.318,1.175 c -2.603,-1.519 -5.803,-1.57 -8.439,-0.111 L 4.412,137.598 C 1.69,139.091 0,141.958 0,145.064 v 358.4 c 0,4.719 3.823,8.533 8.533,8.533 H 51.2 c 4.71,0 8.533,-3.814 8.533,-8.533 V 204.798 h 392.533 v 298.667 c 0,4.719 3.814,8.533 8.533,8.533 h 42.667 c 4.719,0 8.533,-3.814 8.533,-8.533 V 153.598 c 10e-4,-3.03 -1.603,-5.829 -4.214,-7.356 z m -12.852,348.689 h -25.6 V 196.264 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 H 51.2 c -4.71,0 -8.533,3.823 -8.533,8.533 v 298.667 h -25.6 V 150.099 L 255.872,18.344 494.933,158.487 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,392.531 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 324.267,392.531 h -102.4 c -4.71,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.823,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 230.4 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 281.6,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.823,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,290.131 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,298.664 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"255.998\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"221.864\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 298.667,119.464 h -85.333 c -4.71,0 -8.533,3.823 -8.533,8.533 v 34.133 c 0,4.71 3.823,8.533 8.533,8.533 h 85.333 c 4.719,0 8.533,-3.823 8.533,-8.533 v -34.133 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z m -8.534,34.134 h -68.267 v -17.067 h 68.267 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>"
688
- };
689
-
690
- let IconCacheService = class IconCacheService {
691
- constructor(_sanitizer) {
692
- this._sanitizer = _sanitizer;
693
- this._iconCache = {};
694
- this._allIcons = IconSvg;
695
- this.setIconCache();
696
- }
697
- /**
698
- * All the icons as a large JSON object, from the all-icons.json file.
699
- * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
700
- */
701
- get iconCache() {
702
- return this._iconCache;
703
- }
704
- getIcon(iconName) {
705
- return this._iconCache[iconName.toLowerCase()];
706
- }
707
- setIconCache() {
708
- for (const key in this._allIcons) {
709
- if (this._allIcons.hasOwnProperty(key)) {
710
- this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);
711
- }
712
- }
713
- }
714
- };
715
- IconCacheService.ctorParameters = () => [
716
- { type: DomSanitizer }
717
- ];
718
- IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
719
- IconCacheService = __decorate([
720
- Injectable({
721
- providedIn: 'root'
722
- })
723
- ], IconCacheService);
724
-
725
- let ImageCarouselComponent = class ImageCarouselComponent {
726
- constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
605
+ let IoneProductComponent = class IoneProductComponent {
606
+ constructor(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
607
+ // this.sku = 'CF-HILL';
608
+ // this.sku = 'CF-ALMADA';
609
+ // this.sku = 'CF-39904ANT';
610
+ // this.sku = 'CF-22346001';
611
+ // this.sku = '104';
612
+ // this.sku = '1000561986';
613
+ // this.sku = '1000567768';
614
+ // this.sku = '1000234793';
615
+ // this.sku = '1066';
616
+ // this.sku = '104';
617
+ this._dictionary = _dictionary;
618
+ this._jsonUtils = _jsonUtils;
727
619
  this._ione = _ione;
728
- this._appEventService = _appEventService;
729
620
  this._changeDetector = _changeDetector;
730
- this._domSanitizer = _domSanitizer;
731
- this.iconCache = iconCache;
732
- this.icons = IconEnum;
733
- this.showLoader = false;
734
- this.showRefresh = false;
735
- this.resizing = false;
736
- this._currentIndex = 0;
737
- this._images = [];
621
+ this._appEventService = _appEventService;
622
+ this._settingsService = _settingsService;
623
+ this.onAddToCart = new EventEmitter();
624
+ this.forceRenderImage = new EventEmitter();
625
+ this.onAlternativeClick = new EventEmitter();
626
+ this.onArticleInfoReceived = new EventEmitter();
627
+ this.onArticleReceived = new EventEmitter();
628
+ this.onSelectionsReceived = new EventEmitter();
629
+ this.onAddToQuote = new EventEmitter();
738
630
  this._subs = [];
739
- this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
740
- this.showLoader = true;
741
- }), this._appEventService.onDraftRenderImageReceived.subscribe((url) => {
742
- if (this._images[0] instanceof CoDocument) {
743
- this._images.unshift(url);
631
+ // this.sku = "70000107";
632
+ this._subs.push(
633
+ // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
634
+ this._appEventService.onAddToCart.subscribe((json) => {
635
+ this._handleAddToCart(json);
636
+ }), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)));
637
+ }
638
+ set settings(value) {
639
+ if (value) {
640
+ let settings;
641
+ if (typeof value === 'string') {
642
+ settings = JSON.parse(value);
744
643
  }
745
644
  else {
746
- this._images[0] = url;
645
+ settings = value;
747
646
  }
748
- this.showLoader = false;
749
- }));
750
- }
751
- set images(value) {
752
- if (value && value.length > 0) {
753
- this._images = value;
754
- this._loadImages();
755
- this._changeDetector.detectChanges();
647
+ this._settingsService.createSettingsFromObject(settings);
648
+ // this._initConnection(settings);
756
649
  }
757
650
  }
758
- handleWindowResize() {
759
- this.resizing = true;
760
- this._scrollCarouselToIndex();
761
- clearTimeout(this._resizeTimer);
762
- this._resizeTimer = setTimeout(() => {
763
- this.resizing = false;
764
- }, 200);
651
+ get settings() {
652
+ return this._settings;
765
653
  }
766
- gotoNextSlide() {
767
- this.currentIndex++;
654
+ ngOnChanges(changes) {
655
+ this._changeDetector.detectChanges();
768
656
  }
769
- gotoPrevSlide() {
770
- this.currentIndex--;
657
+ ngOnDestroy() {
658
+ this._subs.forEach(s => s.unsubscribe());
771
659
  }
772
- isCurrentIndex(index) {
773
- return this.currentIndex === index;
660
+ _handleAnswerInfoReceived(info) {
661
+ this.onArticleInfoReceived.next(info);
774
662
  }
775
- get currentIndex() {
776
- return this._currentIndex;
663
+ _handleAddToCart(json) {
664
+ return __awaiter(this, void 0, void 0, function* () {
665
+ if (this._settingsService.settings.createWebOrder) {
666
+ if (json) {
667
+ const articleTreeData = JSON.parse(json);
668
+ if (articleTreeData.articleTree && articleTreeData.articleTree.article) {
669
+ if (articleTreeData.articleTree.compositeGoods && Array.isArray(articleTreeData.articleTree.compositeGoods) &&
670
+ articleTreeData.articleTree.compositeGoods.length > 0 && articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {
671
+ for (let i = 0; i < articleTreeData.articleTree.compositeGoods.length - 1; i++) {
672
+ const good = articleTreeData.articleTree.compositeGoods[i];
673
+ const subArticle = articleTreeData.articleTree.subArticles[i];
674
+ yield this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);
675
+ }
676
+ }
677
+ else {
678
+ yield this._ione.addWebSessionTransactionLine(articleTreeData.articleTree.article.articleNumber, 1);
679
+ }
680
+ }
681
+ }
682
+ }
683
+ this.onAddToCart.emit(json);
684
+ });
777
685
  }
778
- set currentIndex(value) {
779
- this._currentIndex = value;
780
- this._scrollCarouselToIndex();
686
+ };
687
+ IoneProductComponent.ctorParameters = () => [
688
+ { type: DictionaryService },
689
+ { type: JsonUtilsService },
690
+ { type: ProductConnectorService },
691
+ { type: ChangeDetectorRef },
692
+ { type: ProductEventService },
693
+ { type: ProductSettingsService }
694
+ ];
695
+ __decorate([
696
+ Input()
697
+ ], IoneProductComponent.prototype, "sku", void 0);
698
+ __decorate([
699
+ Input()
700
+ ], IoneProductComponent.prototype, "settings", null);
701
+ __decorate([
702
+ Output()
703
+ ], IoneProductComponent.prototype, "onAddToCart", void 0);
704
+ __decorate([
705
+ Output()
706
+ ], IoneProductComponent.prototype, "forceRenderImage", void 0);
707
+ __decorate([
708
+ Output()
709
+ ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
710
+ __decorate([
711
+ Output()
712
+ ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
713
+ __decorate([
714
+ Output()
715
+ ], IoneProductComponent.prototype, "onArticleReceived", void 0);
716
+ __decorate([
717
+ Output()
718
+ ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
719
+ __decorate([
720
+ Output()
721
+ ], IoneProductComponent.prototype, "onAddToQuote", void 0);
722
+ IoneProductComponent = __decorate([
723
+ Component({
724
+ selector: 'app-ione-product',
725
+ template: `
726
+ <app-product-page [sku]="sku"
727
+ ></app-product-page>
728
+ `,
729
+ providers: [
730
+ ProductEventService,
731
+ ProductSettingsService,
732
+ ProductConnectorAdapterService,
733
+ ProductConnectorService
734
+ ],
735
+ encapsulation: ViewEncapsulation.Emulated,
736
+ styles: [""]
737
+ })
738
+ ], IoneProductComponent);
739
+
740
+ let ProductInitializerService = class ProductInitializerService {
741
+ constructor(_settingsService) {
742
+ this._settingsService = _settingsService;
781
743
  }
782
- get images() {
783
- return this._images;
744
+ initializeApp() {
745
+ return __awaiter(this, void 0, void 0, function* () {
746
+ return this._settingsService.initializeSettings();
747
+ });
748
+ }
749
+ };
750
+ ProductInitializerService.ctorParameters = () => [
751
+ { type: ProductSettingsService }
752
+ ];
753
+ ProductInitializerService.ɵprov = ɵɵdefineInjectable({ factory: function ProductInitializerService_Factory() { return new ProductInitializerService(ɵɵinject(ProductSettingsService)); }, token: ProductInitializerService, providedIn: "root" });
754
+ ProductInitializerService = __decorate([
755
+ Injectable({
756
+ providedIn: 'root',
757
+ })
758
+ ], ProductInitializerService);
759
+
760
+ let ProductExternalSourceComponent = class ProductExternalSourceComponent {
761
+ constructor(_sanitizer, _productConnectorService, _appEventService) {
762
+ this._sanitizer = _sanitizer;
763
+ this._productConnectorService = _productConnectorService;
764
+ this._appEventService = _appEventService;
765
+ this.addToCart = new EventEmitter();
766
+ this.addToQuote = new EventEmitter();
767
+ this.alternativeClick = new EventEmitter();
768
+ this.showProduct = false;
769
+ this.loaded = false;
770
+ this.externalSettings = {};
771
+ this._subs = [];
772
+ }
773
+ set externalSource(value) {
774
+ this._externalSource = value;
775
+ this.loaded = false;
776
+ this._prepareExternalSource();
777
+ }
778
+ get externalSource() {
779
+ return this._externalSource;
780
+ }
781
+ showClass() {
782
+ return true;
784
783
  }
785
784
  ngOnInit() {
785
+ this._subs.push(this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)), this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
786
786
  }
787
787
  ngOnDestroy() {
788
- this.carousel = undefined;
789
788
  this._subs.forEach(s => s.unsubscribe());
790
789
  }
791
- handleThumbClick(index) {
792
- this.currentIndex = index;
793
- }
794
- onForceRenderImage() {
795
- this._appEventService.onForceRenderImage.next();
796
- }
797
- getImageSrc(image) {
798
- let source = '';
799
- if (image instanceof CoDocument) {
800
- if (image.filePath) {
801
- source = image.filePath;
802
- }
803
- else {
804
- source = image.documentBodyAsDataUri;
790
+ _prepareExternalSource() {
791
+ return __awaiter(this, void 0, void 0, function* () {
792
+ if (!this._externalSource) {
793
+ return;
805
794
  }
806
- }
807
- else if (image.detail !== undefined) {
808
- source = image.detail;
809
- }
810
- return this._domSanitizer.bypassSecurityTrustUrl(source);
811
- }
812
- _loadImages() {
813
- if (this._images) {
814
- this._images.forEach((i) => {
815
- if (!i.documentBody && !i.filePath) {
816
- this._ione.getDocumentContent(i.documentId, false).then((content) => {
817
- if (content) {
818
- i.documentBody = content.documentContent;
819
- }
820
- });
795
+ this.externalUrl = undefined;
796
+ this.externalSettings = {};
797
+ if (this.externalSource.type === 'CATF') {
798
+ // get bundle settings from external source
799
+ const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
800
+ this.externalSettings = JSON.parse(bundleSettings);
801
+ if (this.options) {
802
+ this.externalSettings.options = this.options;
821
803
  }
822
- });
823
- }
824
- }
825
- _scrollCarouselToIndex() {
826
- if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
827
- const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
828
- if (this.carousel && this.carousel.nativeElement) {
829
- this.carousel.nativeElement.scrollLeft = movePx;
830
- // this.carousel.nativeElement.scrollTo({
831
- // left: movePx,
832
- // behavior: 'smooth'
833
- // });
804
+ // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
805
+ // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
806
+ if (this.externalSource.username && this.externalSource.password) {
807
+ this.externalSettings.useLoginEncryption = true;
808
+ this.externalSettings.username = this.externalSource.username;
809
+ this.externalSettings.password = this.externalSource.password;
810
+ }
811
+ // finally show the catalog
812
+ this.showProduct = true;
834
813
  }
835
- }
814
+ else {
815
+ this.externalUrl = this.externalSource.url;
816
+ this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
817
+ this.showProduct = false;
818
+ }
819
+ this.loaded = true;
820
+ });
836
821
  }
837
822
  };
838
- ImageCarouselComponent.ctorParameters = () => [
839
- { type: ProductConnectorService },
840
- { type: ProductEventService },
841
- { type: ChangeDetectorRef },
823
+ ProductExternalSourceComponent.ctorParameters = () => [
842
824
  { type: DomSanitizer },
843
- { type: IconCacheService }
825
+ { type: ProductConnectorService },
826
+ { type: ProductEventService }
844
827
  ];
845
828
  __decorate([
846
- ViewChild('carousel', { read: ElementRef })
847
- ], ImageCarouselComponent.prototype, "carousel", void 0);
829
+ Input()
830
+ ], ProductExternalSourceComponent.prototype, "sku", void 0);
848
831
  __decorate([
849
832
  Input()
850
- ], ImageCarouselComponent.prototype, "showRefresh", void 0);
833
+ ], ProductExternalSourceComponent.prototype, "externalSource", null);
851
834
  __decorate([
852
835
  Input()
853
- ], ImageCarouselComponent.prototype, "images", null);
836
+ ], ProductExternalSourceComponent.prototype, "options", void 0);
854
837
  __decorate([
855
- HostListener('window:resize')
856
- ], ImageCarouselComponent.prototype, "handleWindowResize", null);
838
+ Output()
839
+ ], ProductExternalSourceComponent.prototype, "addToCart", void 0);
857
840
  __decorate([
858
- HostListener('swipeleft')
859
- ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
841
+ Output()
842
+ ], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
860
843
  __decorate([
861
- HostListener('swiperight')
862
- ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
844
+ Output()
845
+ ], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
863
846
  __decorate([
864
- HostBinding('class.resizing')
865
- ], ImageCarouselComponent.prototype, "resizing", void 0);
866
- ImageCarouselComponent = __decorate([
847
+ HostBinding('class.co-product-external-source')
848
+ ], ProductExternalSourceComponent.prototype, "showClass", null);
849
+ ProductExternalSourceComponent = __decorate([
867
850
  Component({
868
- selector: 'app-image-carousel',
869
- template: "<div id=\"product_page_carousel\">\n <div id=\"product_page_carousel_items\">\n <co-loader [isShown]=\"showLoader\"></co-loader>\n <div #carousel class=\"inner-carousel\">\n <!-- This has been taken out of the for loop to prevent flashing images when updating. -->\n <div *ngIf=\"images[0]\" class=\"carousel-item\" [id]=\"'slide-0'\" [class.active]=\"isCurrentIndex(0)\">\n <img [src]=\"getImageSrc(images[0])\">\n </div>\n <div *ngFor=\"let image of images.slice(1); let index = index\" class=\"carousel-item\" [id]=\"'slide-' + (index + 1)\" [class.active]=\"isCurrentIndex((index + 1))\">\n <img [src]=\"getImageSrc(image)\">\n </div>\n <div class=\"carousel-scroller-layer\" *ngIf=\"images && images.length > 1\">\n <div class=\"carousel-item-scroller prev\" (click)=\"gotoPrevSlide()\" *ngIf=\"currentIndex > 0\"></div>\n <div class=\"carousel-item-scroller next\" (click)=\"gotoNextSlide()\" *ngIf=\"currentIndex < images.length - 1\"></div>\n </div>\n </div>\n <co-icon class=\"selector-type-icon refresh-button\" [iconData]=\"iconCache.getIcon(icons.Refresh)\" (click)=\"onForceRenderImage()\" [class.loading]=\"showLoader\" *ngIf=\"showRefresh\"></co-icon>\n </div>\n\n <div id=\"product_page_carousel_thumbs\">\n <co-scroll-container class=\"scroll-container\" *ngIf=\"images && images.length > 1\">\n <div *ngFor=\"let image of images; let index = index\" class=\"carousel-thumb\" [class.active]=\"index === currentIndex\">\n <img [src]=\"getImageSrc(image)\" (click)=\"handleThumbClick(index)\"/>\n </div>\n </co-scroll-container>\n </div>\n</div>\n",
870
- styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:.2s;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width:650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}"]
851
+ selector: 'co-product-external-source',
852
+ template: `
853
+ <ng-container *ngIf="loaded">
854
+ <ng-container *ngIf="showProduct">
855
+ <app-product-page
856
+ [sku]="sku"
857
+ [settings]="externalSettings"
858
+ ></app-product-page>
859
+ </ng-container>
860
+ <ng-container *ngIf="!showProduct">
861
+ <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
862
+ </ng-container>
863
+ </ng-container>
864
+ `,
865
+ providers: [
866
+ ProductEventService,
867
+ ProductSettingsService,
868
+ ProductConnectorAdapterService,
869
+ ProductConnectorService
870
+ ],
871
+ encapsulation: ViewEncapsulation.None
871
872
  })
872
- ], ImageCarouselComponent);
873
+ ], ProductExternalSourceComponent);
873
874
 
874
875
  class StockAndDelivery {
875
876
  constructor(stock, deliveryDescription) {
@@ -886,6 +887,78 @@ var SelectorType;
886
887
  SelectorType["Omni"] = "Omni";
887
888
  })(SelectorType || (SelectorType = {}));
888
889
 
890
+ /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
891
+ var IconEnum;
892
+ (function (IconEnum) {
893
+ IconEnum["AddToCartDrop"] = "add_to_cart_drop";
894
+ IconEnum["DeliveryTruck"] = "delivery_truck";
895
+ IconEnum["Download"] = "download";
896
+ IconEnum["FullScreen"] = "full_screen";
897
+ IconEnum["Location"] = "location";
898
+ IconEnum["Logo"] = "logo";
899
+ IconEnum["MagicWand"] = "magic_wand";
900
+ IconEnum["NormalScreen"] = "normal_screen";
901
+ IconEnum["Quote"] = "quote";
902
+ IconEnum["Refresh"] = "refresh";
903
+ IconEnum["ThreeD"] = "three_d";
904
+ IconEnum["Truck"] = "truck";
905
+ IconEnum["TwoD"] = "two_d";
906
+ IconEnum["Warehouse"] = "warehouse";
907
+ })(IconEnum || (IconEnum = {}));
908
+
909
+ /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
910
+ const IconSvg = {
911
+ "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>",
912
+ "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>",
913
+ "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>",
914
+ "full_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"17.35 32.81 17.35 26.75 19.46 28.86 28.69 19.63 26.59 17.52 32.65 17.52 32.65 23.58 30.54 21.47 21.31 30.71 23.41 32.81 17.35 32.81\" fill=\"#484f60\"/></svg>",
915
+ "location": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,12.67A8.33,8.33,0,0,0,16.67,21c0,4.6,8.33,16.67,8.33,16.67S33.33,25.6,33.33,21A8.33,8.33,0,0,0,25,12.67Zm0,10.41A2.08,2.08,0,1,1,27.08,21,2.08,2.08,0,0,1,25,23.08Z\" fill=\"#484f60\"/></svg>",
916
+ "logo": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><rect x=\"10\" y=\"21.19\" width=\"2.04\" height=\"6.32\" fill=\"#484f60\"/><path d=\"M18.66,29.24a3.84,3.84,0,0,1-2.85-1.19,4.19,4.19,0,0,1,0-5.77,4,4,0,0,1,5.71,0,4.19,4.19,0,0,1,0,5.77A3.85,3.85,0,0,1,18.66,29.24Zm0-6.16a1.79,1.79,0,0,0-1.38.58,2.12,2.12,0,0,0-.57,1.51,2,2,0,0,0,.57,1.49,1.94,1.94,0,0,0,2.76,0,2.08,2.08,0,0,0,.56-1.5,2.15,2.15,0,0,0-.56-1.51A1.76,1.76,0,0,0,18.67,23.08Z\" fill=\"#484f60\"/><polygon points=\"31.05 29.18 27.33 25.02 27.33 29.14 25.29 29.14 25.29 21.15 26.57 21.15 30.29 25.33 30.29 21.19 32.33 21.19 32.33 29.18 31.05 29.18\" fill=\"#484f60\"/><polygon points=\"35.34 29.14 35.34 21.19 39.9 21.19 39.9 23.17 37.38 23.17 37.38 23.9 39.66 23.9 39.66 25.87 37.38 25.87 37.38 27.14 40 27.14 40 29.14 35.34 29.14\" fill=\"#484f60\"/></svg>",
917
+ "magic_wand": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><title>magic_wand</title><g style=\"isolation:isolate\"><path d=\"M20.45,10.71a.28.28,0,0,1,.49-.19l1.4,1.25a.93.93,0,0,0,.83.23L25,11.62a.29.29,0,0,1,.34.41l-.76,1.71a.93.93,0,0,0,0,.86l.93,1.62c.12.26,0,.45-.29.45l-1.86-.2a1,1,0,0,0-.81.32l-1.26,1.38a.28.28,0,0,1-.5-.14l-.39-1.83a1,1,0,0,0-.55-.67l-1.71-.77a.28.28,0,0,1,0-.52l1.62-.94a1,1,0,0,0,.48-.73Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M23.3,16.21a1,1,0,0,0-.8.31l-1,1.13a.29.29,0,0,1-.51-.14L20.66,16a1,1,0,0,0-.55-.68l-1.39-.62a.28.28,0,0,1,0-.52L20,13.45a1,1,0,0,0,.48-.73l.16-1.5a.29.29,0,0,1,.49-.2l1.13,1a.93.93,0,0,0,.83.23L24.58,12a.29.29,0,0,1,.34.41l-.62,1.38a.91.91,0,0,0,.05.86l.75,1.32a.29.29,0,0,1-.29.44Z\" fill=\"#484f60\"/></g><path d=\"M33.57,36.76a.53.53,0,0,1,0,.72l-2.37,2.18a.48.48,0,0,1-.7,0L18,25.34a.51.51,0,0,1,0-.71l2.36-2.19a.49.49,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M18.6,19.94a.51.51,0,0,1,0,.71L16.2,22.84a.48.48,0,0,1-.7,0l-2.76-3.13a.51.51,0,0,1,0-.71l2.37-2.19a.48.48,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M30.67,10.55a.29.29,0,0,1,.47.24v1.12a1,1,0,0,0,.4.77l.9.66a.29.29,0,0,1-.08.52l-1.07.35a1,1,0,0,0-.61.61l-.35,1.06a.28.28,0,0,1-.51.09l-.67-.91a1,1,0,0,0-.77-.4H27.27a.29.29,0,0,1-.25-.47l.66-.9a.93.93,0,0,0,.14-.85l-.35-1.07a.29.29,0,0,1,.38-.38l1.07.35a1,1,0,0,0,.85-.13Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M29.25,14.88a1,1,0,0,0-.77-.4h-.86a.29.29,0,0,1-.24-.47l.5-.69a.93.93,0,0,0,.14-.85l-.26-.82c-.07-.27.1-.44.37-.37l.82.26a1,1,0,0,0,.85-.13l.69-.51a.29.29,0,0,1,.47.25V12a.94.94,0,0,0,.39.76l.7.51a.29.29,0,0,1-.09.52l-.81.26a1,1,0,0,0-.62.61l-.26.82a.29.29,0,0,1-.52.08Z\" fill=\"#484f60\"/></g><path d=\"M37,15.81a.29.29,0,0,1,.32.43l-.13.26a.91.91,0,0,0,0,.85l.15.26A.29.29,0,0,1,37,18l-.29,0a.93.93,0,0,0-.81.27l-.2.21a.28.28,0,0,1-.5-.16l0-.29a1,1,0,0,0-.52-.69l-.27-.13a.28.28,0,0,1,0-.52l.26-.13a.93.93,0,0,0,.5-.71l0-.29a.29.29,0,0,1,.5-.17l.21.21a.92.92,0,0,0,.82.26Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M35.25,18a1,1,0,0,0-.52-.7l-.12-.05a.28.28,0,0,1,0-.52l.12-.06a1,1,0,0,0,.51-.7V15.8a.29.29,0,0,1,.5-.18l.09.1a.92.92,0,0,0,.82.26l.13,0a.29.29,0,0,1,.32.42L37,16.5a.91.91,0,0,0,0,.85l.07.12a.29.29,0,0,1-.31.43l-.13,0a1,1,0,0,0-.82.28l-.09.1a.28.28,0,0,1-.5-.16Z\" fill=\"#484f60\"/></g></g></svg>",
918
+ "normal_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"22.18 29.83 24.29 31.93 24.29 25.87 18.23 25.87 20.34 27.98 16.43 31.89 18.28 33.73 22.18 29.83\" fill=\"#484f60\"/><polygon points=\"33.57 18.44 31.73 16.6 27.82 20.51 25.71 18.4 25.71 24.46 31.77 24.46 29.66 22.35 33.57 18.44\" fill=\"#484f60\"/></svg>",
919
+ "quote": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M14.5,31.51V12a.5.5,0,0,1,.5-.5H35a.5.5,0,0,1,.5.5V38a.5.5,0,0,1-.5.5H21.27V40H35a2,2,0,0,0,2-2V12a2,2,0,0,0-2-2H15a2,2,0,0,0-2,2V31.51Z\" fill=\"#484f60\"/><path d=\"M21.27,40V33.56c0-1.78-.27-2.05-2.05-2.05H13Z\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"18.5\" width=\"6\" height=\"4\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"21.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"18.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"25.5\" width=\"6\" height=\"4\" transform=\"translate(59 55) rotate(-180)\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"28.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"25.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"14.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"34.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/></svg>",
920
+ "refresh": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"refresh.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=\"9.44\" inkscape:cx=\"13.990693\" inkscape:cy=\"13.961336\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /><g transform=\"matrix(0.05356365,0,0,0.05356365,11.44076,11.82465)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 414.32892,173.53368 397.86852,58.29997 c -1.3534,-9.447409 -12.96516,-13.373353 -19.75699,-6.581524 l -23.97472,23.97472 C 323.3074,57.095569 288.30682,47.308258 252.3168,47.308258 c -108.23157,0 -195.126154,84.711612 -197.8314,192.852392 -0.147446,5.91103 4.149441,10.98085 9.992183,11.82206 l 46.516107,6.64982 c 6.93462,1.01194 13.38577,-4.43269 13.28954,-11.68548 -0.9646,-71.37163 56.68057,-129.79595 128.03357,-129.79595 17.27835,0 34.3526,3.51232 50.13165,10.23043 l -23.11022,23.11022 c -6.74915,6.74915 -2.91866,18.3966 6.58152,19.75699 l 115.23371,16.4604 c 7.59269,1.14465 14.26423,-5.4586 13.17546,-13.17546 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.77603161\" /></g></g><path inkscape:connector-curvature=\"0\" d=\"m 35.105827,24.725982 -2.489742,-0.355606 c -0.321647,-0.04073 -0.711797,0.234897 -0.711797,0.671018 0,3.781814 -3.076753,6.858567 -6.858567,6.858567 -0.920628,0 -1.830946,-0.186303 -2.673013,-0.542533 l 1.198298,-1.198297 c 0.361507,-0.361507 0.156331,-0.985389 -0.352533,-1.058254 l -6.172336,-0.882302 c -0.405403,-0.05792 -0.764422,0.289765 -0.705726,0.705725 l 0.881637,6.172381 c 0.07258,0.506577 0.694003,0.71545 1.058254,0.352527 l 1.315225,-1.314599 c 1.643397,0.987012 3.516951,1.506391 5.450194,1.506391 5.769264,0 10.423029,-4.514936 10.595325,-10.27871 0.0091,-0.317237 -0.221012,-0.591248 -0.535219,-0.636308 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.04156709\" /></svg>",
921
+ "three_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.08,30.77a4.85,4.85,0,0,1-3-.8,4,4,0,0,0-2.49-.15,6.21,6.21,0,0,0,2.53,1.09,12.84,12.84,0,0,0,2.93-.14\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M14.27,19.68A4.71,4.71,0,0,0,11,20.78l2,.14c.31,0,1.2-.69,1.55-.81a3.88,3.88,0,0,1,1.65-.24l-1.94-.19\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.64,28.79a4.13,4.13,0,0,0-3.1-4c.89-.7,1.77-1.09,2.26-2.21a5.12,5.12,0,0,0,.35-1.9c-.13-3.24-2.64-3.73-5.29-4.15a4,4,0,0,1,3.44,3.7,4.61,4.61,0,0,1-.83,3.12,9.7,9.7,0,0,1-1.82,1.43,4.3,4.3,0,0,1,3.17,4.34,4.9,4.9,0,0,1-4.21,5c2.09-.34,4.37-.64,5.46-2.69a5,5,0,0,0,.57-2.58\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M28.44,18.88l.38-.07.48-.06.57,0h.75l.36,0,.35.05c-.2,0-.42-.08-1.57-.25l-.36-.05-.37,0h-.77l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38H27l.13,0h1.63l.21,0h.2l.2,0h.05l1.55-.24h0l-.34.05-.33,0H29.12l-.36,0-.33,0a1.15,1.15,0,0,1-.28-.06V19Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M40,24.34a9,9,0,0,0-3-7.1,11.06,11.06,0,0,0-4.47-1.86c4.38,1.13,6.23,5.31,6.13,9.54-.12,4.5-2.27,8.55-6.86,9.66,2.59-.63,5-1.41,6.52-3.78A12,12,0,0,0,40,24.34\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M35.38,16.71A7.32,7.32,0,0,1,36.74,18a7.82,7.82,0,0,1,1,1.73,10.32,10.32,0,0,1,.68,2.16,13.86,13.86,0,0,1,.23,2.59,15,15,0,0,1-.25,2.78,11.39,11.39,0,0,1-.68,2.31,9.34,9.34,0,0,1-1,1.85,8.23,8.23,0,0,1-1.28,1.4,7.76,7.76,0,0,1-1.7,1.07,9.07,9.07,0,0,1-2,.69,13.36,13.36,0,0,1-2.26.33,18.25,18.25,0,0,1-2.45,0c-.5,0-1-.08-1.39-.12l-1.17-.14c-.36,0-.68-.11-1-.16l-.77-.15V15.86c.34-.09.71-.18,1.09-.26s.81-.15,1.24-.21.88-.12,1.34-.17.95-.1,1.44-.13a20.57,20.57,0,0,1,2.33,0,12,12,0,0,1,2,.24,8.24,8.24,0,0,1,1.72.55A7.1,7.1,0,0,1,35.38,16.71ZM27.92,31.53a6.53,6.53,0,0,0,2.46-.32A4.81,4.81,0,0,0,32.32,30a5.82,5.82,0,0,0,1.27-2.18A10.11,10.11,0,0,0,34,24.67a8.65,8.65,0,0,0-.42-2.85,4.94,4.94,0,0,0-1.18-2,4.45,4.45,0,0,0-1.83-1.11,6.55,6.55,0,0,0-2.35-.28l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38a2.11,2.11,0,0,0,.29.06l.34,0,.37,0,.36,0h.07\" fill=\"#484f60\"/><path d=\"M14.57,16.47a5.49,5.49,0,0,1,2,.22,3.89,3.89,0,0,1,1.49.84A3.66,3.66,0,0,1,19,18.89a4.29,4.29,0,0,1,.33,1.7,5.29,5.29,0,0,1-.17,1.34,4.29,4.29,0,0,1-.5,1.16,4.17,4.17,0,0,1-.84.94,4.88,4.88,0,0,1-1.16.69v.05a3.7,3.7,0,0,1,1.22.5,4,4,0,0,1,1,.92,4.61,4.61,0,0,1,.69,1.3,5.24,5.24,0,0,1,.25,1.62,5.36,5.36,0,0,1-.42,2.15,4.44,4.44,0,0,1-1.2,1.64,4.84,4.84,0,0,1-1.86,1,6.78,6.78,0,0,1-2.39.23,7.69,7.69,0,0,1-2.36-.52,6.89,6.89,0,0,1-.9-.42,4.36,4.36,0,0,1-.69-.47l.62-2.9a4.12,4.12,0,0,0,.53.34,6.21,6.21,0,0,0,.73.36,5.69,5.69,0,0,0,.88.31,5.19,5.19,0,0,0,1,.15,3.11,3.11,0,0,0,1.1-.13,2,2,0,0,0,.8-.45,1.93,1.93,0,0,0,.49-.71,2.35,2.35,0,0,0,.17-.89A2.48,2.48,0,0,0,16,27.67a2.23,2.23,0,0,0-.63-.79,2.9,2.9,0,0,0-.89-.46,3.5,3.5,0,0,0-1-.15H12.2V23.44l1.23,0a3.44,3.44,0,0,0,.83-.11,2.83,2.83,0,0,0,.79-.36,2,2,0,0,0,.6-.62,2,2,0,0,0,.23-.94,1.8,1.8,0,0,0-.13-.71,1.36,1.36,0,0,0-.38-.56,1.58,1.58,0,0,0-.64-.35,2.79,2.79,0,0,0-.9-.1,4.07,4.07,0,0,0-.84.13c-.27.08-.53.18-.78.28a6.56,6.56,0,0,0-1.17.7L10.42,18a5,5,0,0,1,.72-.51,7.82,7.82,0,0,1,2.12-.82A8,8,0,0,1,14.57,16.47Z\" fill=\"#484f60\"/></svg>",
922
+ "truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"truck.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=\"9.44\" inkscape:cx=\"31.555563\" inkscape:cy=\"21.585628\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 119.467,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.964,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.824,0 34.133,15.309 34.133,34.133 0,18.824 -15.309,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 409.6,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.963,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.825,0 34.133,15.309 34.133,34.133 0,18.824 -15.308,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 510.643,289.784 -76.8,-119.467 c -1.57,-2.441 -4.275,-3.917 -7.177,-3.917 H 332.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 213.333 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 v -17.067 h -25.6 V 183.467 h 80.674 l 72.926,113.442 v 82.825 H 452.266 V 396.8 h 51.2 c 4.719,0 8.533,-3.814 8.533,-8.533 V 294.4 c 10e-4,-1.63 -0.468,-3.243 -1.356,-4.616 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 375.467,277.333 V 217.6 h 68.267 v -17.067 h -76.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 76.8 c 0,4.719 3.814,8.533 8.533,8.533 h 128 V 277.332 H 375.467 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 332.8,106.667 H 8.533 C 3.823,106.667 0,110.49 0,115.2 v 273.067 c 0,4.719 3.823,8.533 8.533,8.533 H 76.8 V 379.733 H 17.067 v -256 h 307.2 v 256 H 162.133 V 396.8 H 332.8 c 4.719,0 8.533,-3.814 8.533,-8.533 V 115.2 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"8.533\" y=\"345.60001\" width=\"51.200001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"179.2\" y=\"345.60001\" width=\"145.067\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"469.33301\" y=\"345.60001\" width=\"34.132999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"34.132999\" y=\"140.8\" width=\"298.66699\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"110.933\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"401.06699\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
923
+ "two_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M22.41,33.89H11V31c.87-.76,1.75-1.56,2.62-2.41S15.2,27,15.73,26.39A11.84,11.84,0,0,0,17.4,24a4.45,4.45,0,0,0,.5-2,2.52,2.52,0,0,0-.64-1.85,2.47,2.47,0,0,0-1.84-.65,4.57,4.57,0,0,0-1.89.45,8.17,8.17,0,0,0-1.84,1.14h-.31V17.2a10.26,10.26,0,0,1,2-.73,10.46,10.46,0,0,1,2.71-.36,5.79,5.79,0,0,1,4.16,1.37,5.15,5.15,0,0,1,1.44,3.9,7.37,7.37,0,0,1-.69,3.14A12.94,12.94,0,0,1,19,27.59c-.6.66-1.19,1.26-1.79,1.81s-1,.93-1.28,1.15h6.53Z\" fill=\"#484f60\"/><path d=\"M38.14,20.79a7.49,7.49,0,0,0-2.37-3,6.52,6.52,0,0,0-2.17-1,11.93,11.93,0,0,0-3.06-.35H25.26V33.89h5.13a13.25,13.25,0,0,0,3-.3,6.61,6.61,0,0,0,2.33-1.08,7.71,7.71,0,0,0,2.34-3A9.9,9.9,0,0,0,39,25.19,10.47,10.47,0,0,0,38.14,20.79Zm-3.49,7.27a4,4,0,0,1-1.51,1.88,3.77,3.77,0,0,1-1.22.54,10.07,10.07,0,0,1-2,.14H29V19.7H30a9.8,9.8,0,0,1,1.81.13,3.75,3.75,0,0,1,1.18.46,4.07,4.07,0,0,1,1.65,1.92,7.4,7.4,0,0,1,.52,2.94A7.92,7.92,0,0,1,34.65,28.06Z\" fill=\"#484f60\"/></svg>",
924
+ "warehouse": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"warehouse.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"6.675088\" inkscape:cx=\"9.6569985\" inkscape:cy=\"12.384637\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 507.785,146.242 260.318,1.175 c -2.603,-1.519 -5.803,-1.57 -8.439,-0.111 L 4.412,137.598 C 1.69,139.091 0,141.958 0,145.064 v 358.4 c 0,4.719 3.823,8.533 8.533,8.533 H 51.2 c 4.71,0 8.533,-3.814 8.533,-8.533 V 204.798 h 392.533 v 298.667 c 0,4.719 3.814,8.533 8.533,8.533 h 42.667 c 4.719,0 8.533,-3.814 8.533,-8.533 V 153.598 c 10e-4,-3.03 -1.603,-5.829 -4.214,-7.356 z m -12.852,348.689 h -25.6 V 196.264 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 H 51.2 c -4.71,0 -8.533,3.823 -8.533,8.533 v 298.667 h -25.6 V 150.099 L 255.872,18.344 494.933,158.487 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,392.531 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 324.267,392.531 h -102.4 c -4.71,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.823,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 230.4 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 281.6,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.823,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,290.131 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,298.664 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"255.998\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"221.864\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 298.667,119.464 h -85.333 c -4.71,0 -8.533,3.823 -8.533,8.533 v 34.133 c 0,4.71 3.823,8.533 8.533,8.533 h 85.333 c 4.719,0 8.533,-3.823 8.533,-8.533 v -34.133 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z m -8.534,34.134 h -68.267 v -17.067 h 68.267 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>"
925
+ };
926
+
927
+ let IconCacheService = class IconCacheService {
928
+ constructor(_sanitizer) {
929
+ this._sanitizer = _sanitizer;
930
+ this._iconCache = {};
931
+ this._allIcons = IconSvg;
932
+ this.setIconCache();
933
+ }
934
+ /**
935
+ * All the icons as a large JSON object, from the all-icons.json file.
936
+ * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
937
+ */
938
+ get iconCache() {
939
+ return this._iconCache;
940
+ }
941
+ getIcon(iconName) {
942
+ return this._iconCache[iconName.toLowerCase()];
943
+ }
944
+ setIconCache() {
945
+ for (const key in this._allIcons) {
946
+ if (this._allIcons.hasOwnProperty(key)) {
947
+ this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);
948
+ }
949
+ }
950
+ }
951
+ };
952
+ IconCacheService.ctorParameters = () => [
953
+ { type: DomSanitizer }
954
+ ];
955
+ IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
956
+ IconCacheService = __decorate([
957
+ Injectable({
958
+ providedIn: 'root'
959
+ })
960
+ ], IconCacheService);
961
+
889
962
  let ProductPageComponent = class ProductPageComponent {
890
963
  constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
891
964
  this._ione = _ione;
@@ -908,8 +981,8 @@ let ProductPageComponent = class ProductPageComponent {
908
981
  if (this.selections.nativeElement) {
909
982
  this.selections.nativeElement.forceRenderImage();
910
983
  }
911
- }), this.settingsService.settingsLoaded.subscribe((loaded) => {
912
- this.settingsLoaded = loaded;
984
+ }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._ione.controllerInitialized.subscribe((initialized) => {
985
+ this.settingsLoaded = initialized;
913
986
  }));
914
987
  }
915
988
  set sku(value) {
@@ -927,6 +1000,19 @@ let ProductPageComponent = class ProductPageComponent {
927
1000
  get sku() {
928
1001
  return this._sku;
929
1002
  }
1003
+ set settings(value) {
1004
+ if (value) {
1005
+ if (typeof value === 'string') {
1006
+ this._settings = JSON.parse(value);
1007
+ }
1008
+ else {
1009
+ this._settings = value;
1010
+ }
1011
+ }
1012
+ }
1013
+ get settings() {
1014
+ return this._settings;
1015
+ }
930
1016
  set fullScreen(value) {
931
1017
  this._fullScreen = value;
932
1018
  this.fullscreenAnimationEnd = true;
@@ -951,6 +1037,13 @@ let ProductPageComponent = class ProductPageComponent {
951
1037
  return this._currentView;
952
1038
  }
953
1039
  ngOnInit() {
1040
+ if (this._settings) {
1041
+ this.settingsService.settings = undefined;
1042
+ this.settingsService.createSettingsFromObject(this._settings);
1043
+ }
1044
+ else {
1045
+ this._settings = this.settingsService.settings;
1046
+ }
954
1047
  }
955
1048
  ngAfterViewInit() {
956
1049
  }
@@ -975,6 +1068,11 @@ let ProductPageComponent = class ProductPageComponent {
975
1068
  showFullScreen() {
976
1069
  this.fullScreen = !this.fullScreen;
977
1070
  }
1071
+ _handleSettingsLoaded(loaded) {
1072
+ if (loaded) {
1073
+ this._ione.initConnection();
1074
+ }
1075
+ }
978
1076
  _getArticle() {
979
1077
  return __awaiter(this, void 0, void 0, function* () {
980
1078
  if (this._initializedSub) {
@@ -984,18 +1082,20 @@ let ProductPageComponent = class ProductPageComponent {
984
1082
  if (init) {
985
1083
  this._ione.getFullArticle(this._sku).then((article) => {
986
1084
  this.article = article;
987
- this.configurable = this.article.goodType === 'B';
988
- if (this.configurable) {
989
- this.currentView = SelectorType.TwoD;
990
- }
991
- this.threeD = this.article.is3D;
992
- this.selectorType = this.article.selectorTypeCustomer;
993
- this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
994
- const stockAndDelivery = stockInfo;
995
- this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');
1085
+ if (this.article) {
1086
+ this.configurable = this.article.goodType === 'B';
1087
+ if (this.configurable) {
1088
+ this.currentView = SelectorType.TwoD;
1089
+ }
1090
+ this.threeD = this.article.is3D;
1091
+ this.selectorType = this.article.selectorTypeCustomer;
1092
+ this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
1093
+ const stockAndDelivery = stockInfo;
1094
+ this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');
1095
+ this._changeDetector.detectChanges();
1096
+ });
996
1097
  this._changeDetector.detectChanges();
997
- });
998
- this._changeDetector.detectChanges();
1098
+ }
999
1099
  });
1000
1100
  }
1001
1101
  }));
@@ -1022,10 +1122,13 @@ __decorate([
1022
1122
  __decorate([
1023
1123
  Input()
1024
1124
  ], ProductPageComponent.prototype, "sku", null);
1125
+ __decorate([
1126
+ Input()
1127
+ ], ProductPageComponent.prototype, "settings", null);
1025
1128
  ProductPageComponent = __decorate([
1026
1129
  Component({
1027
1130
  selector: 'app-product-page',
1028
- template: "<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]=\"settingsService.settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
1131
+ template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n ></threed-configurator>\r\n </ng-container>\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\" [class.show-selections]=\"configuring\" [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n",
1029
1132
  animations: [
1030
1133
  trigger('toggleFullScreen', [
1031
1134
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -1062,182 +1165,217 @@ ProductPageComponent = __decorate([
1062
1165
  })
1063
1166
  ], ProductPageComponent);
1064
1167
 
1065
- let ProductDocumentsComponent = class ProductDocumentsComponent {
1066
- constructor(iconCache) {
1067
- this.iconCache = iconCache;
1068
- this.icon = IconEnum;
1069
- this.showLabel = false;
1070
- this.documents = [];
1168
+ let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1169
+ constructor(_iconCache, _changeDetector) {
1170
+ this._iconCache = _iconCache;
1171
+ this._changeDetector = _changeDetector;
1172
+ this.type = SelectorType;
1173
+ this.icons = IconEnum;
1174
+ this.onIconClick = new EventEmitter();
1175
+ this.currentTypeChange = new EventEmitter();
1176
+ this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);
1177
+ this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);
1178
+ }
1179
+ ngOnInit() {
1180
+ }
1181
+ handleIconClick(type) {
1182
+ this.currentType = type;
1183
+ this.currentTypeChange.next(this.currentType);
1184
+ this.onIconClick.next(this.currentType);
1185
+ this._changeDetector.detectChanges();
1071
1186
  }
1072
1187
  };
1073
- ProductDocumentsComponent.ctorParameters = () => [
1074
- { type: IconCacheService }
1188
+ ProductSelectorTypeComponent.ctorParameters = () => [
1189
+ { type: IconCacheService },
1190
+ { type: ChangeDetectorRef }
1075
1191
  ];
1076
1192
  __decorate([
1077
1193
  Input()
1078
- ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1194
+ ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1079
1195
  __decorate([
1080
1196
  Input()
1081
- ], ProductDocumentsComponent.prototype, "documents", void 0);
1082
- ProductDocumentsComponent = __decorate([
1197
+ ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1198
+ __decorate([
1199
+ Input()
1200
+ ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1201
+ __decorate([
1202
+ Output()
1203
+ ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1204
+ __decorate([
1205
+ Output()
1206
+ ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1207
+ ProductSelectorTypeComponent = __decorate([
1083
1208
  Component({
1084
- selector: 'app-product-documents',
1085
- template: "<app-header *ngIf=\"showLabel\" [label]=\"'DOCUMENTS' | localize\" [amount]=\"documents?.length\"></app-header>\n<div *ngIf=\"documents && documents.length > 0\">\n <co-files-upload [documents]=\"documents\" [canAdd]=\"false\" readonly></co-files-upload>\n</div>\n",
1086
- styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:0!important;border:none!important;background:url(../../../assets/icons/download.svg) left 6px center/36px auto no-repeat!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}"]
1209
+ selector: 'app-product-selector-type',
1210
+ template: "<div *ngIf=\"show2D || show3D\" class=\"show-in\" [textContent]=\"'SHOW_IN' | localize\"></div>\n<co-icon *ngIf=\"show2D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n></co-icon>\n<co-icon *ngIf=\"show3D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.ThreeD\"\n [iconData]=\"threeDIcon\"\n (click)=\"handleIconClick(type.ThreeD)\"\n></co-icon>\n",
1211
+ styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:0 0;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}"]
1087
1212
  })
1088
- ], ProductDocumentsComponent);
1213
+ ], ProductSelectorTypeComponent);
1089
1214
 
1090
- let ProductRelatedComponent = class ProductRelatedComponent {
1091
- constructor(_iOne, _appEventService) {
1092
- this._iOne = _iOne;
1215
+ let ImageCarouselComponent = class ImageCarouselComponent {
1216
+ constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
1217
+ this._ione = _ione;
1093
1218
  this._appEventService = _appEventService;
1094
- this.isSmallModus = true;
1095
- this._articles = [];
1096
- }
1097
- set articles(value) {
1098
- if (value) {
1099
- if (this.refType && this.refType !== undefined) {
1100
- if (value.length > 0) {
1101
- value.forEach((x) => {
1102
- if (x.refType === this.refType) {
1103
- this._articles.push(x);
1104
- }
1105
- });
1106
- }
1219
+ this._changeDetector = _changeDetector;
1220
+ this._domSanitizer = _domSanitizer;
1221
+ this.iconCache = iconCache;
1222
+ this.icons = IconEnum;
1223
+ this.showLoader = false;
1224
+ this.showRefresh = false;
1225
+ this.resizing = false;
1226
+ this._currentIndex = 0;
1227
+ this._images = [];
1228
+ this._subs = [];
1229
+ this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
1230
+ this.showLoader = true;
1231
+ }), this._appEventService.onDraftRenderImageReceived.subscribe((url) => {
1232
+ if (this._images[0] instanceof CoDocument) {
1233
+ this._images.unshift(url);
1107
1234
  }
1108
1235
  else {
1109
- this._articles = value;
1236
+ this._images[0] = url;
1110
1237
  }
1238
+ this.showLoader = false;
1239
+ }));
1240
+ }
1241
+ set images(value) {
1242
+ if (value && value.length > 0) {
1243
+ this._images = value;
1111
1244
  this._loadImages();
1245
+ this._changeDetector.detectChanges();
1112
1246
  }
1113
1247
  }
1114
- get articles() {
1115
- return this._articles;
1248
+ handleWindowResize() {
1249
+ this.resizing = true;
1250
+ this._scrollCarouselToIndex();
1251
+ clearTimeout(this._resizeTimer);
1252
+ this._resizeTimer = setTimeout(() => {
1253
+ this.resizing = false;
1254
+ }, 200);
1116
1255
  }
1117
- handleContentClick(article) {
1118
- this._appEventService.onAlternativeClick.next(article);
1256
+ gotoNextSlide() {
1257
+ this.currentIndex++;
1119
1258
  }
1120
- _loadImages() {
1121
- this._articles.forEach((a) => {
1122
- if (!a.image.documentBody) {
1123
- this._iOne.getDocumentContent(a.image.documentId).then((content) => {
1124
- if (content) {
1125
- a.image.documentBody = content.documentContent;
1126
- }
1127
- });
1128
- }
1129
- });
1259
+ gotoPrevSlide() {
1260
+ this.currentIndex--;
1261
+ }
1262
+ isCurrentIndex(index) {
1263
+ return this.currentIndex === index;
1264
+ }
1265
+ get currentIndex() {
1266
+ return this._currentIndex;
1267
+ }
1268
+ set currentIndex(value) {
1269
+ this._currentIndex = value;
1270
+ this._scrollCarouselToIndex();
1271
+ }
1272
+ get images() {
1273
+ return this._images;
1130
1274
  }
1131
- };
1132
- ProductRelatedComponent.ctorParameters = () => [
1133
- { type: ProductConnectorService },
1134
- { type: ProductEventService }
1135
- ];
1136
- __decorate([
1137
- Input()
1138
- ], ProductRelatedComponent.prototype, "refType", void 0);
1139
- __decorate([
1140
- Input()
1141
- ], ProductRelatedComponent.prototype, "label", void 0);
1142
- __decorate([
1143
- Input()
1144
- ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1145
- __decorate([
1146
- Input()
1147
- ], ProductRelatedComponent.prototype, "articles", null);
1148
- ProductRelatedComponent = __decorate([
1149
- Component({
1150
- selector: 'app-product-related',
1151
- template: "<div *ngIf=\"articles && articles.length > 0\">\n <app-header [label]=\"label\" [amount]=\"articles?.length\" *ngIf=\"label\"></app-header>\n <co-scroll-container>\n <div class=\"article-wrapper\" *ngFor=\"let article of articles\">\n <co-article-tile\n [imageData]=\"article.image.documentBodyAsDataUri\"\n [description]=\"article.description\"\n [price]=\"article.price\"\n [level]=\"article.stockStatus\"\n [isSmallModus]=\"isSmallModus\"\n [hasConfigureButton]=\"article.goodType === 'B'\"\n (contentClick)=\"handleContentClick(article)\"\n ></co-article-tile>\n </div>\n </co-scroll-container>\n</div>\n",
1152
- styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:0!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:0!important;background:0 0!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}"]
1153
- })
1154
- ], ProductRelatedComponent);
1155
-
1156
- let HeaderComponent = class HeaderComponent {
1157
- constructor() { }
1158
1275
  ngOnInit() {
1159
1276
  }
1160
- };
1161
- __decorate([
1277
+ ngOnDestroy() {
1278
+ this.carousel = undefined;
1279
+ this._subs.forEach(s => s.unsubscribe());
1280
+ }
1281
+ handleThumbClick(index) {
1282
+ this.currentIndex = index;
1283
+ }
1284
+ onForceRenderImage() {
1285
+ this._appEventService.onForceRenderImage.next();
1286
+ }
1287
+ getImageSrc(image) {
1288
+ let source = '';
1289
+ if (image instanceof CoDocument) {
1290
+ if (image.filePath) {
1291
+ source = image.filePath;
1292
+ }
1293
+ else {
1294
+ source = image.documentBodyAsDataUri;
1295
+ }
1296
+ }
1297
+ else if (image.detail !== undefined) {
1298
+ source = image.detail;
1299
+ }
1300
+ return this._domSanitizer.bypassSecurityTrustUrl(source);
1301
+ }
1302
+ _loadImages() {
1303
+ if (this._images) {
1304
+ this._images.forEach((i) => {
1305
+ if (!i.documentBody && !i.filePath) {
1306
+ this._ione.getDocumentContent(i.documentId, false).then((content) => {
1307
+ if (content) {
1308
+ i.documentBody = content.documentContent;
1309
+ }
1310
+ });
1311
+ }
1312
+ });
1313
+ }
1314
+ }
1315
+ _scrollCarouselToIndex() {
1316
+ if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
1317
+ const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
1318
+ if (this.carousel && this.carousel.nativeElement) {
1319
+ this.carousel.nativeElement.scrollLeft = movePx;
1320
+ // this.carousel.nativeElement.scrollTo({
1321
+ // left: movePx,
1322
+ // behavior: 'smooth'
1323
+ // });
1324
+ }
1325
+ }
1326
+ }
1327
+ };
1328
+ ImageCarouselComponent.ctorParameters = () => [
1329
+ { type: ProductConnectorService },
1330
+ { type: ProductEventService },
1331
+ { type: ChangeDetectorRef },
1332
+ { type: DomSanitizer },
1333
+ { type: IconCacheService }
1334
+ ];
1335
+ __decorate([
1336
+ ViewChild('carousel', { read: ElementRef })
1337
+ ], ImageCarouselComponent.prototype, "carousel", void 0);
1338
+ __decorate([
1162
1339
  Input()
1163
- ], HeaderComponent.prototype, "label", void 0);
1340
+ ], ImageCarouselComponent.prototype, "showRefresh", void 0);
1164
1341
  __decorate([
1165
1342
  Input()
1166
- ], HeaderComponent.prototype, "amount", void 0);
1167
- HeaderComponent = __decorate([
1343
+ ], ImageCarouselComponent.prototype, "images", null);
1344
+ __decorate([
1345
+ HostListener('window:resize')
1346
+ ], ImageCarouselComponent.prototype, "handleWindowResize", null);
1347
+ __decorate([
1348
+ HostListener('swipeleft')
1349
+ ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
1350
+ __decorate([
1351
+ HostListener('swiperight')
1352
+ ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
1353
+ __decorate([
1354
+ HostBinding('class.resizing')
1355
+ ], ImageCarouselComponent.prototype, "resizing", void 0);
1356
+ ImageCarouselComponent = __decorate([
1168
1357
  Component({
1169
- selector: 'app-header',
1170
- template: "<ng-container *ngIf=\"label\">\n <div class=\"header-wrapper\">\n <h3 [textContent]=\"label\"></h3>\n <span *ngIf=\"amount\" class=\"amount\" [textContent]=\"'(' + amount + ')'\"></span>\n </div>\n</ng-container>\n",
1171
- styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
1358
+ selector: 'app-image-carousel',
1359
+ template: "<div id=\"product_page_carousel\">\n <div id=\"product_page_carousel_items\">\n <co-loader [isShown]=\"showLoader\"></co-loader>\n <div #carousel class=\"inner-carousel\">\n <!-- This has been taken out of the for loop to prevent flashing images when updating. -->\n <div *ngIf=\"images[0]\" class=\"carousel-item\" [id]=\"'slide-0'\" [class.active]=\"isCurrentIndex(0)\">\n <img [src]=\"getImageSrc(images[0])\">\n </div>\n <div *ngFor=\"let image of images.slice(1); let index = index\" class=\"carousel-item\" [id]=\"'slide-' + (index + 1)\" [class.active]=\"isCurrentIndex((index + 1))\">\n <img [src]=\"getImageSrc(image)\">\n </div>\n <div class=\"carousel-scroller-layer\" *ngIf=\"images && images.length > 1\">\n <div class=\"carousel-item-scroller prev\" (click)=\"gotoPrevSlide()\" *ngIf=\"currentIndex > 0\"></div>\n <div class=\"carousel-item-scroller next\" (click)=\"gotoNextSlide()\" *ngIf=\"currentIndex < images.length - 1\"></div>\n </div>\n </div>\n <co-icon class=\"selector-type-icon refresh-button\" [iconData]=\"iconCache.getIcon(icons.Refresh)\" (click)=\"onForceRenderImage()\" [class.loading]=\"showLoader\" *ngIf=\"showRefresh\"></co-icon>\n </div>\n\n <div id=\"product_page_carousel_thumbs\">\n <co-scroll-container class=\"scroll-container\" *ngIf=\"images && images.length > 1\">\n <div *ngFor=\"let image of images; let index = index\" class=\"carousel-thumb\" [class.active]=\"index === currentIndex\">\n <img [src]=\"getImageSrc(image)\" (click)=\"handleThumbClick(index)\"/>\n </div>\n </co-scroll-container>\n </div>\n</div>\n",
1360
+ styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:.2s;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width:650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}"]
1172
1361
  })
1173
- ], HeaderComponent);
1362
+ ], ImageCarouselComponent);
1174
1363
 
1175
- var TabType;
1176
- (function (TabType) {
1177
- TabType["Additional"] = "additional";
1178
- TabType["Properties"] = "properties";
1179
- })(TabType || (TabType = {}));
1180
- let ProductInfoComponent = class ProductInfoComponent {
1181
- constructor() {
1182
- this.tabType = TabType;
1183
- this.currentTab = TabType.Additional;
1184
- }
1364
+ let ProductDescriptionComponent = class ProductDescriptionComponent {
1365
+ constructor() { }
1185
1366
  ngOnInit() {
1186
1367
  }
1187
- switchTab(tab) {
1188
- this.currentTab = tab;
1189
- }
1190
1368
  };
1191
1369
  __decorate([
1192
1370
  Input()
1193
- ], ProductInfoComponent.prototype, "article", void 0);
1194
- ProductInfoComponent = __decorate([
1371
+ ], ProductDescriptionComponent.prototype, "article", void 0);
1372
+ ProductDescriptionComponent = __decorate([
1195
1373
  Component({
1196
- selector: 'app-product-info',
1197
- template: "<div>\n <div class=\"info-wrapper\">\n <div class=\"info-navigation\">\n <span [textContent]=\"'ADDITIONAL_DATA' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Additional\" (mouseup)=\"switchTab(tabType.Additional)\"></span>\n <span [textContent]=\"'PROPERTIES' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Properties\" (mouseup)=\"switchTab(tabType.Properties)\"></span>\n </div>\n <ng-container [ngSwitch]=\"currentTab\" class=\"content\">\n <div *ngSwitchCase=\"tabType.Additional\" @showContent>\n <app-product-additional-info\n [article]=\"article\"\n ></app-product-additional-info>\n </div>\n <div *ngSwitchCase=\"tabType.Properties\" @showContent>\n <app-product-properties [article]=\"article\"></app-product-properties>\n </div>\n </ng-container>\n </div>\n</div>\n",
1198
- animations: [
1199
- trigger('showContent', [
1200
- state('void', style({ 'opacity': '0' })),
1201
- state('*', style({ 'opacity': '1' })),
1202
- transition('void => *', animate('200ms 100ms ease-in-out')),
1203
- ])
1204
- ],
1205
- styles: [".info-navigation{margin:30px 0}.info-navigation .navigator:not(:last-child){margin-right:30px}.navigator{font-size:15px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigator.selected{color:#2b60a7}"]
1206
- })
1207
- ], ProductInfoComponent);
1208
-
1209
- let ProductModuleService = class ProductModuleService {
1210
- constructor(_iOneConnectorService) {
1211
- this._iOneConnectorService = _iOneConnectorService;
1212
- this._superArticles = new Map();
1213
- }
1214
- getArticle(id) {
1215
- return __awaiter(this, void 0, void 0, function* () {
1216
- return yield this._getArticle(id);
1217
- });
1218
- }
1219
- _getArticle(id) {
1220
- return __awaiter(this, void 0, void 0, function* () {
1221
- if (this._superArticles.has(id)) {
1222
- return this._superArticles.get(id);
1223
- }
1224
- else {
1225
- const mainArticle = yield this._iOneConnectorService.getSuperArticle(id);
1226
- this._superArticles.set(id, mainArticle);
1227
- return mainArticle;
1228
- }
1229
- });
1230
- }
1231
- };
1232
- ProductModuleService.ctorParameters = () => [
1233
- { type: ProductConnectorService }
1234
- ];
1235
- ProductModuleService.ɵprov = ɵɵdefineInjectable({ factory: function ProductModuleService_Factory() { return new ProductModuleService(ɵɵinject(ProductConnectorService)); }, token: ProductModuleService, providedIn: "root" });
1236
- ProductModuleService = __decorate([
1237
- Injectable({
1238
- providedIn: 'root'
1374
+ selector: 'app-product-description',
1375
+ template: "<div class=\"pd-title-wrapper\">\n <span class=\"pd-description\" [textContent]=\"article?.descriptionRetail\" *ngIf=\"article?.descriptionRetail\"></span>\n <span class=\"pd-sku\" [textContent]=\"article?.articleNr\" *ngIf=\"article?.articleNr\"></span>\n</div>\n",
1376
+ styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width:650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}"]
1239
1377
  })
1240
- ], ProductModuleService);
1378
+ ], ProductDescriptionComponent);
1241
1379
 
1242
1380
  class BitUtils {
1243
1381
  static IsShortDescription(bit) {
@@ -1257,20 +1395,15 @@ class BitUtils {
1257
1395
  }
1258
1396
  }
1259
1397
 
1260
- let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1261
- constructor(_sanitizer, _moduleService, _changeDetector) {
1262
- this._sanitizer = _sanitizer;
1263
- this._moduleService = _moduleService;
1264
- this._changeDetector = _changeDetector;
1265
- this.showLabel = false;
1266
- this.textParts = [];
1398
+ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1399
+ constructor(_appEventService) {
1400
+ this._appEventService = _appEventService;
1267
1401
  }
1268
1402
  set article(value) {
1269
- if (value) {
1270
- this._article = value;
1271
- this._buildInfo().then(() => {
1272
- this._changeDetector.detectChanges();
1273
- });
1403
+ this._article = value;
1404
+ if (this._article) {
1405
+ this.description = this.article.additionalDescription;
1406
+ this._prepareDescription();
1274
1407
  }
1275
1408
  }
1276
1409
  get article() {
@@ -1278,266 +1411,47 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1278
1411
  }
1279
1412
  ngOnInit() {
1280
1413
  }
1281
- _getTextsSuperArticle() {
1282
- return new Promise((resolve, reject) => {
1283
- const texts = [];
1284
- if (this.article.superArticleNr) {
1285
- this._moduleService.getArticle(this.article.superArticleNr).then((mainArticle) => {
1286
- mainArticle.texts.forEach((txt) => {
1287
- if (BitUtils.IsFullDescription(txt.publication)) {
1288
- const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1289
- texts.push(safeTxt);
1290
- }
1291
- });
1292
- resolve(texts);
1293
- }).catch(() => {
1294
- resolve([]);
1295
- });
1296
- }
1297
- else {
1298
- resolve(texts);
1299
- }
1300
- });
1301
- }
1302
- _prepareArticleTexts() {
1303
- return __awaiter(this, void 0, void 0, function* () {
1304
- const texts = yield this._getTextsSuperArticle();
1305
- if (texts.length > 0) {
1306
- this.textParts.push(...texts);
1307
- }
1308
- if (this.article.texts) {
1309
- this.article.texts.forEach((txt) => {
1310
- if (BitUtils.IsFullDescription(txt.publication)) {
1311
- const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1312
- this.textParts.push(safeTxt);
1313
- }
1314
- });
1315
- }
1316
- });
1414
+ onReadMore() {
1415
+ this._appEventService.onUpdateProductInfoTab.next(0);
1317
1416
  }
1318
- _buildInfo() {
1319
- return __awaiter(this, void 0, void 0, function* () {
1320
- this.textParts.length = 0;
1321
- yield this._prepareArticleTexts();
1322
- if (this.textParts.length === 0) {
1323
- if (this.article.additionalDescription) {
1324
- this.textParts.push(this.article.additionalDescription);
1325
- }
1326
- else if (this.article.description) {
1327
- this.textParts.push(this.article.description);
1417
+ _prepareDescription() {
1418
+ this.description = '';
1419
+ if (this.article.texts && this.article.texts.length > 0) {
1420
+ this.article.texts.forEach((txt) => {
1421
+ if (BitUtils.IsShortDescription(txt.publication)) {
1422
+ this.description += txt.text;
1328
1423
  }
1424
+ });
1425
+ this.description = this.description.replace(/<[^>]*>?/gm, '');
1426
+ if (this.description.length > 250) {
1427
+ this.description = this.description.substr(0, 250) + ' [..]';
1329
1428
  }
1330
- return;
1331
- });
1429
+ }
1332
1430
  }
1333
1431
  };
1334
- ProductAdditionalInfoComponent.ctorParameters = () => [
1335
- { type: DomSanitizer },
1336
- { type: ProductModuleService },
1337
- { type: ChangeDetectorRef }
1432
+ ProductAdditionalDescriptionComponent.ctorParameters = () => [
1433
+ { type: ProductEventService }
1338
1434
  ];
1339
1435
  __decorate([
1340
1436
  Input()
1341
- ], ProductAdditionalInfoComponent.prototype, "article", null);
1342
- __decorate([
1343
- Input()
1344
- ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
1345
- ProductAdditionalInfoComponent = __decorate([
1437
+ ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1438
+ ProductAdditionalDescriptionComponent = __decorate([
1346
1439
  Component({
1347
- selector: 'app-product-additional-info',
1348
- template: "<h3 *ngIf=\"showLabel\" [textContent]=\"'ADDITIONAL_DATA' | localize\"></h3>\n<ng-container *ngIf=\"textParts && textParts.length > 0\">\n <div class=\"additional-info-parts\" *ngFor=\"let text of textParts\" [innerHTML]=\"text\"></div>\n</ng-container>\n",
1349
- styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:iOneMontserrat}:host .additional-info-parts>:first-child{margin-top:0}:host .additional-info-parts>:last-child{margin-bottom:0}"]
1440
+ selector: 'app-product-additional-description',
1441
+ template: "<ng-container *ngIf=\"description !== ''\">\n <div class=\"pd-additional-description\">\n <p [innerHTML]=\"description\"></p>\n <button class=\"pd-read-more-btn\" [textContent]=\"'READ_MORE' | localize\" (click)=\"onReadMore()\"></button>\n </div>\n</ng-container>\n",
1442
+ styles: [":host{display:block;padding-top:0!important}:host :focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:0 0;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width:650px){:host .pd-additional-description{font-size:12px}}"]
1350
1443
  })
1351
- ], ProductAdditionalInfoComponent);
1444
+ ], ProductAdditionalDescriptionComponent);
1352
1445
 
1353
- const propertyMap = new Map([
1354
- ['articleNr', 'ARTICLE_NUMBER'],
1355
- ['catExtra', 'CATEGORY'],
1356
- ['catType', 'CATEGORY_TYPE'],
1357
- ['description', 'DESCRIPTION'],
1358
- ['material', 'MATERIAL'],
1359
- ['title', 'TITLE'],
1360
- ['turnOverGroup', 'TURNOVERGROUP'],
1361
- ['height', 'HEIGHT'],
1362
- ['width', 'WIDTH']
1363
- ]);
1364
- let ProductPropertiesComponent = class ProductPropertiesComponent {
1365
- constructor() {
1366
- this.showLabel = false;
1367
- this.properties = [];
1446
+ let ProductPriceComponent = class ProductPriceComponent {
1447
+ constructor(_changeDetector) {
1448
+ this._changeDetector = _changeDetector;
1449
+ this.showFromPrice = false;
1450
+ this._configurable = false;
1368
1451
  }
1369
- set article(value) {
1370
- this._article = value;
1371
- this._prepareProperties();
1372
- }
1373
- get article() {
1374
- return this._article;
1375
- }
1376
- ngOnInit() {
1377
- }
1378
- _prepareProperties() {
1379
- this.properties.length = 0;
1380
- if (!this._article) {
1381
- return;
1382
- }
1383
- propertyMap.forEach((value, key) => {
1384
- if (this.article.hasOwnProperty(key)) {
1385
- this.properties.push({ key: value, value: this.article[key] });
1386
- }
1387
- });
1388
- }
1389
- };
1390
- __decorate([
1391
- Input()
1392
- ], ProductPropertiesComponent.prototype, "article", null);
1393
- __decorate([
1394
- Input()
1395
- ], ProductPropertiesComponent.prototype, "showLabel", void 0);
1396
- ProductPropertiesComponent = __decorate([
1397
- Component({
1398
- selector: 'app-product-properties',
1399
- template: "<div class=\"article-properties-wrapper\">\n <h3 *ngIf=\"showLabel\" [textContent]=\"'PROPERTIES' | localize\"></h3>\n <ng-container *ngFor=\"let property of properties\">\n <div class=\"article-property\">\n <div class=\"article-property-key\" [textContent]=\"property.key | localize\"></div>\n <div class=\"article-property-value\" [textContent]=\"property.value\"></div>\n </div>\n </ng-container>\n</div>\n",
1400
- styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width:450px){.article-property-key{flex-basis:130px}}"]
1401
- })
1402
- ], ProductPropertiesComponent);
1403
-
1404
- let LocalizePipe =
1405
- // A pipe for localizing string values in view templates.
1406
- class LocalizePipe {
1407
- constructor(_dictionaryService) {
1408
- this._dictionaryService = _dictionaryService;
1409
- }
1410
- transform(value, upperCaseFirst = true, replace = []) {
1411
- if (!value) {
1412
- return '';
1413
- }
1414
- replace = replace ? replace : [];
1415
- if (!Array.isArray(replace)) {
1416
- replace = [replace];
1417
- }
1418
- return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1419
- }
1420
- };
1421
- LocalizePipe.ctorParameters = () => [
1422
- { type: DictionaryService }
1423
- ];
1424
- LocalizePipe = __decorate([
1425
- Pipe({
1426
- name: 'localize'
1427
- })
1428
- // A pipe for localizing string values in view templates.
1429
- ], LocalizePipe);
1430
-
1431
- let ProductDeliveryComponent = class ProductDeliveryComponent {
1432
- constructor(_localizePipe, _iOne, _iconCache) {
1433
- this._localizePipe = _localizePipe;
1434
- this._iOne = _iOne;
1435
- this._iconCache = _iconCache;
1436
- this.icon = IconEnum;
1437
- this.iconData = this._iconCache.getIcon(this.icon.Truck);
1438
- }
1439
- set stockAndDelivery(value) {
1440
- if (value) {
1441
- this.deliveryDescription = value.deliveryDescription;
1442
- if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {
1443
- this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');
1444
- }
1445
- }
1446
- }
1447
- ngOnInit() {
1448
- }
1449
- };
1450
- ProductDeliveryComponent.ctorParameters = () => [
1451
- { type: LocalizePipe },
1452
- { type: ProductConnectorService },
1453
- { type: IconCacheService }
1454
- ];
1455
- __decorate([
1456
- Input()
1457
- ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1458
- ProductDeliveryComponent = __decorate([
1459
- Component({
1460
- selector: 'app-product-delivery',
1461
- template: "<!--<app-header [label]=\"'DELIVERY_TIME_PERIOD' | localize\"></app-header>-->\n<div class=\"product-delivery-wrapper\">\n <co-icon class=\"delivery-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-delivery-fields\">\n <div class=\"pp-default-label\" [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\"></div>\n <div class=\"pp-default-description\" [textContent]=\"deliveryDescription | date:'dd MMMM yyyy'\"></div>\n </div>\n</div>\n",
1462
- providers: [LocalizePipe],
1463
- styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width:400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}"]
1464
- })
1465
- ], ProductDeliveryComponent);
1466
-
1467
- let ProductStockComponent = class ProductStockComponent {
1468
- constructor(_iOne, _iconCache) {
1469
- this._iOne = _iOne;
1470
- this._iconCache = _iconCache;
1471
- this.icon = IconEnum;
1472
- this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1473
- }
1474
- set stockAndDelivery(value) {
1475
- if (value) {
1476
- this.numberInStock = value.stock;
1477
- }
1478
- }
1479
- ngOnInit() {
1480
- }
1481
- };
1482
- ProductStockComponent.ctorParameters = () => [
1483
- { type: ProductConnectorService },
1484
- { type: IconCacheService }
1485
- ];
1486
- __decorate([
1487
- Input()
1488
- ], ProductStockComponent.prototype, "stockAndDelivery", null);
1489
- ProductStockComponent = __decorate([
1490
- Component({
1491
- selector: 'app-product-stock',
1492
- template: "<!--<app-header [label]=\"'STOCK' | localize\"></app-header>-->\n<!--<co-level-indicator [model]=\"'medium'\"></co-level-indicator>-->\n<div class=\"product-stock-wrapper\">\n <co-icon class=\"stock-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-stock-fields\">\n <div class=\"pp-default-label in-stock\" [textContent]=\"'PRODUCT_IN_STOCK' | localize\" *ngIf=\"numberInStock > 0\"></div>\n <div class=\"pp-default-label not-in-stock\" [textContent]=\"'PRODUCT_NOT_IN_STOCK' | localize\" *ngIf=\"!(numberInStock > 0)\"></div>\n </div>\n</div>\n",
1493
- styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74b77f;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width:400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}"]
1494
- })
1495
- ], ProductStockComponent);
1496
-
1497
- let ProductSymbolsComponent = class ProductSymbolsComponent {
1498
- constructor() {
1499
- this.symbolStrings = [];
1500
- }
1501
- set symbols(value) {
1502
- this._symbols = value;
1503
- if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {
1504
- this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');
1505
- }
1506
- if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {
1507
- for (let i = 0; i < this._symbols['symbolString'].length; i++) {
1508
- this.symbolStrings.push(this._symbols['symbolString'][i]);
1509
- }
1510
- }
1511
- }
1512
- get symbols() {
1513
- return this._symbols;
1514
- }
1515
- ngOnInit() {
1516
- }
1517
- };
1518
- __decorate([
1519
- Input()
1520
- ], ProductSymbolsComponent.prototype, "symbols", null);
1521
- __decorate([
1522
- HostBinding('class')
1523
- ], ProductSymbolsComponent.prototype, "_className", void 0);
1524
- ProductSymbolsComponent = __decorate([
1525
- Component({
1526
- selector: 'app-product-symbols',
1527
- template: "<div *ngIf=\"symbols && symbols.length > 0\">\n <app-header [label]=\"'SYMBOLS' | localize\" [amount]=\"symbols?.length\"></app-header>\n <co-scroll-container>\n <co-tile small noImagePlaceholder *ngFor=\"let symbol of symbolStrings\">\n <ng-container tile-over-image>\n <div class=\"symbol\" [textContent]=\"symbol\"></div>\n </ng-container>\n <ng-container tile-extra-bottom-content>\n <div class=\"symbol-name\" [textContent]=\"'Wat moet hier?'\"></div>\n </ng-container>\n </co-tile>\n </co-scroll-container>\n</div>\n",
1528
- styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
1529
- })
1530
- ], ProductSymbolsComponent);
1531
-
1532
- let ProductPriceComponent = class ProductPriceComponent {
1533
- constructor(_changeDetector) {
1534
- this._changeDetector = _changeDetector;
1535
- this.showFromPrice = false;
1536
- this._configurable = false;
1537
- }
1538
- set pricing(value) {
1539
- this._pricing = value;
1540
- this._setPrices();
1452
+ set pricing(value) {
1453
+ this._pricing = value;
1454
+ this._setPrices();
1541
1455
  }
1542
1456
  get pricing() {
1543
1457
  return this._pricing;
@@ -1637,7 +1551,7 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
1637
1551
  configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';
1638
1552
  configuratorStatistics.webHost = window.location.host;
1639
1553
  configuratorStatistics.bundleHost = window.location.host;
1640
- return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, undefined, configuratorStatistics);
1554
+ return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);
1641
1555
  });
1642
1556
  }
1643
1557
  };
@@ -1683,348 +1597,585 @@ ProductAddtocartComponent = __decorate([
1683
1597
  })
1684
1598
  ], ProductAddtocartComponent);
1685
1599
 
1686
- let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1687
- constructor(_iconCache, _changeDetector) {
1688
- this._iconCache = _iconCache;
1689
- this._changeDetector = _changeDetector;
1690
- this.type = SelectorType;
1691
- this.icons = IconEnum;
1692
- this.onIconClick = new EventEmitter();
1693
- this.currentTypeChange = new EventEmitter();
1694
- this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);
1695
- this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);
1600
+ let ProductRelatedComponent = class ProductRelatedComponent {
1601
+ constructor(_iOne, _appEventService) {
1602
+ this._iOne = _iOne;
1603
+ this._appEventService = _appEventService;
1604
+ this.isSmallModus = true;
1605
+ this._articles = [];
1696
1606
  }
1697
- ngOnInit() {
1607
+ set articles(value) {
1608
+ if (value) {
1609
+ if (this.refType && this.refType !== undefined) {
1610
+ if (value.length > 0) {
1611
+ value.forEach((x) => {
1612
+ if (x.refType === this.refType) {
1613
+ this._articles.push(x);
1614
+ }
1615
+ });
1616
+ }
1617
+ }
1618
+ else {
1619
+ this._articles = value;
1620
+ }
1621
+ this._loadImages();
1622
+ }
1698
1623
  }
1699
- handleIconClick(type) {
1700
- this.currentType = type;
1701
- this.currentTypeChange.next(this.currentType);
1702
- this.onIconClick.next(this.currentType);
1703
- this._changeDetector.detectChanges();
1624
+ get articles() {
1625
+ return this._articles;
1626
+ }
1627
+ handleContentClick(article) {
1628
+ this._appEventService.onAlternativeClick.next(article);
1629
+ }
1630
+ _loadImages() {
1631
+ this._articles.forEach((a) => {
1632
+ if (!a.image.documentBody) {
1633
+ this._iOne.getDocumentContent(a.image.documentId).then((content) => {
1634
+ if (content) {
1635
+ a.image.documentBody = content.documentContent;
1636
+ }
1637
+ });
1638
+ }
1639
+ });
1704
1640
  }
1705
1641
  };
1706
- ProductSelectorTypeComponent.ctorParameters = () => [
1707
- { type: IconCacheService },
1708
- { type: ChangeDetectorRef }
1642
+ ProductRelatedComponent.ctorParameters = () => [
1643
+ { type: ProductConnectorService },
1644
+ { type: ProductEventService }
1709
1645
  ];
1710
1646
  __decorate([
1711
1647
  Input()
1712
- ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1648
+ ], ProductRelatedComponent.prototype, "refType", void 0);
1713
1649
  __decorate([
1714
1650
  Input()
1715
- ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1651
+ ], ProductRelatedComponent.prototype, "label", void 0);
1716
1652
  __decorate([
1717
1653
  Input()
1718
- ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1719
- __decorate([
1720
- Output()
1721
- ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1654
+ ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1722
1655
  __decorate([
1723
- Output()
1724
- ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1725
- ProductSelectorTypeComponent = __decorate([
1656
+ Input()
1657
+ ], ProductRelatedComponent.prototype, "articles", null);
1658
+ ProductRelatedComponent = __decorate([
1726
1659
  Component({
1727
- selector: 'app-product-selector-type',
1728
- template: "<div *ngIf=\"show2D || show3D\" class=\"show-in\" [textContent]=\"'SHOW_IN' | localize\"></div>\n<co-icon *ngIf=\"show2D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n></co-icon>\n<co-icon *ngIf=\"show3D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.ThreeD\"\n [iconData]=\"threeDIcon\"\n (click)=\"handleIconClick(type.ThreeD)\"\n></co-icon>\n",
1729
- styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:0 0;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}"]
1660
+ selector: 'app-product-related',
1661
+ template: "<div *ngIf=\"articles && articles.length > 0\">\n <app-header [label]=\"label\" [amount]=\"articles?.length\" *ngIf=\"label\"></app-header>\n <co-scroll-container>\n <div class=\"article-wrapper\" *ngFor=\"let article of articles\">\n <co-article-tile\n [imageData]=\"article.image.documentBodyAsDataUri\"\n [description]=\"article.description\"\n [price]=\"article.price\"\n [level]=\"article.stockStatus\"\n [isSmallModus]=\"isSmallModus\"\n [hasConfigureButton]=\"article.goodType === 'B'\"\n (contentClick)=\"handleContentClick(article)\"\n ></co-article-tile>\n </div>\n </co-scroll-container>\n</div>\n",
1662
+ styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:0!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:0!important;background:0 0!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}"]
1730
1663
  })
1731
- ], ProductSelectorTypeComponent);
1664
+ ], ProductRelatedComponent);
1732
1665
 
1733
- let IoneProductComponent = class IoneProductComponent {
1734
- constructor(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
1735
- // this.sku = 'CF-HILL';
1736
- // this.sku = 'CF-ALMADA';
1737
- // this.sku = 'CF-39904ANT';
1738
- // this.sku = 'CF-22346001';
1739
- // this.sku = '104';
1740
- // this.sku = '1000561986';
1741
- this._dictionary = _dictionary;
1742
- this._jsonUtils = _jsonUtils;
1743
- this._ione = _ione;
1744
- this._changeDetector = _changeDetector;
1745
- this._appEventService = _appEventService;
1746
- this._settingsService = _settingsService;
1747
- this.onAddToCart = new EventEmitter();
1748
- this.forceRenderImage = new EventEmitter();
1749
- this.onAlternativeClick = new EventEmitter();
1750
- this.onArticleInfoReceived = new EventEmitter();
1751
- this.onArticleReceived = new EventEmitter();
1752
- this.onSelectionsReceived = new EventEmitter();
1753
- this.onAddToQuote = new EventEmitter();
1754
- this.upAndLoaded = false;
1755
- this._subs = [];
1756
- this._subs.push(this._settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),
1757
- // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
1758
- this._appEventService.onAddToCart.subscribe(json => this.onAddToCart.emit(json)), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)));
1666
+ let ProductStockComponent = class ProductStockComponent {
1667
+ constructor(_iOne, _iconCache) {
1668
+ this._iOne = _iOne;
1669
+ this._iconCache = _iconCache;
1670
+ this.icon = IconEnum;
1671
+ this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1759
1672
  }
1760
- set settings(value) {
1673
+ set stockAndDelivery(value) {
1761
1674
  if (value) {
1762
- let settings;
1763
- if (typeof value === 'string') {
1764
- settings = JSON.parse(value);
1765
- }
1766
- else {
1767
- settings = value;
1675
+ this.numberInStock = value.stock;
1676
+ }
1677
+ }
1678
+ ngOnInit() {
1679
+ }
1680
+ };
1681
+ ProductStockComponent.ctorParameters = () => [
1682
+ { type: ProductConnectorService },
1683
+ { type: IconCacheService }
1684
+ ];
1685
+ __decorate([
1686
+ Input()
1687
+ ], ProductStockComponent.prototype, "stockAndDelivery", null);
1688
+ ProductStockComponent = __decorate([
1689
+ Component({
1690
+ selector: 'app-product-stock',
1691
+ template: "<!--<app-header [label]=\"'STOCK' | localize\"></app-header>-->\n<!--<co-level-indicator [model]=\"'medium'\"></co-level-indicator>-->\n<div class=\"product-stock-wrapper\">\n <co-icon class=\"stock-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-stock-fields\">\n <div class=\"pp-default-label in-stock\" [textContent]=\"'PRODUCT_IN_STOCK' | localize\" *ngIf=\"numberInStock > 0\"></div>\n <div class=\"pp-default-label not-in-stock\" [textContent]=\"'PRODUCT_NOT_IN_STOCK' | localize\" *ngIf=\"!(numberInStock > 0)\"></div>\n </div>\n</div>\n",
1692
+ styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74b77f;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width:400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}"]
1693
+ })
1694
+ ], ProductStockComponent);
1695
+
1696
+ let LocalizePipe =
1697
+ // A pipe for localizing string values in view templates.
1698
+ class LocalizePipe {
1699
+ constructor(_dictionaryService) {
1700
+ this._dictionaryService = _dictionaryService;
1701
+ }
1702
+ transform(value, upperCaseFirst = true, replace = []) {
1703
+ if (!value) {
1704
+ return '';
1705
+ }
1706
+ replace = replace ? replace : [];
1707
+ if (!Array.isArray(replace)) {
1708
+ replace = [replace];
1709
+ }
1710
+ return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1711
+ }
1712
+ };
1713
+ LocalizePipe.ctorParameters = () => [
1714
+ { type: DictionaryService }
1715
+ ];
1716
+ LocalizePipe = __decorate([
1717
+ Pipe({
1718
+ name: 'localize'
1719
+ })
1720
+ // A pipe for localizing string values in view templates.
1721
+ ], LocalizePipe);
1722
+
1723
+ let ProductDeliveryComponent = class ProductDeliveryComponent {
1724
+ constructor(_localizePipe, _iOne, _iconCache) {
1725
+ this._localizePipe = _localizePipe;
1726
+ this._iOne = _iOne;
1727
+ this._iconCache = _iconCache;
1728
+ this.icon = IconEnum;
1729
+ this.iconData = this._iconCache.getIcon(this.icon.Truck);
1730
+ }
1731
+ set stockAndDelivery(value) {
1732
+ if (value) {
1733
+ this.deliveryDescription = value.deliveryDescription;
1734
+ if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {
1735
+ this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');
1768
1736
  }
1769
- this._settingsService.createSettingsFromObject(settings);
1770
- // this._initConnection(settings);
1771
1737
  }
1772
1738
  }
1773
- get settings() {
1774
- return this._settings;
1739
+ ngOnInit() {
1775
1740
  }
1776
- ngOnChanges(changes) {
1777
- this._changeDetector.detectChanges();
1741
+ };
1742
+ ProductDeliveryComponent.ctorParameters = () => [
1743
+ { type: LocalizePipe },
1744
+ { type: ProductConnectorService },
1745
+ { type: IconCacheService }
1746
+ ];
1747
+ __decorate([
1748
+ Input()
1749
+ ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1750
+ ProductDeliveryComponent = __decorate([
1751
+ Component({
1752
+ selector: 'app-product-delivery',
1753
+ template: "<!--<app-header [label]=\"'DELIVERY_TIME_PERIOD' | localize\"></app-header>-->\n<div class=\"product-delivery-wrapper\">\n <co-icon class=\"delivery-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-delivery-fields\">\n <div class=\"pp-default-label\" [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\"></div>\n <div class=\"pp-default-description\" [textContent]=\"deliveryDescription | date:'dd MMMM yyyy'\"></div>\n </div>\n</div>\n",
1754
+ styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width:400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}"]
1755
+ })
1756
+ ], ProductDeliveryComponent);
1757
+
1758
+ let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1759
+ constructor(_appEventService) {
1760
+ this._appEventService = _appEventService;
1761
+ this.activeTabHeight = 0;
1762
+ this.tabs = [];
1763
+ this._subs = [];
1764
+ this._subs.push(this._appEventService.onUpdateProductInfoTab.subscribe((index) => {
1765
+ this.updateTab(index);
1766
+ this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });
1767
+ }));
1768
+ }
1769
+ set article(value) {
1770
+ if (value) {
1771
+ this.articleObject = value;
1772
+ this._setupTabs();
1773
+ this.updateTab(0);
1774
+ }
1778
1775
  }
1779
1776
  ngOnDestroy() {
1780
1777
  this._subs.forEach(s => s.unsubscribe());
1781
1778
  }
1782
- _handleSettingsLoaded(loaded) {
1783
- if (loaded) {
1784
- this.upAndLoaded = true;
1785
- this._initConnection();
1779
+ updateTab(tabIndex) {
1780
+ this.activeTab = tabIndex;
1781
+ this.updateHeight(tabIndex);
1782
+ }
1783
+ updateHeight(tabIndex) {
1784
+ if (this.tabContent.nativeElement.children.length > 0) {
1785
+ if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
1786
+ this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;
1787
+ }
1786
1788
  }
1787
1789
  }
1788
- _handleAnswerInfoReceived(info) {
1789
- this.onArticleInfoReceived.next(info);
1790
+ _setupTabs() {
1791
+ this.tabs.push({ title: 'DESCRIPTION' });
1792
+ this.tabs.push({ title: 'FEATURES' });
1793
+ if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {
1794
+ this.tabs.push({ title: 'DOWNLOADS' });
1795
+ }
1796
+ if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {
1797
+ this.tabs.push({ title: 'SYMBOLS' });
1798
+ }
1790
1799
  }
1791
- // we need to prepare the settings before we can use it for the 3d configurator bundle
1792
- _initConnection() {
1793
- return __awaiter(this, void 0, void 0, function* () {
1794
- this._ione.initDefaultDevelopTestConnection();
1795
- // settingsToUse.session = this._ione.connector.connector.session;
1796
- setTimeout(() => {
1800
+ };
1801
+ ProductInfoTabsComponent.ctorParameters = () => [
1802
+ { type: ProductEventService }
1803
+ ];
1804
+ __decorate([
1805
+ ViewChild('tabContent')
1806
+ ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1807
+ __decorate([
1808
+ Input()
1809
+ ], ProductInfoTabsComponent.prototype, "article", null);
1810
+ ProductInfoTabsComponent = __decorate([
1811
+ Component({
1812
+ selector: 'app-product-info-tabs',
1813
+ template: "<div class=\"tab-container\">\r\n <div class=\"tab-header\">\r\n <button *ngFor=\"let tab of tabs; let i = index\" class=\"tab-header-button\" [class.active]=\"activeTab === i\" [textContent]=\"tab.title | localize\" (click)=\"updateTab(i)\"></button>\r\n </div>\r\n <div class=\"tab-content\" #tabContent [style.height.px]=\"(activeTabHeight > 0 ? activeTabHeight : '')\">\r\n <div class=\"tab-content-item\" *ngFor=\"let tab of tabs; let i = index\" [class.active]=\"activeTab === i\">\r\n <ng-container *ngIf=\"i === 0\">\r\n <app-product-additional-info class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-additional-info>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 1\">\r\n <app-product-properties class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-properties>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 2\">\r\n <app-product-documents [showLabel]=\"false\" class=\"\" *ngIf=\"articleObject?.documents && articleObject?.documents.length > 0\" [documents]=\"articleObject?.documents\"></app-product-documents>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 3\">\r\n <app-product-symbols class=\"\" *ngIf=\"articleObject?.symbols && articleObject?.symbols.length > 0\" [symbols]=\"articleObject?.symbols\"></app-product-symbols>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
1814
+ styles: [":focus{outline:0}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:0 0;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:700;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:.2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width:650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width:450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}"]
1815
+ })
1816
+ ], ProductInfoTabsComponent);
1817
+
1818
+ let PipeModule = class PipeModule {
1819
+ };
1820
+ PipeModule = __decorate([
1821
+ NgModule({
1822
+ exports: [
1823
+ LocalizePipe
1824
+ ],
1825
+ declarations: [
1826
+ LocalizePipe
1827
+ ],
1828
+ providers: [
1829
+ LocalizePipe
1830
+ ]
1831
+ })
1832
+ ], PipeModule);
1833
+
1834
+ let ProductDocumentsComponent = class ProductDocumentsComponent {
1835
+ constructor(iconCache) {
1836
+ this.iconCache = iconCache;
1837
+ this.icon = IconEnum;
1838
+ this.showLabel = false;
1839
+ this.documents = [];
1840
+ }
1841
+ };
1842
+ ProductDocumentsComponent.ctorParameters = () => [
1843
+ { type: IconCacheService }
1844
+ ];
1845
+ __decorate([
1846
+ Input()
1847
+ ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1848
+ __decorate([
1849
+ Input()
1850
+ ], ProductDocumentsComponent.prototype, "documents", void 0);
1851
+ ProductDocumentsComponent = __decorate([
1852
+ Component({
1853
+ selector: 'app-product-documents',
1854
+ template: "<app-header *ngIf=\"showLabel\" [label]=\"'DOCUMENTS' | localize\" [amount]=\"documents?.length\"></app-header>\n<div *ngIf=\"documents && documents.length > 0\">\n <co-files-upload [documents]=\"documents\" [canAdd]=\"false\" readonly></co-files-upload>\n</div>\n",
1855
+ styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:0!important;border:none!important;background:url(../../../assets/icons/download.svg) left 6px center/36px auto no-repeat!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}"]
1856
+ })
1857
+ ], ProductDocumentsComponent);
1858
+
1859
+ let HeaderComponent = class HeaderComponent {
1860
+ constructor() { }
1861
+ ngOnInit() {
1862
+ }
1863
+ };
1864
+ __decorate([
1865
+ Input()
1866
+ ], HeaderComponent.prototype, "label", void 0);
1867
+ __decorate([
1868
+ Input()
1869
+ ], HeaderComponent.prototype, "amount", void 0);
1870
+ HeaderComponent = __decorate([
1871
+ Component({
1872
+ selector: 'app-header',
1873
+ template: "<ng-container *ngIf=\"label\">\n <div class=\"header-wrapper\">\n <h3 [textContent]=\"label\"></h3>\n <span *ngIf=\"amount\" class=\"amount\" [textContent]=\"'(' + amount + ')'\"></span>\n </div>\n</ng-container>\n",
1874
+ styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
1875
+ })
1876
+ ], HeaderComponent);
1877
+
1878
+ var TabType;
1879
+ (function (TabType) {
1880
+ TabType["Additional"] = "additional";
1881
+ TabType["Properties"] = "properties";
1882
+ })(TabType || (TabType = {}));
1883
+ let ProductInfoComponent = class ProductInfoComponent {
1884
+ constructor() {
1885
+ this.tabType = TabType;
1886
+ this.currentTab = TabType.Additional;
1887
+ }
1888
+ ngOnInit() {
1889
+ }
1890
+ switchTab(tab) {
1891
+ this.currentTab = tab;
1892
+ }
1893
+ };
1894
+ __decorate([
1895
+ Input()
1896
+ ], ProductInfoComponent.prototype, "article", void 0);
1897
+ ProductInfoComponent = __decorate([
1898
+ Component({
1899
+ selector: 'app-product-info',
1900
+ template: "<div>\n <div class=\"info-wrapper\">\n <div class=\"info-navigation\">\n <span [textContent]=\"'ADDITIONAL_DATA' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Additional\" (mouseup)=\"switchTab(tabType.Additional)\"></span>\n <span [textContent]=\"'PROPERTIES' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Properties\" (mouseup)=\"switchTab(tabType.Properties)\"></span>\n </div>\n <ng-container [ngSwitch]=\"currentTab\" class=\"content\">\n <div *ngSwitchCase=\"tabType.Additional\" @showContent>\n <app-product-additional-info\n [article]=\"article\"\n ></app-product-additional-info>\n </div>\n <div *ngSwitchCase=\"tabType.Properties\" @showContent>\n <app-product-properties [article]=\"article\"></app-product-properties>\n </div>\n </ng-container>\n </div>\n</div>\n",
1901
+ animations: [
1902
+ trigger('showContent', [
1903
+ state('void', style({ 'opacity': '0' })),
1904
+ state('*', style({ 'opacity': '1' })),
1905
+ transition('void => *', animate('200ms 100ms ease-in-out')),
1906
+ ])
1907
+ ],
1908
+ styles: [".info-navigation{margin:30px 0}.info-navigation .navigator:not(:last-child){margin-right:30px}.navigator{font-size:15px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigator.selected{color:#2b60a7}"]
1909
+ })
1910
+ ], ProductInfoComponent);
1911
+
1912
+ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1913
+ constructor(_sanitizer, _connectorService, _changeDetector) {
1914
+ this._sanitizer = _sanitizer;
1915
+ this._connectorService = _connectorService;
1916
+ this._changeDetector = _changeDetector;
1917
+ this.showLabel = false;
1918
+ this.textParts = [];
1919
+ this._superArticles = new Map();
1920
+ }
1921
+ set article(value) {
1922
+ if (value) {
1923
+ this._article = value;
1924
+ this._buildInfo().then(() => {
1797
1925
  this._changeDetector.detectChanges();
1798
1926
  });
1799
- // this._settings = settingsToUse;
1927
+ }
1928
+ }
1929
+ get article() {
1930
+ return this._article;
1931
+ }
1932
+ ngOnInit() {
1933
+ }
1934
+ _getTextsSuperArticle() {
1935
+ return __awaiter(this, void 0, void 0, function* () {
1936
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1937
+ const texts = [];
1938
+ if (this.article.superArticleNr) {
1939
+ let mainArticle;
1940
+ if (this._superArticles.has(this.article.superArticleNr)) {
1941
+ mainArticle = this._superArticles.get(this.article.superArticleNr);
1942
+ }
1943
+ else {
1944
+ mainArticle = yield this._connectorService.getSuperArticle(this.article.superArticleNr);
1945
+ this._superArticles.set(this.article.superArticleNr, mainArticle);
1946
+ }
1947
+ mainArticle.texts.forEach((txt) => {
1948
+ if (BitUtils.IsFullDescription(txt.publication)) {
1949
+ const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1950
+ texts.push(safeTxt);
1951
+ }
1952
+ });
1953
+ resolve(texts);
1954
+ }
1955
+ else {
1956
+ resolve(texts);
1957
+ }
1958
+ }));
1959
+ });
1960
+ }
1961
+ _prepareArticleTexts() {
1962
+ return __awaiter(this, void 0, void 0, function* () {
1963
+ const texts = yield this._getTextsSuperArticle();
1964
+ if (texts.length > 0) {
1965
+ this.textParts.push(...texts);
1966
+ }
1967
+ if (this.article.texts) {
1968
+ this.article.texts.forEach((txt) => {
1969
+ if (BitUtils.IsFullDescription(txt.publication)) {
1970
+ const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1971
+ this.textParts.push(safeTxt);
1972
+ }
1973
+ });
1974
+ }
1975
+ });
1976
+ }
1977
+ _buildInfo() {
1978
+ return __awaiter(this, void 0, void 0, function* () {
1979
+ this.textParts.length = 0;
1980
+ yield this._prepareArticleTexts();
1981
+ if (this.textParts.length === 0) {
1982
+ if (this.article.additionalDescription) {
1983
+ this.textParts.push(this.article.additionalDescription);
1984
+ }
1985
+ else if (this.article.description) {
1986
+ this.textParts.push(this.article.description);
1987
+ }
1988
+ }
1989
+ return;
1800
1990
  });
1801
1991
  }
1802
1992
  };
1803
- IoneProductComponent.ctorParameters = () => [
1804
- { type: DictionaryService },
1805
- { type: JsonUtilsService },
1993
+ ProductAdditionalInfoComponent.ctorParameters = () => [
1994
+ { type: DomSanitizer },
1806
1995
  { type: ProductConnectorService },
1807
- { type: ChangeDetectorRef },
1808
- { type: ProductEventService },
1809
- { type: ProductSettingsService }
1996
+ { type: ChangeDetectorRef }
1810
1997
  ];
1811
1998
  __decorate([
1812
1999
  Input()
1813
- ], IoneProductComponent.prototype, "sku", void 0);
2000
+ ], ProductAdditionalInfoComponent.prototype, "article", null);
1814
2001
  __decorate([
1815
2002
  Input()
1816
- ], IoneProductComponent.prototype, "settings", null);
1817
- __decorate([
1818
- Output()
1819
- ], IoneProductComponent.prototype, "onAddToCart", void 0);
1820
- __decorate([
1821
- Output()
1822
- ], IoneProductComponent.prototype, "forceRenderImage", void 0);
1823
- __decorate([
1824
- Output()
1825
- ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
1826
- __decorate([
1827
- Output()
1828
- ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
1829
- __decorate([
1830
- Output()
1831
- ], IoneProductComponent.prototype, "onArticleReceived", void 0);
1832
- __decorate([
1833
- Output()
1834
- ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
1835
- __decorate([
1836
- Output()
1837
- ], IoneProductComponent.prototype, "onAddToQuote", void 0);
1838
- IoneProductComponent = __decorate([
2003
+ ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
2004
+ ProductAdditionalInfoComponent = __decorate([
1839
2005
  Component({
1840
- selector: 'app-ione-product',
1841
- template: "<app-product-page *ngIf=\"upAndLoaded\" [sku]=\"sku\"\n></app-product-page>\n",
1842
- encapsulation: ViewEncapsulation.Emulated,
1843
- styles: [""]
2006
+ selector: 'app-product-additional-info',
2007
+ template: "<h3 *ngIf=\"showLabel\" [textContent]=\"'ADDITIONAL_DATA' | localize\"></h3>\n<ng-container *ngIf=\"textParts && textParts.length > 0\">\n <div class=\"additional-info-parts\" *ngFor=\"let text of textParts\" [innerHTML]=\"text\"></div>\n</ng-container>\n",
2008
+ styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:iOneMontserrat}:host .additional-info-parts>:first-child{margin-top:0}:host .additional-info-parts>:last-child{margin-bottom:0}"]
1844
2009
  })
1845
- ], IoneProductComponent);
2010
+ ], ProductAdditionalInfoComponent);
1846
2011
 
1847
- let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1848
- constructor(_appEventService) {
1849
- this._appEventService = _appEventService;
2012
+ const propertyMap = new Map([
2013
+ ['articleNr', 'ARTICLE_NUMBER'],
2014
+ ['catExtra', 'CATEGORY'],
2015
+ ['catType', 'CATEGORY_TYPE'],
2016
+ ['description', 'DESCRIPTION'],
2017
+ ['material', 'MATERIAL'],
2018
+ ['title', 'TITLE'],
2019
+ ['turnOverGroup', 'TURNOVERGROUP'],
2020
+ ['height', 'HEIGHT'],
2021
+ ['width', 'WIDTH']
2022
+ ]);
2023
+ let ProductPropertiesComponent = class ProductPropertiesComponent {
2024
+ constructor() {
2025
+ this.showLabel = false;
2026
+ this.properties = [];
1850
2027
  }
1851
2028
  set article(value) {
1852
2029
  this._article = value;
1853
- if (this._article) {
1854
- this.description = this.article.additionalDescription;
1855
- this._prepareDescription();
1856
- }
2030
+ this._prepareProperties();
1857
2031
  }
1858
2032
  get article() {
1859
2033
  return this._article;
1860
2034
  }
1861
2035
  ngOnInit() {
1862
2036
  }
1863
- onReadMore() {
1864
- this._appEventService.onUpdateProductInfoTab.next(0);
1865
- }
1866
- _prepareDescription() {
1867
- this.description = '';
1868
- if (this.article.texts && this.article.texts.length > 0) {
1869
- this.article.texts.forEach((txt) => {
1870
- if (BitUtils.IsShortDescription(txt.publication)) {
1871
- this.description += txt.text;
1872
- }
1873
- });
1874
- this.description = this.description.replace(/<[^>]*>?/gm, '');
1875
- if (this.description.length > 250) {
1876
- this.description = this.description.substr(0, 250) + ' [..]';
1877
- }
2037
+ _prepareProperties() {
2038
+ this.properties.length = 0;
2039
+ if (!this._article) {
2040
+ return;
1878
2041
  }
2042
+ propertyMap.forEach((value, key) => {
2043
+ if (this.article.hasOwnProperty(key)) {
2044
+ this.properties.push({ key: value, value: this.article[key] });
2045
+ }
2046
+ });
1879
2047
  }
1880
2048
  };
1881
- ProductAdditionalDescriptionComponent.ctorParameters = () => [
1882
- { type: ProductEventService }
1883
- ];
1884
2049
  __decorate([
1885
2050
  Input()
1886
- ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1887
- ProductAdditionalDescriptionComponent = __decorate([
2051
+ ], ProductPropertiesComponent.prototype, "article", null);
2052
+ __decorate([
2053
+ Input()
2054
+ ], ProductPropertiesComponent.prototype, "showLabel", void 0);
2055
+ ProductPropertiesComponent = __decorate([
1888
2056
  Component({
1889
- selector: 'app-product-additional-description',
1890
- template: "<ng-container *ngIf=\"description !== ''\">\n <div class=\"pd-additional-description\">\n <p [innerHTML]=\"description\"></p>\n <button class=\"pd-read-more-btn\" [textContent]=\"'READ_MORE' | localize\" (click)=\"onReadMore()\"></button>\n </div>\n</ng-container>\n",
1891
- styles: [":host{display:block;padding-top:0!important}:host :focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:0 0;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width:650px){:host .pd-additional-description{font-size:12px}}"]
2057
+ selector: 'app-product-properties',
2058
+ template: "<div class=\"article-properties-wrapper\">\n <h3 *ngIf=\"showLabel\" [textContent]=\"'PROPERTIES' | localize\"></h3>\n <ng-container *ngFor=\"let property of properties\">\n <div class=\"article-property\">\n <div class=\"article-property-key\" [textContent]=\"property.key | localize\"></div>\n <div class=\"article-property-value\" [textContent]=\"property.value\"></div>\n </div>\n </ng-container>\n</div>\n",
2059
+ styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width:450px){.article-property-key{flex-basis:130px}}"]
1892
2060
  })
1893
- ], ProductAdditionalDescriptionComponent);
2061
+ ], ProductPropertiesComponent);
1894
2062
 
1895
- let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1896
- constructor(_appEventService) {
1897
- this._appEventService = _appEventService;
1898
- this.activeTabHeight = 0;
1899
- this.tabs = [];
1900
- this._subs = [];
1901
- this._subs.push(this._appEventService.onUpdateProductInfoTab.subscribe((index) => {
1902
- this.updateTab(index);
1903
- this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });
1904
- }));
2063
+ let ProductSymbolsComponent = class ProductSymbolsComponent {
2064
+ constructor() {
2065
+ this.symbolStrings = [];
1905
2066
  }
1906
- set article(value) {
1907
- if (value) {
1908
- this.articleObject = value;
1909
- this._setupTabs();
1910
- this.updateTab(0);
2067
+ set symbols(value) {
2068
+ this._symbols = value;
2069
+ if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {
2070
+ this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');
1911
2071
  }
1912
- }
1913
- ngOnDestroy() {
1914
- this._subs.forEach(s => s.unsubscribe());
1915
- }
1916
- updateTab(tabIndex) {
1917
- this.activeTab = tabIndex;
1918
- this.updateHeight(tabIndex);
1919
- }
1920
- updateHeight(tabIndex) {
1921
- if (this.tabContent.nativeElement.children.length > 0) {
1922
- if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
1923
- this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;
2072
+ if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {
2073
+ for (let i = 0; i < this._symbols['symbolString'].length; i++) {
2074
+ this.symbolStrings.push(this._symbols['symbolString'][i]);
1924
2075
  }
1925
2076
  }
1926
2077
  }
1927
- _setupTabs() {
1928
- this.tabs.push({ title: 'DESCRIPTION' });
1929
- this.tabs.push({ title: 'FEATURES' });
1930
- if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {
1931
- this.tabs.push({ title: 'DOWNLOADS' });
1932
- }
1933
- if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {
1934
- this.tabs.push({ title: 'SYMBOLS' });
1935
- }
2078
+ get symbols() {
2079
+ return this._symbols;
2080
+ }
2081
+ ngOnInit() {
1936
2082
  }
1937
2083
  };
1938
- ProductInfoTabsComponent.ctorParameters = () => [
1939
- { type: ProductEventService }
1940
- ];
1941
- __decorate([
1942
- ViewChild('tabContent')
1943
- ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1944
2084
  __decorate([
1945
2085
  Input()
1946
- ], ProductInfoTabsComponent.prototype, "article", null);
1947
- ProductInfoTabsComponent = __decorate([
2086
+ ], ProductSymbolsComponent.prototype, "symbols", null);
2087
+ __decorate([
2088
+ HostBinding('class')
2089
+ ], ProductSymbolsComponent.prototype, "_className", void 0);
2090
+ ProductSymbolsComponent = __decorate([
1948
2091
  Component({
1949
- selector: 'app-product-info-tabs',
1950
- template: "<div class=\"tab-container\">\r\n <div class=\"tab-header\">\r\n <button *ngFor=\"let tab of tabs; let i = index\" class=\"tab-header-button\" [class.active]=\"activeTab === i\" [textContent]=\"tab.title | localize\" (click)=\"updateTab(i)\"></button>\r\n </div>\r\n <div class=\"tab-content\" #tabContent [style.height.px]=\"(activeTabHeight > 0 ? activeTabHeight : '')\">\r\n <div class=\"tab-content-item\" *ngFor=\"let tab of tabs; let i = index\" [class.active]=\"activeTab === i\">\r\n <ng-container *ngIf=\"i === 0\">\r\n <app-product-additional-info class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-additional-info>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 1\">\r\n <app-product-properties class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-properties>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 2\">\r\n <app-product-documents [showLabel]=\"false\" class=\"\" *ngIf=\"articleObject?.documents && articleObject?.documents.length > 0\" [documents]=\"articleObject?.documents\"></app-product-documents>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 3\">\r\n <app-product-symbols class=\"\" *ngIf=\"articleObject?.symbols && articleObject?.symbols.length > 0\" [symbols]=\"articleObject?.symbols\"></app-product-symbols>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
1951
- styles: [":focus{outline:0}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:0 0;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:700;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:.2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width:650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width:450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}"]
1952
- })
1953
- ], ProductInfoTabsComponent);
1954
-
1955
- let ProductInitializerService = class ProductInitializerService {
1956
- constructor(_settingsService) {
1957
- this._settingsService = _settingsService;
1958
- }
1959
- initializeApp() {
1960
- return __awaiter(this, void 0, void 0, function* () {
1961
- return this._settingsService.initializeSettings();
1962
- });
1963
- }
1964
- };
1965
- ProductInitializerService.ctorParameters = () => [
1966
- { type: ProductSettingsService }
1967
- ];
1968
- ProductInitializerService.ɵprov = ɵɵdefineInjectable({ factory: function ProductInitializerService_Factory() { return new ProductInitializerService(ɵɵinject(ProductSettingsService)); }, token: ProductInitializerService, providedIn: "root" });
1969
- ProductInitializerService = __decorate([
1970
- Injectable({
1971
- providedIn: 'root',
2092
+ selector: 'app-product-symbols',
2093
+ template: "<div *ngIf=\"symbols && symbols.length > 0\">\n <app-header [label]=\"'SYMBOLS' | localize\" [amount]=\"symbols?.length\"></app-header>\n <co-scroll-container>\n <co-tile small noImagePlaceholder *ngFor=\"let symbol of symbolStrings\">\n <ng-container tile-over-image>\n <div class=\"symbol\" [textContent]=\"symbol\"></div>\n </ng-container>\n <ng-container tile-extra-bottom-content>\n <div class=\"symbol-name\" [textContent]=\"'Wat moet hier?'\"></div>\n </ng-container>\n </co-tile>\n </co-scroll-container>\n</div>\n",
2094
+ styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
1972
2095
  })
1973
- ], ProductInitializerService);
2096
+ ], ProductSymbolsComponent);
1974
2097
 
1975
- function initializeApp(context) {
1976
- const x = () => context.initializeApp();
1977
- return x;
1978
- }
1979
- let IoneProductModule = class IoneProductModule {
2098
+ let ProductPageModule = class ProductPageModule {
1980
2099
  };
1981
- IoneProductModule = __decorate([
2100
+ ProductPageModule = __decorate([
1982
2101
  NgModule({
1983
2102
  imports: [
1984
- // BrowserAnimationsModule,
1985
2103
  CommonModule,
1986
- ButtonModule,
1987
2104
  IconModule,
2105
+ LoaderModule,
2106
+ PipeModule,
1988
2107
  NumberPickerModule,
2108
+ ButtonModule,
2109
+ PriceDisplayPipeModule,
1989
2110
  InputTextModule,
1990
2111
  FilesUploadModule,
1991
- LoaderModule,
1992
2112
  ScrollContainerModule,
1993
2113
  TileModule,
1994
2114
  LevelIndicatorModule,
1995
- PriceDisplayPipeModule,
1996
- ArticleTileModule
2115
+ ArticleTileModule,
1997
2116
  ],
1998
2117
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1999
2118
  declarations: [
2000
- IoneProductComponent,
2001
2119
  ProductPageComponent,
2120
+ ProductSelectorTypeComponent,
2002
2121
  ImageCarouselComponent,
2003
2122
  ProductDescriptionComponent,
2004
- ProductDocumentsComponent,
2123
+ ProductAdditionalDescriptionComponent,
2124
+ ProductPriceComponent,
2125
+ ProductAddtocartComponent,
2005
2126
  ProductRelatedComponent,
2127
+ ProductStockComponent,
2128
+ ProductDeliveryComponent,
2129
+ ProductInfoTabsComponent,
2130
+ ProductDocumentsComponent,
2006
2131
  HeaderComponent,
2007
2132
  ProductInfoComponent,
2008
2133
  ProductAdditionalInfoComponent,
2009
2134
  ProductPropertiesComponent,
2010
- ProductDeliveryComponent,
2011
- ProductStockComponent,
2012
- ProductSymbolsComponent,
2013
- ProductPriceComponent,
2014
- ProductAddtocartComponent,
2015
- ProductInfoTabsComponent,
2016
- LocalizePipe,
2017
- ProductSelectorTypeComponent,
2018
- ProductAdditionalDescriptionComponent
2135
+ ProductSymbolsComponent
2136
+ ],
2137
+ exports: [ProductPageComponent]
2138
+ })
2139
+ ], ProductPageModule);
2140
+
2141
+ let ProductExternalSourceModule = class ProductExternalSourceModule {
2142
+ };
2143
+ ProductExternalSourceModule = __decorate([
2144
+ NgModule({
2145
+ imports: [
2146
+ CommonModule,
2147
+ ProductPageModule
2148
+ ],
2149
+ declarations: [
2150
+ ProductExternalSourceComponent
2151
+ ],
2152
+ exports: [
2153
+ ProductExternalSourceComponent
2154
+ ]
2155
+ })
2156
+ ], ProductExternalSourceModule);
2157
+
2158
+ function initializeApp(context) {
2159
+ const x = () => context.initializeApp();
2160
+ return x;
2161
+ }
2162
+ let IoneProductModule = class IoneProductModule {
2163
+ };
2164
+ IoneProductModule = __decorate([
2165
+ NgModule({
2166
+ imports: [
2167
+ // BrowserAnimationsModule,
2168
+ CommonModule,
2169
+ ProductExternalSourceModule,
2170
+ ProductPageModule
2171
+ ],
2172
+ declarations: [
2173
+ IoneProductComponent
2019
2174
  ],
2020
2175
  entryComponents: [
2021
2176
  IoneProductComponent
2022
2177
  ],
2023
2178
  providers: [
2024
- ProductSettingsService,
2025
- ProductConnectorService,
2026
- ProductConnectorAdapterService,
2027
- IconCacheService,
2028
2179
  {
2029
2180
  provide: APP_INITIALIZER,
2030
2181
  useFactory: initializeApp,
@@ -2043,5 +2194,5 @@ IoneProductModule = __decorate([
2043
2194
  * Generated bundle index. Do not edit.
2044
2195
  */
2045
2196
 
2046
- export { IoneProductModule, Version, initializeApp, IoneProductComponent as ɵa, DictionaryService as ɵb, ProductAdditionalDescriptionComponent as ɵba, ProductInitializerService as ɵbb, JsonUtilsService as ɵc, ProductConnectorService as ɵd, ProductConnectorAdapterService as ɵe, ProductSettingsService as ɵf, ProductEventService as ɵg, ProductPageComponent as ɵh, IconCacheService as ɵi, ImageCarouselComponent as ɵj, ProductDescriptionComponent as ɵk, ProductDocumentsComponent as ɵl, ProductRelatedComponent as ɵm, HeaderComponent as ɵn, ProductInfoComponent as ɵo, ProductAdditionalInfoComponent as ɵp, ProductModuleService as ɵq, ProductPropertiesComponent as ɵr, ProductDeliveryComponent as ɵs, LocalizePipe as ɵt, ProductStockComponent as ɵu, ProductSymbolsComponent as ɵv, ProductPriceComponent as ɵw, ProductAddtocartComponent as ɵx, ProductInfoTabsComponent as ɵy, ProductSelectorTypeComponent as ɵz };
2197
+ export { IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, initializeApp, ProductPageModule as ɵa, PipeModule as ɵb, ProductSymbolsComponent as ɵba, IoneProductComponent as ɵbb, ProductInitializerService as ɵbc, LocalizePipe as ɵc, DictionaryService as ɵd, JsonUtilsService as ɵe, ProductPageComponent as ɵf, ProductConnectorService as ɵg, ProductConnectorAdapterService as ɵh, ProductSettingsService as ɵi, IconCacheService as ɵj, ProductEventService as ɵk, ProductSelectorTypeComponent as ɵl, ImageCarouselComponent as ɵm, ProductDescriptionComponent as ɵn, ProductAdditionalDescriptionComponent as ɵo, ProductPriceComponent as ɵp, ProductAddtocartComponent as ɵq, ProductRelatedComponent as ɵr, ProductStockComponent as ɵs, ProductDeliveryComponent as ɵt, ProductInfoTabsComponent as ɵu, ProductDocumentsComponent as ɵv, HeaderComponent as ɵw, ProductInfoComponent as ɵx, ProductAdditionalInfoComponent as ɵy, ProductPropertiesComponent as ɵz };
2047
2198
  //# sourceMappingURL=colijnit-product.js.map