@colijnit/product 1.9.5 → 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 +1476 -1262
  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 +38 -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 +34 -9
  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 +13 -74
  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 +47 -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 +61 -10
  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 +14 -74
  54. package/esm5/colijnit-product.js +30 -29
  55. package/esm5/public_api.js +3 -1
  56. package/fesm2015/colijnit-product.js +1189 -1043
  57. package/fesm2015/colijnit-product.js.map +1 -1
  58. package/fesm5/colijnit-product.js +1447 -1234
  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,7 +1,5 @@
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';
@@ -10,38 +8,95 @@ import { Articles } from '@colijnit/articleapi/build/articles';
10
8
  import { DeliveryPrognosis } from '@colijnit/articleapi/build/model/delivery-prognosis';
11
9
  import { DocumentContent } from '@colijnit/articleapi/build/model/document-content';
12
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.5";
26
- this.publishDate = "21-6-2023 11:47:53";
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;
@@ -403,13 +413,13 @@ let ProductSettingsService = class ProductSettingsService {
403
413
  if (typeof settings === 'undefined') {
404
414
  const jsonSettings = yield this._jsonUtilsService.readJsonFile('product-settings.json');
405
415
  if (jsonSettings) {
406
- this.settings = Object.assign(new Settings(), jsonSettings);
416
+ this.settings = Object.assign(new ProductSettings(), jsonSettings);
407
417
  this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
408
418
  this.settingsFinished();
409
419
  }
410
420
  }
411
421
  else {
412
- this.settings = Object.assign(new Settings(), settings);
422
+ this.settings = Object.assign(new ProductSettings(), settings);
413
423
  this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
414
424
  this.settingsFinished();
415
425
  }
@@ -418,50 +428,16 @@ let ProductSettingsService = class ProductSettingsService {
418
428
  createSettingsFromObject(obj) {
419
429
  return __awaiter(this, void 0, void 0, function* () {
420
430
  if (!this.settings) {
421
- this.settings = new Settings();
422
- }
423
- if (obj.hasOwnProperty('url')) {
424
- this.settings.url = obj['url'];
425
- this._dictionaryService.rootUrl = this.settings.url.replace('/ajaxservice', '');
426
- }
427
- if (obj.hasOwnProperty('schema')) {
428
- this.settings.schema = obj['schema'];
429
- }
430
- if (obj.hasOwnProperty('version')) {
431
- this.settings.version = obj['version'];
432
- }
433
- if (obj.hasOwnProperty('branch')) {
434
- this.settings.branch = obj['branch'];
431
+ this.settings = new ProductSettings();
435
432
  }
436
- if (obj.hasOwnProperty('currency')) {
437
- this.settings.currency = obj['currency'];
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);
438
438
  }
439
- if (obj.hasOwnProperty('client')) {
440
- this.settings.client = obj['client'];
441
- }
442
- if (obj.hasOwnProperty('languageCode')) {
443
- this.settings.languageCode = obj['languageCode'];
444
- }
445
- if (obj.hasOwnProperty('username')) {
446
- this.settings.username = obj['username'];
447
- }
448
- if (obj.hasOwnProperty('password')) {
449
- this.settings.password = obj['password'];
450
- }
451
- if (obj.hasOwnProperty('timeoutInMs')) {
452
- this.settings.timeoutInMs = obj['timeoutInMs'];
453
- }
454
- if (obj.hasOwnProperty('session')) {
455
- this.settings.session = obj['session'];
456
- }
457
- if (obj.hasOwnProperty('useGroups')) {
458
- this.settings.useGroups = obj['useGroups'];
459
- }
460
- if (obj.hasOwnProperty('useEncryption')) {
461
- this.settings.useEncryption = obj['useEncryption'];
462
- }
463
- if (obj.hasOwnProperty('useMatch')) {
464
- this.settings.useMatch = obj['useMatch'];
439
+ if (obj.options) {
440
+ this.settings.options = Object.assign({}, ownOptions, obj.options);
465
441
  }
466
442
  if (obj.hasOwnProperty('assetPath')) {
467
443
  this.settings.assetPath = obj['assetPath'];
@@ -476,27 +452,6 @@ let ProductSettingsService = class ProductSettingsService {
476
452
  this.settings.threeDAssetPath += '/';
477
453
  }
478
454
  }
479
- if (obj.hasOwnProperty('currencySymbol')) {
480
- this.settings.currencySymbol = obj['currencySymbol'];
481
- }
482
- if (obj.hasOwnProperty('gtm')) {
483
- this.settings.gtm = obj['gtm'];
484
- }
485
- if (obj.hasOwnProperty('assetIndex')) {
486
- this.settings.assetIndex = obj['assetIndex'];
487
- }
488
- if (obj.hasOwnProperty('lightPresetsIndex')) {
489
- this.settings.lightPresetsIndex = obj['lightPresetsIndex'];
490
- }
491
- if (obj.hasOwnProperty('additionalTranslationFile')) {
492
- this.settings.additionalTranslationFile = obj['additionalTranslationFile'];
493
- }
494
- if (obj.hasOwnProperty('options')) {
495
- this.settings.options = obj['options'];
496
- }
497
- if (obj.hasOwnProperty('renderParameters')) {
498
- this.settings.renderParameters = obj['renderParameters'];
499
- }
500
455
  this.settingsFinished();
501
456
  });
502
457
  }
@@ -511,17 +466,14 @@ ProductSettingsService.ctorParameters = () => [
511
466
  { type: JsonUtilsService },
512
467
  { type: DictionaryService }
513
468
  ];
514
- ProductSettingsService.ɵprov = ɵɵdefineInjectable({ factory: function ProductSettingsService_Factory() { return new ProductSettingsService(ɵɵinject(JsonUtilsService), ɵɵinject(DictionaryService)); }, token: ProductSettingsService, providedIn: "root" });
515
469
  ProductSettingsService = __decorate([
516
- Injectable({
517
- providedIn: 'root'
518
- })
470
+ Injectable()
519
471
  ], ProductSettingsService);
520
472
 
521
473
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
522
474
  let ProductConnectorService = class ProductConnectorService {
523
- constructor(connector, _settingsService) {
524
- this.connector = connector;
475
+ constructor(_adapterService, _settingsService) {
476
+ this._adapterService = _adapterService;
525
477
  this._settingsService = _settingsService;
526
478
  this.controllerInitialized = new BehaviorSubject(false);
527
479
  this._initializing = false;
@@ -535,7 +487,7 @@ let ProductConnectorService = class ProductConnectorService {
535
487
  ngOnDestroy() {
536
488
  this.subs.forEach(sub => sub.unsubscribe());
537
489
  }
538
- initDefaultDevelopTestConnection() {
490
+ initConnection() {
539
491
  return __awaiter(this, void 0, void 0, function* () {
540
492
  if (this._initialized || this._initializing) {
541
493
  return;
@@ -546,20 +498,8 @@ let ProductConnectorService = class ProductConnectorService {
546
498
  if (!settings) {
547
499
  throw Error('Settings are not defined!');
548
500
  }
549
- this.connectorOptions.url = settings.url;
550
- this.connectorOptions.schema = settings.schema;
551
- this.connectorOptions.version = settings.version;
552
- this.connectorOptions.branch = settings.branch;
553
- this.connectorOptions.username = settings.username;
554
- this.connectorOptions.password = settings.password;
555
- this.connectorOptions.session = settings.session;
556
- this.connectorOptions.currencyId = settings.currency;
557
- this.connectorOptions.useGroups = settings.useGroups;
558
- this.connectorOptions.useRenders = settings.useRenders;
559
- this.connectorOptions.useLoginEncryption = settings.useEncryption;
560
- this.connectorOptions.languageCode = settings.languageCode;
561
- this.connector.initConnector(this.connectorOptions);
562
- this._settingsService.settings.session = this.connectorOptions.session;
501
+ this.connectorOptions = Object.assign(new Options(), settings);
502
+ yield this._adapterService.initConnector(this.connectorOptions);
563
503
  this.controllerInitialized.next(true);
564
504
  this._initialized = true;
565
505
  this._initializing = false;
@@ -569,37 +509,53 @@ let ProductConnectorService = class ProductConnectorService {
569
509
  }
570
510
  });
571
511
  }
512
+ getProductBundleSettings(url, upId) {
513
+ return __awaiter(this, void 0, void 0, function* () {
514
+ return this._adapterService.getProductBundleSettings(url, upId);
515
+ });
516
+ }
572
517
  setInstance(instanceId) {
573
- this.connector.setInstance(instanceId);
518
+ this._instanceId = instanceId;
519
+ this._adapterService.setInstance(instanceId);
574
520
  }
575
521
  getFullArticle(sku) {
576
522
  return __awaiter(this, void 0, void 0, function* () {
577
- const goodId = yield this.connector.getGoodIdFromArticleNr(sku);
523
+ const goodId = yield this._adapterService.getGoodIdFromArticleNr(sku);
578
524
  if (goodId) {
579
- return this.connector.getArticleFullObject(goodId);
525
+ return this._adapterService.getArticleFullObject(goodId);
580
526
  }
581
527
  return null;
582
528
  });
583
529
  }
584
530
  getDocumentContent(docId, thumbnail = true) {
585
- return this.connector.getDocumentContent(docId, thumbnail);
531
+ return this._adapterService.getDocumentContent(docId, thumbnail);
586
532
  }
587
533
  getDeliveryPrognosis(goodId) {
588
- return this.connector.getDeliveryPrognosis(goodId);
534
+ return this._adapterService.getDeliveryPrognosis(goodId);
589
535
  }
590
536
  getSelectorDeliveryDate() {
591
537
  return __awaiter(this, void 0, void 0, function* () {
592
- return this.connector.getSelectorDeliveryDate();
538
+ return this._adapterService.getSelectorDeliveryDate();
593
539
  });
594
540
  }
595
541
  getDeliveryDate2(goodId) {
596
- return this.connector.getDeliveryDate2(goodId);
542
+ return this._adapterService.getDeliveryDate2(goodId);
597
543
  }
598
544
  getSuperArticle(id) {
599
- return this.connector.getSuperArticle(id);
545
+ return this._adapterService.getSuperArticle(id);
600
546
  }
601
- getJsonArticleFlatTree(goodId, goodType, quantity, showLoader = true, instanceId, configuratorStatistics) {
602
- 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
+ });
603
559
  }
604
560
  onShowLoaderChange(showLoader) {
605
561
  this._shouldShowLoader = showLoader;
@@ -609,11 +565,8 @@ ProductConnectorService.ctorParameters = () => [
609
565
  { type: ProductConnectorAdapterService },
610
566
  { type: ProductSettingsService }
611
567
  ];
612
- ProductConnectorService.ɵprov = ɵɵdefineInjectable({ factory: function ProductConnectorService_Factory() { return new ProductConnectorService(ɵɵinject(ProductConnectorAdapterService), ɵɵinject(ProductSettingsService)); }, token: ProductConnectorService, providedIn: "root" });
613
568
  ProductConnectorService = __decorate([
614
- Injectable({
615
- providedIn: 'root'
616
- })
569
+ Injectable()
617
570
  ], ProductConnectorService);
618
571
 
619
572
  let ProductEventService = class ProductEventService {
@@ -632,7 +585,6 @@ let ProductEventService = class ProductEventService {
632
585
  this.onUpdateProductInfoTab = new Subject();
633
586
  }
634
587
  };
635
- ProductEventService.ɵprov = ɵɵdefineInjectable({ factory: function ProductEventService_Factory() { return new ProductEventService(); }, token: ProductEventService, providedIn: "root" });
636
588
  __decorate([
637
589
  Output()
638
590
  ], ProductEventService.prototype, "onAddToCart", void 0);
@@ -647,231 +599,278 @@ __decorate([
647
599
  ], ProductEventService.prototype, "onForceRenderImage", void 0);
648
600
  ProductEventService = __decorate([
649
601
  Directive(),
650
- Injectable({
651
- providedIn: 'root'
652
- })
602
+ Injectable()
653
603
  ], ProductEventService);
654
604
 
655
- /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
656
- var IconEnum;
657
- (function (IconEnum) {
658
- IconEnum["AddToCartDrop"] = "add_to_cart_drop";
659
- IconEnum["DeliveryTruck"] = "delivery_truck";
660
- IconEnum["Download"] = "download";
661
- IconEnum["FullScreen"] = "full_screen";
662
- IconEnum["Location"] = "location";
663
- IconEnum["Logo"] = "logo";
664
- IconEnum["MagicWand"] = "magic_wand";
665
- IconEnum["NormalScreen"] = "normal_screen";
666
- IconEnum["Quote"] = "quote";
667
- IconEnum["Refresh"] = "refresh";
668
- IconEnum["ThreeD"] = "three_d";
669
- IconEnum["Truck"] = "truck";
670
- IconEnum["TwoD"] = "two_d";
671
- IconEnum["Warehouse"] = "warehouse";
672
- })(IconEnum || (IconEnum = {}));
673
-
674
- /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
675
- const IconSvg = {
676
- "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>",
677
- "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>",
678
- "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>",
679
- "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>",
680
- "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>",
681
- "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>",
682
- "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>",
683
- "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>",
684
- "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>",
685
- "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>",
686
- "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>",
687
- "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>",
688
- "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>",
689
- "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>"
690
- };
691
-
692
- let IconCacheService = class IconCacheService {
693
- constructor(_sanitizer) {
694
- this._sanitizer = _sanitizer;
695
- this._iconCache = {};
696
- this._allIcons = IconSvg;
697
- this.setIconCache();
698
- }
699
- /**
700
- * All the icons as a large JSON object, from the all-icons.json file.
701
- * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
702
- */
703
- get iconCache() {
704
- return this._iconCache;
705
- }
706
- getIcon(iconName) {
707
- return this._iconCache[iconName.toLowerCase()];
708
- }
709
- setIconCache() {
710
- for (const key in this._allIcons) {
711
- if (this._allIcons.hasOwnProperty(key)) {
712
- this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);
713
- }
714
- }
715
- }
716
- };
717
- IconCacheService.ctorParameters = () => [
718
- { type: DomSanitizer }
719
- ];
720
- IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
721
- IconCacheService = __decorate([
722
- Injectable({
723
- providedIn: 'root'
724
- })
725
- ], IconCacheService);
726
-
727
- let ImageCarouselComponent = class ImageCarouselComponent {
728
- 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;
729
619
  this._ione = _ione;
730
- this._appEventService = _appEventService;
731
620
  this._changeDetector = _changeDetector;
732
- this._domSanitizer = _domSanitizer;
733
- this.iconCache = iconCache;
734
- this.icons = IconEnum;
735
- this.showLoader = false;
736
- this.showRefresh = false;
737
- this.resizing = false;
738
- this._currentIndex = 0;
739
- 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();
740
630
  this._subs = [];
741
- this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
742
- this.showLoader = true;
743
- }), this._appEventService.onDraftRenderImageReceived.subscribe((url) => {
744
- if (this._images[0] instanceof CoDocument) {
745
- 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);
746
643
  }
747
644
  else {
748
- this._images[0] = url;
645
+ settings = value;
749
646
  }
750
- this.showLoader = false;
751
- }));
752
- }
753
- set images(value) {
754
- if (value && value.length > 0) {
755
- this._images = value;
756
- this._loadImages();
757
- this._changeDetector.detectChanges();
647
+ this._settingsService.createSettingsFromObject(settings);
648
+ // this._initConnection(settings);
758
649
  }
759
650
  }
760
- handleWindowResize() {
761
- this.resizing = true;
762
- this._scrollCarouselToIndex();
763
- clearTimeout(this._resizeTimer);
764
- this._resizeTimer = setTimeout(() => {
765
- this.resizing = false;
766
- }, 200);
651
+ get settings() {
652
+ return this._settings;
767
653
  }
768
- gotoNextSlide() {
769
- this.currentIndex++;
654
+ ngOnChanges(changes) {
655
+ this._changeDetector.detectChanges();
770
656
  }
771
- gotoPrevSlide() {
772
- this.currentIndex--;
657
+ ngOnDestroy() {
658
+ this._subs.forEach(s => s.unsubscribe());
773
659
  }
774
- isCurrentIndex(index) {
775
- return this.currentIndex === index;
660
+ _handleAnswerInfoReceived(info) {
661
+ this.onArticleInfoReceived.next(info);
776
662
  }
777
- get currentIndex() {
778
- 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
+ });
779
685
  }
780
- set currentIndex(value) {
781
- this._currentIndex = value;
782
- 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;
783
743
  }
784
- get images() {
785
- 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;
786
783
  }
787
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)));
788
786
  }
789
787
  ngOnDestroy() {
790
- this.carousel = undefined;
791
788
  this._subs.forEach(s => s.unsubscribe());
792
789
  }
793
- handleThumbClick(index) {
794
- this.currentIndex = index;
795
- }
796
- onForceRenderImage() {
797
- this._appEventService.onForceRenderImage.next();
798
- }
799
- getImageSrc(image) {
800
- let source = '';
801
- if (image instanceof CoDocument) {
802
- if (image.filePath) {
803
- source = image.filePath;
804
- }
805
- else {
806
- source = image.documentBodyAsDataUri;
790
+ _prepareExternalSource() {
791
+ return __awaiter(this, void 0, void 0, function* () {
792
+ if (!this._externalSource) {
793
+ return;
807
794
  }
808
- }
809
- else if (image.detail !== undefined) {
810
- source = image.detail;
811
- }
812
- return this._domSanitizer.bypassSecurityTrustUrl(source);
813
- }
814
- _loadImages() {
815
- if (this._images) {
816
- this._images.forEach((i) => {
817
- if (!i.documentBody && !i.filePath) {
818
- this._ione.getDocumentContent(i.documentId, false).then((content) => {
819
- if (content) {
820
- i.documentBody = content.documentContent;
821
- }
822
- });
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;
823
803
  }
824
- });
825
- }
826
- }
827
- _scrollCarouselToIndex() {
828
- if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
829
- const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
830
- if (this.carousel && this.carousel.nativeElement) {
831
- this.carousel.nativeElement.scrollLeft = movePx;
832
- // this.carousel.nativeElement.scrollTo({
833
- // left: movePx,
834
- // behavior: 'smooth'
835
- // });
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;
836
813
  }
837
- }
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
+ });
838
821
  }
839
822
  };
840
- ImageCarouselComponent.ctorParameters = () => [
841
- { type: ProductConnectorService },
842
- { type: ProductEventService },
843
- { type: ChangeDetectorRef },
823
+ ProductExternalSourceComponent.ctorParameters = () => [
844
824
  { type: DomSanitizer },
845
- { type: IconCacheService }
825
+ { type: ProductConnectorService },
826
+ { type: ProductEventService }
846
827
  ];
847
828
  __decorate([
848
- ViewChild('carousel', { read: ElementRef })
849
- ], ImageCarouselComponent.prototype, "carousel", void 0);
829
+ Input()
830
+ ], ProductExternalSourceComponent.prototype, "sku", void 0);
850
831
  __decorate([
851
832
  Input()
852
- ], ImageCarouselComponent.prototype, "showRefresh", void 0);
833
+ ], ProductExternalSourceComponent.prototype, "externalSource", null);
853
834
  __decorate([
854
835
  Input()
855
- ], ImageCarouselComponent.prototype, "images", null);
836
+ ], ProductExternalSourceComponent.prototype, "options", void 0);
856
837
  __decorate([
857
- HostListener('window:resize')
858
- ], ImageCarouselComponent.prototype, "handleWindowResize", null);
838
+ Output()
839
+ ], ProductExternalSourceComponent.prototype, "addToCart", void 0);
859
840
  __decorate([
860
- HostListener('swipeleft')
861
- ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
841
+ Output()
842
+ ], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
862
843
  __decorate([
863
- HostListener('swiperight')
864
- ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
844
+ Output()
845
+ ], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
865
846
  __decorate([
866
- HostBinding('class.resizing')
867
- ], ImageCarouselComponent.prototype, "resizing", void 0);
868
- ImageCarouselComponent = __decorate([
847
+ HostBinding('class.co-product-external-source')
848
+ ], ProductExternalSourceComponent.prototype, "showClass", null);
849
+ ProductExternalSourceComponent = __decorate([
869
850
  Component({
870
- selector: 'app-image-carousel',
871
- 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",
872
- 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
873
872
  })
874
- ], ImageCarouselComponent);
873
+ ], ProductExternalSourceComponent);
875
874
 
876
875
  class StockAndDelivery {
877
876
  constructor(stock, deliveryDescription) {
@@ -888,7 +887,79 @@ var SelectorType;
888
887
  SelectorType["Omni"] = "Omni";
889
888
  })(SelectorType || (SelectorType = {}));
890
889
 
891
- let ProductPageComponent = class ProductPageComponent {
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
+
962
+ let ProductPageComponent = class ProductPageComponent {
892
963
  constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
893
964
  this._ione = _ione;
894
965
  this._renderer = _renderer;
@@ -910,8 +981,8 @@ let ProductPageComponent = class ProductPageComponent {
910
981
  if (this.selections.nativeElement) {
911
982
  this.selections.nativeElement.forceRenderImage();
912
983
  }
913
- }), this.settingsService.settingsLoaded.subscribe((loaded) => {
914
- this.settingsLoaded = loaded;
984
+ }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._ione.controllerInitialized.subscribe((initialized) => {
985
+ this.settingsLoaded = initialized;
915
986
  }));
916
987
  }
917
988
  set sku(value) {
@@ -929,6 +1000,19 @@ let ProductPageComponent = class ProductPageComponent {
929
1000
  get sku() {
930
1001
  return this._sku;
931
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
+ }
932
1016
  set fullScreen(value) {
933
1017
  this._fullScreen = value;
934
1018
  this.fullscreenAnimationEnd = true;
@@ -953,6 +1037,13 @@ let ProductPageComponent = class ProductPageComponent {
953
1037
  return this._currentView;
954
1038
  }
955
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
+ }
956
1047
  }
957
1048
  ngAfterViewInit() {
958
1049
  }
@@ -977,6 +1068,11 @@ let ProductPageComponent = class ProductPageComponent {
977
1068
  showFullScreen() {
978
1069
  this.fullScreen = !this.fullScreen;
979
1070
  }
1071
+ _handleSettingsLoaded(loaded) {
1072
+ if (loaded) {
1073
+ this._ione.initConnection();
1074
+ }
1075
+ }
980
1076
  _getArticle() {
981
1077
  return __awaiter(this, void 0, void 0, function* () {
982
1078
  if (this._initializedSub) {
@@ -986,18 +1082,20 @@ let ProductPageComponent = class ProductPageComponent {
986
1082
  if (init) {
987
1083
  this._ione.getFullArticle(this._sku).then((article) => {
988
1084
  this.article = article;
989
- this.configurable = this.article.goodType === 'B';
990
- if (this.configurable) {
991
- this.currentView = SelectorType.TwoD;
992
- }
993
- this.threeD = this.article.is3D;
994
- this.selectorType = this.article.selectorTypeCustomer;
995
- this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
996
- const stockAndDelivery = stockInfo;
997
- 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
+ });
998
1097
  this._changeDetector.detectChanges();
999
- });
1000
- this._changeDetector.detectChanges();
1098
+ }
1001
1099
  });
1002
1100
  }
1003
1101
  }));
@@ -1024,10 +1122,13 @@ __decorate([
1024
1122
  __decorate([
1025
1123
  Input()
1026
1124
  ], ProductPageComponent.prototype, "sku", null);
1125
+ __decorate([
1126
+ Input()
1127
+ ], ProductPageComponent.prototype, "settings", null);
1027
1128
  ProductPageComponent = __decorate([
1028
1129
  Component({
1029
1130
  selector: 'app-product-page',
1030
- 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",
1031
1132
  animations: [
1032
1133
  trigger('toggleFullScreen', [
1033
1134
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -1064,182 +1165,217 @@ ProductPageComponent = __decorate([
1064
1165
  })
1065
1166
  ], ProductPageComponent);
1066
1167
 
1067
- let ProductDocumentsComponent = class ProductDocumentsComponent {
1068
- constructor(iconCache) {
1069
- this.iconCache = iconCache;
1070
- this.icon = IconEnum;
1071
- this.showLabel = false;
1072
- 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();
1073
1186
  }
1074
1187
  };
1075
- ProductDocumentsComponent.ctorParameters = () => [
1076
- { type: IconCacheService }
1188
+ ProductSelectorTypeComponent.ctorParameters = () => [
1189
+ { type: IconCacheService },
1190
+ { type: ChangeDetectorRef }
1077
1191
  ];
1078
1192
  __decorate([
1079
1193
  Input()
1080
- ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1194
+ ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1081
1195
  __decorate([
1082
1196
  Input()
1083
- ], ProductDocumentsComponent.prototype, "documents", void 0);
1084
- 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([
1085
1208
  Component({
1086
- selector: 'app-product-documents',
1087
- 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",
1088
- 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}"]
1089
1212
  })
1090
- ], ProductDocumentsComponent);
1213
+ ], ProductSelectorTypeComponent);
1091
1214
 
1092
- let ProductRelatedComponent = class ProductRelatedComponent {
1093
- constructor(_iOne, _appEventService) {
1094
- this._iOne = _iOne;
1215
+ let ImageCarouselComponent = class ImageCarouselComponent {
1216
+ constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
1217
+ this._ione = _ione;
1095
1218
  this._appEventService = _appEventService;
1096
- this.isSmallModus = true;
1097
- this._articles = [];
1098
- }
1099
- set articles(value) {
1100
- if (value) {
1101
- if (this.refType && this.refType !== undefined) {
1102
- if (value.length > 0) {
1103
- value.forEach((x) => {
1104
- if (x.refType === this.refType) {
1105
- this._articles.push(x);
1106
- }
1107
- });
1108
- }
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);
1109
1234
  }
1110
1235
  else {
1111
- this._articles = value;
1236
+ this._images[0] = url;
1112
1237
  }
1238
+ this.showLoader = false;
1239
+ }));
1240
+ }
1241
+ set images(value) {
1242
+ if (value && value.length > 0) {
1243
+ this._images = value;
1113
1244
  this._loadImages();
1245
+ this._changeDetector.detectChanges();
1114
1246
  }
1115
1247
  }
1116
- get articles() {
1117
- 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);
1118
1255
  }
1119
- handleContentClick(article) {
1120
- this._appEventService.onAlternativeClick.next(article);
1256
+ gotoNextSlide() {
1257
+ this.currentIndex++;
1121
1258
  }
1122
- _loadImages() {
1123
- this._articles.forEach((a) => {
1124
- if (!a.image.documentBody) {
1125
- this._iOne.getDocumentContent(a.image.documentId).then((content) => {
1126
- if (content) {
1127
- a.image.documentBody = content.documentContent;
1128
- }
1129
- });
1130
- }
1131
- });
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;
1132
1274
  }
1133
- };
1134
- ProductRelatedComponent.ctorParameters = () => [
1135
- { type: ProductConnectorService },
1136
- { type: ProductEventService }
1137
- ];
1138
- __decorate([
1139
- Input()
1140
- ], ProductRelatedComponent.prototype, "refType", void 0);
1141
- __decorate([
1142
- Input()
1143
- ], ProductRelatedComponent.prototype, "label", void 0);
1144
- __decorate([
1145
- Input()
1146
- ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1147
- __decorate([
1148
- Input()
1149
- ], ProductRelatedComponent.prototype, "articles", null);
1150
- ProductRelatedComponent = __decorate([
1151
- Component({
1152
- selector: 'app-product-related',
1153
- 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",
1154
- 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}"]
1155
- })
1156
- ], ProductRelatedComponent);
1157
-
1158
- let HeaderComponent = class HeaderComponent {
1159
- constructor() { }
1160
1275
  ngOnInit() {
1161
1276
  }
1162
- };
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);
1163
1338
  __decorate([
1164
1339
  Input()
1165
- ], HeaderComponent.prototype, "label", void 0);
1340
+ ], ImageCarouselComponent.prototype, "showRefresh", void 0);
1166
1341
  __decorate([
1167
1342
  Input()
1168
- ], HeaderComponent.prototype, "amount", void 0);
1169
- 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([
1170
1357
  Component({
1171
- selector: 'app-header',
1172
- 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",
1173
- 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)}}"]
1174
1361
  })
1175
- ], HeaderComponent);
1362
+ ], ImageCarouselComponent);
1176
1363
 
1177
- var TabType;
1178
- (function (TabType) {
1179
- TabType["Additional"] = "additional";
1180
- TabType["Properties"] = "properties";
1181
- })(TabType || (TabType = {}));
1182
- let ProductInfoComponent = class ProductInfoComponent {
1183
- constructor() {
1184
- this.tabType = TabType;
1185
- this.currentTab = TabType.Additional;
1186
- }
1364
+ let ProductDescriptionComponent = class ProductDescriptionComponent {
1365
+ constructor() { }
1187
1366
  ngOnInit() {
1188
1367
  }
1189
- switchTab(tab) {
1190
- this.currentTab = tab;
1191
- }
1192
1368
  };
1193
1369
  __decorate([
1194
1370
  Input()
1195
- ], ProductInfoComponent.prototype, "article", void 0);
1196
- ProductInfoComponent = __decorate([
1371
+ ], ProductDescriptionComponent.prototype, "article", void 0);
1372
+ ProductDescriptionComponent = __decorate([
1197
1373
  Component({
1198
- selector: 'app-product-info',
1199
- 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",
1200
- animations: [
1201
- trigger('showContent', [
1202
- state('void', style({ 'opacity': '0' })),
1203
- state('*', style({ 'opacity': '1' })),
1204
- transition('void => *', animate('200ms 100ms ease-in-out')),
1205
- ])
1206
- ],
1207
- 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}"]
1208
- })
1209
- ], ProductInfoComponent);
1210
-
1211
- let ProductModuleService = class ProductModuleService {
1212
- constructor(_iOneConnectorService) {
1213
- this._iOneConnectorService = _iOneConnectorService;
1214
- this._superArticles = new Map();
1215
- }
1216
- getArticle(id) {
1217
- return __awaiter(this, void 0, void 0, function* () {
1218
- return yield this._getArticle(id);
1219
- });
1220
- }
1221
- _getArticle(id) {
1222
- return __awaiter(this, void 0, void 0, function* () {
1223
- if (this._superArticles.has(id)) {
1224
- return this._superArticles.get(id);
1225
- }
1226
- else {
1227
- const mainArticle = yield this._iOneConnectorService.getSuperArticle(id);
1228
- this._superArticles.set(id, mainArticle);
1229
- return mainArticle;
1230
- }
1231
- });
1232
- }
1233
- };
1234
- ProductModuleService.ctorParameters = () => [
1235
- { type: ProductConnectorService }
1236
- ];
1237
- ProductModuleService.ɵprov = ɵɵdefineInjectable({ factory: function ProductModuleService_Factory() { return new ProductModuleService(ɵɵinject(ProductConnectorService)); }, token: ProductModuleService, providedIn: "root" });
1238
- ProductModuleService = __decorate([
1239
- Injectable({
1240
- 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}}"]
1241
1377
  })
1242
- ], ProductModuleService);
1378
+ ], ProductDescriptionComponent);
1243
1379
 
1244
1380
  class BitUtils {
1245
1381
  static IsShortDescription(bit) {
@@ -1259,20 +1395,15 @@ class BitUtils {
1259
1395
  }
1260
1396
  }
1261
1397
 
1262
- let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1263
- constructor(_sanitizer, _moduleService, _changeDetector) {
1264
- this._sanitizer = _sanitizer;
1265
- this._moduleService = _moduleService;
1266
- this._changeDetector = _changeDetector;
1267
- this.showLabel = false;
1268
- this.textParts = [];
1398
+ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1399
+ constructor(_appEventService) {
1400
+ this._appEventService = _appEventService;
1269
1401
  }
1270
1402
  set article(value) {
1271
- if (value) {
1272
- this._article = value;
1273
- this._buildInfo().then(() => {
1274
- this._changeDetector.detectChanges();
1275
- });
1403
+ this._article = value;
1404
+ if (this._article) {
1405
+ this.description = this.article.additionalDescription;
1406
+ this._prepareDescription();
1276
1407
  }
1277
1408
  }
1278
1409
  get article() {
@@ -1280,266 +1411,47 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1280
1411
  }
1281
1412
  ngOnInit() {
1282
1413
  }
1283
- _getTextsSuperArticle() {
1284
- return new Promise((resolve, reject) => {
1285
- const texts = [];
1286
- if (this.article.superArticleNr) {
1287
- this._moduleService.getArticle(this.article.superArticleNr).then((mainArticle) => {
1288
- mainArticle.texts.forEach((txt) => {
1289
- if (BitUtils.IsFullDescription(txt.publication)) {
1290
- const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1291
- texts.push(safeTxt);
1292
- }
1293
- });
1294
- resolve(texts);
1295
- }).catch(() => {
1296
- resolve([]);
1297
- });
1298
- }
1299
- else {
1300
- resolve(texts);
1301
- }
1302
- });
1303
- }
1304
- _prepareArticleTexts() {
1305
- return __awaiter(this, void 0, void 0, function* () {
1306
- const texts = yield this._getTextsSuperArticle();
1307
- if (texts.length > 0) {
1308
- this.textParts.push(...texts);
1309
- }
1310
- if (this.article.texts) {
1311
- this.article.texts.forEach((txt) => {
1312
- if (BitUtils.IsFullDescription(txt.publication)) {
1313
- const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1314
- this.textParts.push(safeTxt);
1315
- }
1316
- });
1317
- }
1318
- });
1414
+ onReadMore() {
1415
+ this._appEventService.onUpdateProductInfoTab.next(0);
1319
1416
  }
1320
- _buildInfo() {
1321
- return __awaiter(this, void 0, void 0, function* () {
1322
- this.textParts.length = 0;
1323
- yield this._prepareArticleTexts();
1324
- if (this.textParts.length === 0) {
1325
- if (this.article.additionalDescription) {
1326
- this.textParts.push(this.article.additionalDescription);
1327
- }
1328
- else if (this.article.description) {
1329
- 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;
1330
1423
  }
1424
+ });
1425
+ this.description = this.description.replace(/<[^>]*>?/gm, '');
1426
+ if (this.description.length > 250) {
1427
+ this.description = this.description.substr(0, 250) + ' [..]';
1331
1428
  }
1332
- return;
1333
- });
1429
+ }
1334
1430
  }
1335
1431
  };
1336
- ProductAdditionalInfoComponent.ctorParameters = () => [
1337
- { type: DomSanitizer },
1338
- { type: ProductModuleService },
1339
- { type: ChangeDetectorRef }
1432
+ ProductAdditionalDescriptionComponent.ctorParameters = () => [
1433
+ { type: ProductEventService }
1340
1434
  ];
1341
1435
  __decorate([
1342
1436
  Input()
1343
- ], ProductAdditionalInfoComponent.prototype, "article", null);
1344
- __decorate([
1345
- Input()
1346
- ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
1347
- ProductAdditionalInfoComponent = __decorate([
1437
+ ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1438
+ ProductAdditionalDescriptionComponent = __decorate([
1348
1439
  Component({
1349
- selector: 'app-product-additional-info',
1350
- 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",
1351
- 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}}"]
1352
1443
  })
1353
- ], ProductAdditionalInfoComponent);
1444
+ ], ProductAdditionalDescriptionComponent);
1354
1445
 
1355
- const propertyMap = new Map([
1356
- ['articleNr', 'ARTICLE_NUMBER'],
1357
- ['catExtra', 'CATEGORY'],
1358
- ['catType', 'CATEGORY_TYPE'],
1359
- ['description', 'DESCRIPTION'],
1360
- ['material', 'MATERIAL'],
1361
- ['title', 'TITLE'],
1362
- ['turnOverGroup', 'TURNOVERGROUP'],
1363
- ['height', 'HEIGHT'],
1364
- ['width', 'WIDTH']
1365
- ]);
1366
- let ProductPropertiesComponent = class ProductPropertiesComponent {
1367
- constructor() {
1368
- this.showLabel = false;
1369
- this.properties = [];
1446
+ let ProductPriceComponent = class ProductPriceComponent {
1447
+ constructor(_changeDetector) {
1448
+ this._changeDetector = _changeDetector;
1449
+ this.showFromPrice = false;
1450
+ this._configurable = false;
1370
1451
  }
1371
- set article(value) {
1372
- this._article = value;
1373
- this._prepareProperties();
1374
- }
1375
- get article() {
1376
- return this._article;
1377
- }
1378
- ngOnInit() {
1379
- }
1380
- _prepareProperties() {
1381
- this.properties.length = 0;
1382
- if (!this._article) {
1383
- return;
1384
- }
1385
- propertyMap.forEach((value, key) => {
1386
- if (this.article.hasOwnProperty(key)) {
1387
- this.properties.push({ key: value, value: this.article[key] });
1388
- }
1389
- });
1390
- }
1391
- };
1392
- __decorate([
1393
- Input()
1394
- ], ProductPropertiesComponent.prototype, "article", null);
1395
- __decorate([
1396
- Input()
1397
- ], ProductPropertiesComponent.prototype, "showLabel", void 0);
1398
- ProductPropertiesComponent = __decorate([
1399
- Component({
1400
- selector: 'app-product-properties',
1401
- 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",
1402
- 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}}"]
1403
- })
1404
- ], ProductPropertiesComponent);
1405
-
1406
- let LocalizePipe =
1407
- // A pipe for localizing string values in view templates.
1408
- class LocalizePipe {
1409
- constructor(_dictionaryService) {
1410
- this._dictionaryService = _dictionaryService;
1411
- }
1412
- transform(value, upperCaseFirst = true, replace = []) {
1413
- if (!value) {
1414
- return '';
1415
- }
1416
- replace = replace ? replace : [];
1417
- if (!Array.isArray(replace)) {
1418
- replace = [replace];
1419
- }
1420
- return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1421
- }
1422
- };
1423
- LocalizePipe.ctorParameters = () => [
1424
- { type: DictionaryService }
1425
- ];
1426
- LocalizePipe = __decorate([
1427
- Pipe({
1428
- name: 'localize'
1429
- })
1430
- // A pipe for localizing string values in view templates.
1431
- ], LocalizePipe);
1432
-
1433
- let ProductDeliveryComponent = class ProductDeliveryComponent {
1434
- constructor(_localizePipe, _iOne, _iconCache) {
1435
- this._localizePipe = _localizePipe;
1436
- this._iOne = _iOne;
1437
- this._iconCache = _iconCache;
1438
- this.icon = IconEnum;
1439
- this.iconData = this._iconCache.getIcon(this.icon.Truck);
1440
- }
1441
- set stockAndDelivery(value) {
1442
- if (value) {
1443
- this.deliveryDescription = value.deliveryDescription;
1444
- if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {
1445
- this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');
1446
- }
1447
- }
1448
- }
1449
- ngOnInit() {
1450
- }
1451
- };
1452
- ProductDeliveryComponent.ctorParameters = () => [
1453
- { type: LocalizePipe },
1454
- { type: ProductConnectorService },
1455
- { type: IconCacheService }
1456
- ];
1457
- __decorate([
1458
- Input()
1459
- ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1460
- ProductDeliveryComponent = __decorate([
1461
- Component({
1462
- selector: 'app-product-delivery',
1463
- 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",
1464
- providers: [LocalizePipe],
1465
- 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}}"]
1466
- })
1467
- ], ProductDeliveryComponent);
1468
-
1469
- let ProductStockComponent = class ProductStockComponent {
1470
- constructor(_iOne, _iconCache) {
1471
- this._iOne = _iOne;
1472
- this._iconCache = _iconCache;
1473
- this.icon = IconEnum;
1474
- this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1475
- }
1476
- set stockAndDelivery(value) {
1477
- if (value) {
1478
- this.numberInStock = value.stock;
1479
- }
1480
- }
1481
- ngOnInit() {
1482
- }
1483
- };
1484
- ProductStockComponent.ctorParameters = () => [
1485
- { type: ProductConnectorService },
1486
- { type: IconCacheService }
1487
- ];
1488
- __decorate([
1489
- Input()
1490
- ], ProductStockComponent.prototype, "stockAndDelivery", null);
1491
- ProductStockComponent = __decorate([
1492
- Component({
1493
- selector: 'app-product-stock',
1494
- 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",
1495
- 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}}"]
1496
- })
1497
- ], ProductStockComponent);
1498
-
1499
- let ProductSymbolsComponent = class ProductSymbolsComponent {
1500
- constructor() {
1501
- this.symbolStrings = [];
1502
- }
1503
- set symbols(value) {
1504
- this._symbols = value;
1505
- if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {
1506
- this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');
1507
- }
1508
- if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {
1509
- for (let i = 0; i < this._symbols['symbolString'].length; i++) {
1510
- this.symbolStrings.push(this._symbols['symbolString'][i]);
1511
- }
1512
- }
1513
- }
1514
- get symbols() {
1515
- return this._symbols;
1516
- }
1517
- ngOnInit() {
1518
- }
1519
- };
1520
- __decorate([
1521
- Input()
1522
- ], ProductSymbolsComponent.prototype, "symbols", null);
1523
- __decorate([
1524
- HostBinding('class')
1525
- ], ProductSymbolsComponent.prototype, "_className", void 0);
1526
- ProductSymbolsComponent = __decorate([
1527
- Component({
1528
- selector: 'app-product-symbols',
1529
- 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",
1530
- styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
1531
- })
1532
- ], ProductSymbolsComponent);
1533
-
1534
- let ProductPriceComponent = class ProductPriceComponent {
1535
- constructor(_changeDetector) {
1536
- this._changeDetector = _changeDetector;
1537
- this.showFromPrice = false;
1538
- this._configurable = false;
1539
- }
1540
- set pricing(value) {
1541
- this._pricing = value;
1542
- this._setPrices();
1452
+ set pricing(value) {
1453
+ this._pricing = value;
1454
+ this._setPrices();
1543
1455
  }
1544
1456
  get pricing() {
1545
1457
  return this._pricing;
@@ -1639,7 +1551,7 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
1639
1551
  configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';
1640
1552
  configuratorStatistics.webHost = window.location.host;
1641
1553
  configuratorStatistics.bundleHost = window.location.host;
1642
- 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);
1643
1555
  });
1644
1556
  }
1645
1557
  };
@@ -1685,351 +1597,585 @@ ProductAddtocartComponent = __decorate([
1685
1597
  })
1686
1598
  ], ProductAddtocartComponent);
1687
1599
 
1688
- let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1689
- constructor(_iconCache, _changeDetector) {
1690
- this._iconCache = _iconCache;
1691
- this._changeDetector = _changeDetector;
1692
- this.type = SelectorType;
1693
- this.icons = IconEnum;
1694
- this.onIconClick = new EventEmitter();
1695
- this.currentTypeChange = new EventEmitter();
1696
- this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);
1697
- 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 = [];
1698
1606
  }
1699
- 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
+ }
1700
1623
  }
1701
- handleIconClick(type) {
1702
- this.currentType = type;
1703
- this.currentTypeChange.next(this.currentType);
1704
- this.onIconClick.next(this.currentType);
1705
- 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
+ });
1706
1640
  }
1707
1641
  };
1708
- ProductSelectorTypeComponent.ctorParameters = () => [
1709
- { type: IconCacheService },
1710
- { type: ChangeDetectorRef }
1642
+ ProductRelatedComponent.ctorParameters = () => [
1643
+ { type: ProductConnectorService },
1644
+ { type: ProductEventService }
1711
1645
  ];
1712
1646
  __decorate([
1713
1647
  Input()
1714
- ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1648
+ ], ProductRelatedComponent.prototype, "refType", void 0);
1715
1649
  __decorate([
1716
1650
  Input()
1717
- ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1651
+ ], ProductRelatedComponent.prototype, "label", void 0);
1718
1652
  __decorate([
1719
1653
  Input()
1720
- ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1721
- __decorate([
1722
- Output()
1723
- ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1654
+ ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1724
1655
  __decorate([
1725
- Output()
1726
- ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1727
- ProductSelectorTypeComponent = __decorate([
1656
+ Input()
1657
+ ], ProductRelatedComponent.prototype, "articles", null);
1658
+ ProductRelatedComponent = __decorate([
1728
1659
  Component({
1729
- selector: 'app-product-selector-type',
1730
- 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",
1731
- 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}"]
1732
1663
  })
1733
- ], ProductSelectorTypeComponent);
1664
+ ], ProductRelatedComponent);
1734
1665
 
1735
- let IoneProductComponent = class IoneProductComponent {
1736
- constructor(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
1737
- // this.sku = 'CF-HILL';
1738
- // this.sku = 'CF-ALMADA';
1739
- // this.sku = 'CF-39904ANT';
1740
- // this.sku = 'CF-22346001';
1741
- // this.sku = '104';
1742
- // this.sku = '1000561986';
1743
- // this.sku = '1000234793';
1744
- // this.sku = '1066';
1745
- // this.sku = '104';
1746
- this._dictionary = _dictionary;
1747
- this._jsonUtils = _jsonUtils;
1748
- this._ione = _ione;
1749
- this._changeDetector = _changeDetector;
1750
- this._appEventService = _appEventService;
1751
- this._settingsService = _settingsService;
1752
- this.onAddToCart = new EventEmitter();
1753
- this.forceRenderImage = new EventEmitter();
1754
- this.onAlternativeClick = new EventEmitter();
1755
- this.onArticleInfoReceived = new EventEmitter();
1756
- this.onArticleReceived = new EventEmitter();
1757
- this.onSelectionsReceived = new EventEmitter();
1758
- this.onAddToQuote = new EventEmitter();
1759
- this.upAndLoaded = false;
1760
- this._subs = [];
1761
- this._subs.push(this._settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),
1762
- // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
1763
- 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);
1764
1672
  }
1765
- set settings(value) {
1673
+ set stockAndDelivery(value) {
1766
1674
  if (value) {
1767
- let settings;
1768
- if (typeof value === 'string') {
1769
- settings = JSON.parse(value);
1770
- }
1771
- else {
1772
- 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');
1773
1736
  }
1774
- this._settingsService.createSettingsFromObject(settings);
1775
- // this._initConnection(settings);
1776
1737
  }
1777
1738
  }
1778
- get settings() {
1779
- return this._settings;
1739
+ ngOnInit() {
1780
1740
  }
1781
- ngOnChanges(changes) {
1782
- 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
+ }
1783
1775
  }
1784
1776
  ngOnDestroy() {
1785
1777
  this._subs.forEach(s => s.unsubscribe());
1786
1778
  }
1787
- _handleSettingsLoaded(loaded) {
1788
- if (loaded) {
1789
- this.upAndLoaded = true;
1790
- 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
+ }
1791
1788
  }
1792
1789
  }
1793
- _handleAnswerInfoReceived(info) {
1794
- 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
+ }
1795
1799
  }
1796
- // we need to prepare the settings before we can use it for the 3d configurator bundle
1797
- _initConnection() {
1798
- return __awaiter(this, void 0, void 0, function* () {
1799
- this._ione.initDefaultDevelopTestConnection();
1800
- // settingsToUse.session = this._ione.connector.connector.session;
1801
- 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(() => {
1802
1925
  this._changeDetector.detectChanges();
1803
1926
  });
1804
- // 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;
1805
1990
  });
1806
1991
  }
1807
1992
  };
1808
- IoneProductComponent.ctorParameters = () => [
1809
- { type: DictionaryService },
1810
- { type: JsonUtilsService },
1993
+ ProductAdditionalInfoComponent.ctorParameters = () => [
1994
+ { type: DomSanitizer },
1811
1995
  { type: ProductConnectorService },
1812
- { type: ChangeDetectorRef },
1813
- { type: ProductEventService },
1814
- { type: ProductSettingsService }
1996
+ { type: ChangeDetectorRef }
1815
1997
  ];
1816
1998
  __decorate([
1817
1999
  Input()
1818
- ], IoneProductComponent.prototype, "sku", void 0);
2000
+ ], ProductAdditionalInfoComponent.prototype, "article", null);
1819
2001
  __decorate([
1820
2002
  Input()
1821
- ], IoneProductComponent.prototype, "settings", null);
1822
- __decorate([
1823
- Output()
1824
- ], IoneProductComponent.prototype, "onAddToCart", void 0);
1825
- __decorate([
1826
- Output()
1827
- ], IoneProductComponent.prototype, "forceRenderImage", void 0);
1828
- __decorate([
1829
- Output()
1830
- ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
1831
- __decorate([
1832
- Output()
1833
- ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
1834
- __decorate([
1835
- Output()
1836
- ], IoneProductComponent.prototype, "onArticleReceived", void 0);
1837
- __decorate([
1838
- Output()
1839
- ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
1840
- __decorate([
1841
- Output()
1842
- ], IoneProductComponent.prototype, "onAddToQuote", void 0);
1843
- IoneProductComponent = __decorate([
2003
+ ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
2004
+ ProductAdditionalInfoComponent = __decorate([
1844
2005
  Component({
1845
- selector: 'app-ione-product',
1846
- template: "<app-product-page *ngIf=\"upAndLoaded\" [sku]=\"sku\"\n></app-product-page>\n",
1847
- encapsulation: ViewEncapsulation.Emulated,
1848
- 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}"]
1849
2009
  })
1850
- ], IoneProductComponent);
2010
+ ], ProductAdditionalInfoComponent);
1851
2011
 
1852
- let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1853
- constructor(_appEventService) {
1854
- 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 = [];
1855
2027
  }
1856
2028
  set article(value) {
1857
2029
  this._article = value;
1858
- if (this._article) {
1859
- this.description = this.article.additionalDescription;
1860
- this._prepareDescription();
1861
- }
2030
+ this._prepareProperties();
1862
2031
  }
1863
2032
  get article() {
1864
2033
  return this._article;
1865
2034
  }
1866
2035
  ngOnInit() {
1867
2036
  }
1868
- onReadMore() {
1869
- this._appEventService.onUpdateProductInfoTab.next(0);
1870
- }
1871
- _prepareDescription() {
1872
- this.description = '';
1873
- if (this.article.texts && this.article.texts.length > 0) {
1874
- this.article.texts.forEach((txt) => {
1875
- if (BitUtils.IsShortDescription(txt.publication)) {
1876
- this.description += txt.text;
1877
- }
1878
- });
1879
- this.description = this.description.replace(/<[^>]*>?/gm, '');
1880
- if (this.description.length > 250) {
1881
- this.description = this.description.substr(0, 250) + ' [..]';
1882
- }
2037
+ _prepareProperties() {
2038
+ this.properties.length = 0;
2039
+ if (!this._article) {
2040
+ return;
1883
2041
  }
2042
+ propertyMap.forEach((value, key) => {
2043
+ if (this.article.hasOwnProperty(key)) {
2044
+ this.properties.push({ key: value, value: this.article[key] });
2045
+ }
2046
+ });
1884
2047
  }
1885
2048
  };
1886
- ProductAdditionalDescriptionComponent.ctorParameters = () => [
1887
- { type: ProductEventService }
1888
- ];
1889
2049
  __decorate([
1890
2050
  Input()
1891
- ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1892
- ProductAdditionalDescriptionComponent = __decorate([
2051
+ ], ProductPropertiesComponent.prototype, "article", null);
2052
+ __decorate([
2053
+ Input()
2054
+ ], ProductPropertiesComponent.prototype, "showLabel", void 0);
2055
+ ProductPropertiesComponent = __decorate([
1893
2056
  Component({
1894
- selector: 'app-product-additional-description',
1895
- 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",
1896
- 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}}"]
1897
2060
  })
1898
- ], ProductAdditionalDescriptionComponent);
2061
+ ], ProductPropertiesComponent);
1899
2062
 
1900
- let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1901
- constructor(_appEventService) {
1902
- this._appEventService = _appEventService;
1903
- this.activeTabHeight = 0;
1904
- this.tabs = [];
1905
- this._subs = [];
1906
- this._subs.push(this._appEventService.onUpdateProductInfoTab.subscribe((index) => {
1907
- this.updateTab(index);
1908
- this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });
1909
- }));
2063
+ let ProductSymbolsComponent = class ProductSymbolsComponent {
2064
+ constructor() {
2065
+ this.symbolStrings = [];
1910
2066
  }
1911
- set article(value) {
1912
- if (value) {
1913
- this.articleObject = value;
1914
- this._setupTabs();
1915
- 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' : '');
1916
2071
  }
1917
- }
1918
- ngOnDestroy() {
1919
- this._subs.forEach(s => s.unsubscribe());
1920
- }
1921
- updateTab(tabIndex) {
1922
- this.activeTab = tabIndex;
1923
- this.updateHeight(tabIndex);
1924
- }
1925
- updateHeight(tabIndex) {
1926
- if (this.tabContent.nativeElement.children.length > 0) {
1927
- if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
1928
- 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]);
1929
2075
  }
1930
2076
  }
1931
2077
  }
1932
- _setupTabs() {
1933
- this.tabs.push({ title: 'DESCRIPTION' });
1934
- this.tabs.push({ title: 'FEATURES' });
1935
- if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {
1936
- this.tabs.push({ title: 'DOWNLOADS' });
1937
- }
1938
- if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {
1939
- this.tabs.push({ title: 'SYMBOLS' });
1940
- }
2078
+ get symbols() {
2079
+ return this._symbols;
2080
+ }
2081
+ ngOnInit() {
1941
2082
  }
1942
2083
  };
1943
- ProductInfoTabsComponent.ctorParameters = () => [
1944
- { type: ProductEventService }
1945
- ];
1946
- __decorate([
1947
- ViewChild('tabContent')
1948
- ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1949
2084
  __decorate([
1950
2085
  Input()
1951
- ], ProductInfoTabsComponent.prototype, "article", null);
1952
- ProductInfoTabsComponent = __decorate([
2086
+ ], ProductSymbolsComponent.prototype, "symbols", null);
2087
+ __decorate([
2088
+ HostBinding('class')
2089
+ ], ProductSymbolsComponent.prototype, "_className", void 0);
2090
+ ProductSymbolsComponent = __decorate([
1953
2091
  Component({
1954
- selector: 'app-product-info-tabs',
1955
- 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",
1956
- 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}}"]
1957
- })
1958
- ], ProductInfoTabsComponent);
1959
-
1960
- let ProductInitializerService = class ProductInitializerService {
1961
- constructor(_settingsService) {
1962
- this._settingsService = _settingsService;
1963
- }
1964
- initializeApp() {
1965
- return __awaiter(this, void 0, void 0, function* () {
1966
- return this._settingsService.initializeSettings();
1967
- });
1968
- }
1969
- };
1970
- ProductInitializerService.ctorParameters = () => [
1971
- { type: ProductSettingsService }
1972
- ];
1973
- ProductInitializerService.ɵprov = ɵɵdefineInjectable({ factory: function ProductInitializerService_Factory() { return new ProductInitializerService(ɵɵinject(ProductSettingsService)); }, token: ProductInitializerService, providedIn: "root" });
1974
- ProductInitializerService = __decorate([
1975
- Injectable({
1976
- 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}"]
1977
2095
  })
1978
- ], ProductInitializerService);
2096
+ ], ProductSymbolsComponent);
1979
2097
 
1980
- function initializeApp(context) {
1981
- const x = () => context.initializeApp();
1982
- return x;
1983
- }
1984
- let IoneProductModule = class IoneProductModule {
2098
+ let ProductPageModule = class ProductPageModule {
1985
2099
  };
1986
- IoneProductModule = __decorate([
2100
+ ProductPageModule = __decorate([
1987
2101
  NgModule({
1988
2102
  imports: [
1989
- // BrowserAnimationsModule,
1990
2103
  CommonModule,
1991
- ButtonModule,
1992
2104
  IconModule,
2105
+ LoaderModule,
2106
+ PipeModule,
1993
2107
  NumberPickerModule,
2108
+ ButtonModule,
2109
+ PriceDisplayPipeModule,
1994
2110
  InputTextModule,
1995
2111
  FilesUploadModule,
1996
- LoaderModule,
1997
2112
  ScrollContainerModule,
1998
2113
  TileModule,
1999
2114
  LevelIndicatorModule,
2000
- PriceDisplayPipeModule,
2001
- ArticleTileModule
2115
+ ArticleTileModule,
2002
2116
  ],
2003
2117
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
2004
2118
  declarations: [
2005
- IoneProductComponent,
2006
2119
  ProductPageComponent,
2120
+ ProductSelectorTypeComponent,
2007
2121
  ImageCarouselComponent,
2008
2122
  ProductDescriptionComponent,
2009
- ProductDocumentsComponent,
2123
+ ProductAdditionalDescriptionComponent,
2124
+ ProductPriceComponent,
2125
+ ProductAddtocartComponent,
2010
2126
  ProductRelatedComponent,
2127
+ ProductStockComponent,
2128
+ ProductDeliveryComponent,
2129
+ ProductInfoTabsComponent,
2130
+ ProductDocumentsComponent,
2011
2131
  HeaderComponent,
2012
2132
  ProductInfoComponent,
2013
2133
  ProductAdditionalInfoComponent,
2014
2134
  ProductPropertiesComponent,
2015
- ProductDeliveryComponent,
2016
- ProductStockComponent,
2017
- ProductSymbolsComponent,
2018
- ProductPriceComponent,
2019
- ProductAddtocartComponent,
2020
- ProductInfoTabsComponent,
2021
- LocalizePipe,
2022
- ProductSelectorTypeComponent,
2023
- 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
2024
2174
  ],
2025
2175
  entryComponents: [
2026
2176
  IoneProductComponent
2027
2177
  ],
2028
2178
  providers: [
2029
- ProductSettingsService,
2030
- ProductConnectorService,
2031
- ProductConnectorAdapterService,
2032
- IconCacheService,
2033
2179
  {
2034
2180
  provide: APP_INITIALIZER,
2035
2181
  useFactory: initializeApp,
@@ -2048,5 +2194,5 @@ IoneProductModule = __decorate([
2048
2194
  * Generated bundle index. Do not edit.
2049
2195
  */
2050
2196
 
2051
- 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 };
2052
2198
  //# sourceMappingURL=colijnit-product.js.map