@colijnit/product 1.9.5 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) 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 +5 -5
  7. package/app/ione-product.module.d.ts +0 -2
  8. package/app/model/{settings.d.ts → productSettings.d.ts} +3 -2
  9. package/app/pipe/pipe.module.d.ts +2 -0
  10. package/app/service/product-connector-adapter.service.d.ts +8 -2
  11. package/app/service/product-connector.service.d.ts +10 -5
  12. package/app/service/product-settings.service.d.ts +3 -3
  13. package/bundles/colijnit-product.umd.js +1469 -1258
  14. package/bundles/colijnit-product.umd.js.map +1 -1
  15. package/bundles/colijnit-product.umd.min.js +2 -2
  16. package/bundles/colijnit-product.umd.min.js.map +1 -1
  17. package/colijnit-product.d.ts +28 -28
  18. package/colijnit-product.metadata.json +1 -1
  19. package/esm2015/app/components/product-additional-info/product-additional-info.component.js +23 -16
  20. package/esm2015/app/components/product-addtocart/product-addtocart.component.js +2 -2
  21. package/esm2015/app/components/product-delivery/product-delivery.component.js +1 -2
  22. package/esm2015/app/components/product-external-source/product-external-source.component.js +123 -0
  23. package/esm2015/app/components/product-external-source/product-external-source.module.js +23 -0
  24. package/esm2015/app/components/product-page/product-page.component.js +45 -15
  25. package/esm2015/app/components/product-page/product-page.module.js +66 -0
  26. package/esm2015/app/ione-product.component.js +53 -20
  27. package/esm2015/app/ione-product.module.js +9 -74
  28. package/esm2015/app/model/productSettings.js +16 -0
  29. package/esm2015/app/pipe/pipe.module.js +20 -0
  30. package/esm2015/app/product-version.js +3 -3
  31. package/esm2015/app/service/dictionary.service.js +1 -1
  32. package/esm2015/app/service/product-connector-adapter.service.js +34 -9
  33. package/esm2015/app/service/product-connector.service.js +33 -35
  34. package/esm2015/app/service/product-event.service.js +2 -6
  35. package/esm2015/app/service/product-settings.service.js +13 -74
  36. package/esm2015/colijnit-product.js +29 -29
  37. package/esm2015/public_api.js +3 -1
  38. package/esm5/app/components/product-additional-info/product-additional-info.component.js +43 -24
  39. package/esm5/app/components/product-addtocart/product-addtocart.component.js +2 -2
  40. package/esm5/app/components/product-delivery/product-delivery.component.js +1 -2
  41. package/esm5/app/components/product-external-source/product-external-source.component.js +126 -0
  42. package/esm5/app/components/product-external-source/product-external-source.module.js +26 -0
  43. package/esm5/app/components/product-page/product-page.component.js +49 -15
  44. package/esm5/app/components/product-page/product-page.module.js +69 -0
  45. package/esm5/app/ione-product.component.js +81 -21
  46. package/esm5/app/ione-product.module.js +9 -74
  47. package/esm5/app/model/productSettings.js +18 -0
  48. package/esm5/app/pipe/pipe.module.js +23 -0
  49. package/esm5/app/product-version.js +3 -3
  50. package/esm5/app/service/dictionary.service.js +1 -1
  51. package/esm5/app/service/product-connector-adapter.service.js +61 -10
  52. package/esm5/app/service/product-connector.service.js +65 -52
  53. package/esm5/app/service/product-event.service.js +2 -6
  54. package/esm5/app/service/product-settings.service.js +14 -74
  55. package/esm5/colijnit-product.js +29 -29
  56. package/esm5/public_api.js +3 -1
  57. package/fesm2015/colijnit-product.js +1185 -1056
  58. package/fesm2015/colijnit-product.js.map +1 -1
  59. package/fesm5/colijnit-product.js +1442 -1230
  60. package/fesm5/colijnit-product.js.map +1 -1
  61. package/package.json +5 -4
  62. package/public_api.d.ts +2 -0
  63. package/app/service/product-initializer.service.d.ts +0 -6
  64. package/app/service/product-module.service.d.ts +0 -9
  65. package/esm2015/app/model/settings.js +0 -15
  66. package/esm2015/app/service/product-initializer.service.js +0 -26
  67. package/esm2015/app/service/product-module.service.js +0 -39
  68. package/esm5/app/model/settings.js +0 -17
  69. package/esm5/app/service/product-initializer.service.js +0 -29
  70. 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 } 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.1";
28
+ this.publishDate = "14-9-2023 16:32:35";
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,272 @@ __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();
630
+ this.settingsLoaded = false;
740
631
  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);
632
+ // this.sku = "70000107";
633
+ this._subs.push(
634
+ // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
635
+ this._appEventService.onAddToCart.subscribe((json) => {
636
+ this._handleAddToCart(json);
637
+ }), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)), this._settingsService.settingsLoaded.subscribe(loaded => {
638
+ this.settingsLoaded = loaded;
639
+ }));
640
+ }
641
+ set settings(value) {
642
+ if (value) {
643
+ let settings;
644
+ if (typeof value === 'string') {
645
+ settings = JSON.parse(value);
746
646
  }
747
647
  else {
748
- this._images[0] = url;
648
+ settings = value;
749
649
  }
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();
650
+ this._settingsService.createSettingsFromObject(settings);
651
+ // this._initConnection(settings);
758
652
  }
759
653
  }
760
- handleWindowResize() {
761
- this.resizing = true;
762
- this._scrollCarouselToIndex();
763
- clearTimeout(this._resizeTimer);
764
- this._resizeTimer = setTimeout(() => {
765
- this.resizing = false;
766
- }, 200);
654
+ get settings() {
655
+ return this._settings;
767
656
  }
768
- gotoNextSlide() {
769
- this.currentIndex++;
657
+ ngOnInit() {
658
+ return __awaiter(this, void 0, void 0, function* () {
659
+ yield this._settingsService.initializeSettings();
660
+ });
770
661
  }
771
- gotoPrevSlide() {
772
- this.currentIndex--;
662
+ ngOnChanges(changes) {
663
+ this._changeDetector.detectChanges();
773
664
  }
774
- isCurrentIndex(index) {
775
- return this.currentIndex === index;
665
+ ngOnDestroy() {
666
+ this._subs.forEach(s => s.unsubscribe());
776
667
  }
777
- get currentIndex() {
778
- return this._currentIndex;
668
+ _handleAnswerInfoReceived(info) {
669
+ this.onArticleInfoReceived.next(info);
779
670
  }
780
- set currentIndex(value) {
781
- this._currentIndex = value;
782
- this._scrollCarouselToIndex();
671
+ _handleAddToCart(json) {
672
+ return __awaiter(this, void 0, void 0, function* () {
673
+ if (this._settingsService.settings.createWebOrder) {
674
+ if (json) {
675
+ const articleTreeData = JSON.parse(json);
676
+ if (articleTreeData.articleTree && articleTreeData.articleTree.article) {
677
+ if (articleTreeData.articleTree.compositeGoods && Array.isArray(articleTreeData.articleTree.compositeGoods) &&
678
+ articleTreeData.articleTree.compositeGoods.length > 0 &&
679
+ articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {
680
+ const compositeGoods = articleTreeData.articleTree.compositeGoods;
681
+ compositeGoods.sort((a, b) => a.versionNumber < b.versionNumber ? -1 : 1);
682
+ for (let i = 0; i < compositeGoods.length; i++) {
683
+ const good = compositeGoods[i];
684
+ const subArticle = articleTreeData.articleTree.subArticles.find(s => s.goodId === good.memberGoodId);
685
+ if (subArticle) {
686
+ yield this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);
687
+ }
688
+ }
689
+ }
690
+ else {
691
+ yield this._ione.addWebSessionTransactionLine(articleTreeData.articleTree.article.articleNumber, 1);
692
+ }
693
+ }
694
+ }
695
+ }
696
+ this.onAddToCart.emit(json);
697
+ });
783
698
  }
784
- get images() {
785
- return this._images;
699
+ };
700
+ IoneProductComponent.ctorParameters = () => [
701
+ { type: DictionaryService },
702
+ { type: JsonUtilsService },
703
+ { type: ProductConnectorService },
704
+ { type: ChangeDetectorRef },
705
+ { type: ProductEventService },
706
+ { type: ProductSettingsService }
707
+ ];
708
+ __decorate([
709
+ Input()
710
+ ], IoneProductComponent.prototype, "sku", void 0);
711
+ __decorate([
712
+ Input()
713
+ ], IoneProductComponent.prototype, "settings", null);
714
+ __decorate([
715
+ Output()
716
+ ], IoneProductComponent.prototype, "onAddToCart", void 0);
717
+ __decorate([
718
+ Output()
719
+ ], IoneProductComponent.prototype, "forceRenderImage", void 0);
720
+ __decorate([
721
+ Output()
722
+ ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
723
+ __decorate([
724
+ Output()
725
+ ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
726
+ __decorate([
727
+ Output()
728
+ ], IoneProductComponent.prototype, "onArticleReceived", void 0);
729
+ __decorate([
730
+ Output()
731
+ ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
732
+ __decorate([
733
+ Output()
734
+ ], IoneProductComponent.prototype, "onAddToQuote", void 0);
735
+ IoneProductComponent = __decorate([
736
+ Component({
737
+ selector: 'app-ione-product',
738
+ template: `
739
+ <app-product-page *ngIf="settingsLoaded"
740
+ [sku]="sku"
741
+ ></app-product-page>
742
+ `,
743
+ providers: [
744
+ ProductEventService,
745
+ ProductSettingsService,
746
+ ProductConnectorAdapterService,
747
+ ProductConnectorService
748
+ ],
749
+ encapsulation: ViewEncapsulation.Emulated,
750
+ styles: [""]
751
+ })
752
+ ], IoneProductComponent);
753
+
754
+ let ProductExternalSourceComponent = class ProductExternalSourceComponent {
755
+ constructor(_sanitizer, _productConnectorService, _appEventService) {
756
+ this._sanitizer = _sanitizer;
757
+ this._productConnectorService = _productConnectorService;
758
+ this._appEventService = _appEventService;
759
+ this.addToCart = new EventEmitter();
760
+ this.addToQuote = new EventEmitter();
761
+ this.alternativeClick = new EventEmitter();
762
+ this.showProduct = false;
763
+ this.loaded = false;
764
+ this.externalSettings = {};
765
+ this._subs = [];
766
+ }
767
+ set externalSource(value) {
768
+ this._externalSource = value;
769
+ this.loaded = false;
770
+ this._prepareExternalSource();
771
+ }
772
+ get externalSource() {
773
+ return this._externalSource;
774
+ }
775
+ showClass() {
776
+ return true;
786
777
  }
787
778
  ngOnInit() {
779
+ 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
780
  }
789
781
  ngOnDestroy() {
790
- this.carousel = undefined;
791
782
  this._subs.forEach(s => s.unsubscribe());
792
783
  }
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;
784
+ _prepareExternalSource() {
785
+ return __awaiter(this, void 0, void 0, function* () {
786
+ if (!this._externalSource) {
787
+ return;
807
788
  }
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
- });
789
+ this.externalUrl = undefined;
790
+ this.externalSettings = {};
791
+ if (this.externalSource.type === 'CATF') {
792
+ // get bundle settings from external source
793
+ const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
794
+ this.externalSettings = JSON.parse(bundleSettings);
795
+ if (this.options) {
796
+ this.externalSettings.options = this.options;
823
797
  }
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
- // });
798
+ // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
799
+ // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
800
+ if (this.externalSource.username && this.externalSource.password) {
801
+ this.externalSettings.useLoginEncryption = true;
802
+ this.externalSettings.username = this.externalSource.username;
803
+ this.externalSettings.password = this.externalSource.password;
804
+ }
805
+ // finally show the catalog
806
+ this.showProduct = true;
836
807
  }
837
- }
808
+ else {
809
+ this.externalUrl = this.externalSource.url;
810
+ this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
811
+ this.showProduct = false;
812
+ }
813
+ this.loaded = true;
814
+ });
838
815
  }
839
816
  };
840
- ImageCarouselComponent.ctorParameters = () => [
841
- { type: ProductConnectorService },
842
- { type: ProductEventService },
843
- { type: ChangeDetectorRef },
817
+ ProductExternalSourceComponent.ctorParameters = () => [
844
818
  { type: DomSanitizer },
845
- { type: IconCacheService }
819
+ { type: ProductConnectorService },
820
+ { type: ProductEventService }
846
821
  ];
847
822
  __decorate([
848
- ViewChild('carousel', { read: ElementRef })
849
- ], ImageCarouselComponent.prototype, "carousel", void 0);
823
+ Input()
824
+ ], ProductExternalSourceComponent.prototype, "sku", void 0);
850
825
  __decorate([
851
826
  Input()
852
- ], ImageCarouselComponent.prototype, "showRefresh", void 0);
827
+ ], ProductExternalSourceComponent.prototype, "externalSource", null);
853
828
  __decorate([
854
829
  Input()
855
- ], ImageCarouselComponent.prototype, "images", null);
830
+ ], ProductExternalSourceComponent.prototype, "options", void 0);
856
831
  __decorate([
857
- HostListener('window:resize')
858
- ], ImageCarouselComponent.prototype, "handleWindowResize", null);
832
+ Output()
833
+ ], ProductExternalSourceComponent.prototype, "addToCart", void 0);
859
834
  __decorate([
860
- HostListener('swipeleft')
861
- ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
835
+ Output()
836
+ ], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
862
837
  __decorate([
863
- HostListener('swiperight')
864
- ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
838
+ Output()
839
+ ], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
865
840
  __decorate([
866
- HostBinding('class.resizing')
867
- ], ImageCarouselComponent.prototype, "resizing", void 0);
868
- ImageCarouselComponent = __decorate([
841
+ HostBinding('class.co-product-external-source')
842
+ ], ProductExternalSourceComponent.prototype, "showClass", null);
843
+ ProductExternalSourceComponent = __decorate([
869
844
  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)}}"]
845
+ selector: 'co-product-external-source',
846
+ template: `
847
+ <ng-container *ngIf="loaded">
848
+ <ng-container *ngIf="showProduct">
849
+ <app-product-page
850
+ [sku]="sku"
851
+ [settings]="externalSettings"
852
+ ></app-product-page>
853
+ </ng-container>
854
+ <ng-container *ngIf="!showProduct">
855
+ <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
856
+ </ng-container>
857
+ </ng-container>
858
+ `,
859
+ providers: [
860
+ ProductEventService,
861
+ ProductSettingsService,
862
+ ProductConnectorAdapterService,
863
+ ProductConnectorService
864
+ ],
865
+ encapsulation: ViewEncapsulation.None
873
866
  })
874
- ], ImageCarouselComponent);
867
+ ], ProductExternalSourceComponent);
875
868
 
876
869
  class StockAndDelivery {
877
870
  constructor(stock, deliveryDescription) {
@@ -888,20 +881,92 @@ var SelectorType;
888
881
  SelectorType["Omni"] = "Omni";
889
882
  })(SelectorType || (SelectorType = {}));
890
883
 
891
- let ProductPageComponent = class ProductPageComponent {
892
- constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
893
- this._ione = _ione;
894
- this._renderer = _renderer;
895
- this._changeDetector = _changeDetector;
896
- this.iconCache = iconCache;
897
- this.settingsService = settingsService;
898
- this.appEventService = appEventService;
899
- this.icon = IconEnum;
900
- this.configurable = false;
901
- this.threeD = false;
902
- this.show2D = true;
903
- this.show3D = false;
904
- this.configuring = false;
884
+ /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
885
+ var IconEnum;
886
+ (function (IconEnum) {
887
+ IconEnum["AddToCartDrop"] = "add_to_cart_drop";
888
+ IconEnum["DeliveryTruck"] = "delivery_truck";
889
+ IconEnum["Download"] = "download";
890
+ IconEnum["FullScreen"] = "full_screen";
891
+ IconEnum["Location"] = "location";
892
+ IconEnum["Logo"] = "logo";
893
+ IconEnum["MagicWand"] = "magic_wand";
894
+ IconEnum["NormalScreen"] = "normal_screen";
895
+ IconEnum["Quote"] = "quote";
896
+ IconEnum["Refresh"] = "refresh";
897
+ IconEnum["ThreeD"] = "three_d";
898
+ IconEnum["Truck"] = "truck";
899
+ IconEnum["TwoD"] = "two_d";
900
+ IconEnum["Warehouse"] = "warehouse";
901
+ })(IconEnum || (IconEnum = {}));
902
+
903
+ /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
904
+ const IconSvg = {
905
+ "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>",
906
+ "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>",
907
+ "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>",
908
+ "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>",
909
+ "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>",
910
+ "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>",
911
+ "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>",
912
+ "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>",
913
+ "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>",
914
+ "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>",
915
+ "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>",
916
+ "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>",
917
+ "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>",
918
+ "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>"
919
+ };
920
+
921
+ let IconCacheService = class IconCacheService {
922
+ constructor(_sanitizer) {
923
+ this._sanitizer = _sanitizer;
924
+ this._iconCache = {};
925
+ this._allIcons = IconSvg;
926
+ this.setIconCache();
927
+ }
928
+ /**
929
+ * All the icons as a large JSON object, from the all-icons.json file.
930
+ * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
931
+ */
932
+ get iconCache() {
933
+ return this._iconCache;
934
+ }
935
+ getIcon(iconName) {
936
+ return this._iconCache[iconName.toLowerCase()];
937
+ }
938
+ setIconCache() {
939
+ for (const key in this._allIcons) {
940
+ if (this._allIcons.hasOwnProperty(key)) {
941
+ this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);
942
+ }
943
+ }
944
+ }
945
+ };
946
+ IconCacheService.ctorParameters = () => [
947
+ { type: DomSanitizer }
948
+ ];
949
+ IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
950
+ IconCacheService = __decorate([
951
+ Injectable({
952
+ providedIn: 'root'
953
+ })
954
+ ], IconCacheService);
955
+
956
+ let ProductPageComponent = class ProductPageComponent {
957
+ constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
958
+ this._ione = _ione;
959
+ this._renderer = _renderer;
960
+ this._changeDetector = _changeDetector;
961
+ this.iconCache = iconCache;
962
+ this.settingsService = settingsService;
963
+ this.appEventService = appEventService;
964
+ this.icon = IconEnum;
965
+ this.configurable = false;
966
+ this.threeD = false;
967
+ this.show2D = true;
968
+ this.show3D = false;
969
+ this.configuring = false;
905
970
  this.fullscreenAnimationEnd = false;
906
971
  this.settingsLoaded = false;
907
972
  this._fullScreen = false;
@@ -910,8 +975,8 @@ let ProductPageComponent = class ProductPageComponent {
910
975
  if (this.selections.nativeElement) {
911
976
  this.selections.nativeElement.forceRenderImage();
912
977
  }
913
- }), this.settingsService.settingsLoaded.subscribe((loaded) => {
914
- this.settingsLoaded = loaded;
978
+ }), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._ione.controllerInitialized.subscribe((initialized) => {
979
+ this.settingsLoaded = initialized;
915
980
  }));
916
981
  }
917
982
  set sku(value) {
@@ -929,6 +994,19 @@ let ProductPageComponent = class ProductPageComponent {
929
994
  get sku() {
930
995
  return this._sku;
931
996
  }
997
+ set settings(value) {
998
+ if (value) {
999
+ if (typeof value === 'string') {
1000
+ this._settings = JSON.parse(value);
1001
+ }
1002
+ else {
1003
+ this._settings = value;
1004
+ }
1005
+ }
1006
+ }
1007
+ get settings() {
1008
+ return this._settings;
1009
+ }
932
1010
  set fullScreen(value) {
933
1011
  this._fullScreen = value;
934
1012
  this.fullscreenAnimationEnd = true;
@@ -953,6 +1031,13 @@ let ProductPageComponent = class ProductPageComponent {
953
1031
  return this._currentView;
954
1032
  }
955
1033
  ngOnInit() {
1034
+ if (this._settings) {
1035
+ this.settingsService.settings = undefined;
1036
+ this.settingsService.createSettingsFromObject(this._settings);
1037
+ }
1038
+ else {
1039
+ this._settings = this.settingsService.settings;
1040
+ }
956
1041
  }
957
1042
  ngAfterViewInit() {
958
1043
  }
@@ -977,6 +1062,11 @@ let ProductPageComponent = class ProductPageComponent {
977
1062
  showFullScreen() {
978
1063
  this.fullScreen = !this.fullScreen;
979
1064
  }
1065
+ _handleSettingsLoaded(loaded) {
1066
+ if (loaded) {
1067
+ this._ione.initConnection();
1068
+ }
1069
+ }
980
1070
  _getArticle() {
981
1071
  return __awaiter(this, void 0, void 0, function* () {
982
1072
  if (this._initializedSub) {
@@ -986,18 +1076,20 @@ let ProductPageComponent = class ProductPageComponent {
986
1076
  if (init) {
987
1077
  this._ione.getFullArticle(this._sku).then((article) => {
988
1078
  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 : ' ');
1079
+ if (this.article) {
1080
+ this.configurable = this.article.goodType === 'B';
1081
+ if (this.configurable) {
1082
+ this.currentView = SelectorType.TwoD;
1083
+ }
1084
+ this.threeD = this.article.is3D;
1085
+ this.selectorType = this.article.selectorTypeCustomer;
1086
+ this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
1087
+ const stockAndDelivery = stockInfo;
1088
+ this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');
1089
+ this._changeDetector.detectChanges();
1090
+ });
998
1091
  this._changeDetector.detectChanges();
999
- });
1000
- this._changeDetector.detectChanges();
1092
+ }
1001
1093
  });
1002
1094
  }
1003
1095
  }));
@@ -1024,10 +1116,13 @@ __decorate([
1024
1116
  __decorate([
1025
1117
  Input()
1026
1118
  ], ProductPageComponent.prototype, "sku", null);
1119
+ __decorate([
1120
+ Input()
1121
+ ], ProductPageComponent.prototype, "settings", null);
1027
1122
  ProductPageComponent = __decorate([
1028
1123
  Component({
1029
1124
  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",
1125
+ 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
1126
  animations: [
1032
1127
  trigger('toggleFullScreen', [
1033
1128
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
@@ -1064,182 +1159,217 @@ ProductPageComponent = __decorate([
1064
1159
  })
1065
1160
  ], ProductPageComponent);
1066
1161
 
1067
- let ProductDocumentsComponent = class ProductDocumentsComponent {
1068
- constructor(iconCache) {
1069
- this.iconCache = iconCache;
1070
- this.icon = IconEnum;
1071
- this.showLabel = false;
1072
- this.documents = [];
1162
+ let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1163
+ constructor(_iconCache, _changeDetector) {
1164
+ this._iconCache = _iconCache;
1165
+ this._changeDetector = _changeDetector;
1166
+ this.type = SelectorType;
1167
+ this.icons = IconEnum;
1168
+ this.onIconClick = new EventEmitter();
1169
+ this.currentTypeChange = new EventEmitter();
1170
+ this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);
1171
+ this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);
1172
+ }
1173
+ ngOnInit() {
1174
+ }
1175
+ handleIconClick(type) {
1176
+ this.currentType = type;
1177
+ this.currentTypeChange.next(this.currentType);
1178
+ this.onIconClick.next(this.currentType);
1179
+ this._changeDetector.detectChanges();
1073
1180
  }
1074
1181
  };
1075
- ProductDocumentsComponent.ctorParameters = () => [
1076
- { type: IconCacheService }
1182
+ ProductSelectorTypeComponent.ctorParameters = () => [
1183
+ { type: IconCacheService },
1184
+ { type: ChangeDetectorRef }
1077
1185
  ];
1078
1186
  __decorate([
1079
1187
  Input()
1080
- ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1188
+ ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1081
1189
  __decorate([
1082
1190
  Input()
1083
- ], ProductDocumentsComponent.prototype, "documents", void 0);
1084
- ProductDocumentsComponent = __decorate([
1191
+ ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1192
+ __decorate([
1193
+ Input()
1194
+ ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1195
+ __decorate([
1196
+ Output()
1197
+ ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1198
+ __decorate([
1199
+ Output()
1200
+ ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1201
+ ProductSelectorTypeComponent = __decorate([
1085
1202
  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}"]
1203
+ selector: 'app-product-selector-type',
1204
+ 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",
1205
+ 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
1206
  })
1090
- ], ProductDocumentsComponent);
1207
+ ], ProductSelectorTypeComponent);
1091
1208
 
1092
- let ProductRelatedComponent = class ProductRelatedComponent {
1093
- constructor(_iOne, _appEventService) {
1094
- this._iOne = _iOne;
1209
+ let ImageCarouselComponent = class ImageCarouselComponent {
1210
+ constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
1211
+ this._ione = _ione;
1095
1212
  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
- }
1213
+ this._changeDetector = _changeDetector;
1214
+ this._domSanitizer = _domSanitizer;
1215
+ this.iconCache = iconCache;
1216
+ this.icons = IconEnum;
1217
+ this.showLoader = false;
1218
+ this.showRefresh = false;
1219
+ this.resizing = false;
1220
+ this._currentIndex = 0;
1221
+ this._images = [];
1222
+ this._subs = [];
1223
+ this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
1224
+ this.showLoader = true;
1225
+ }), this._appEventService.onDraftRenderImageReceived.subscribe((url) => {
1226
+ if (this._images[0] instanceof CoDocument) {
1227
+ this._images.unshift(url);
1109
1228
  }
1110
1229
  else {
1111
- this._articles = value;
1230
+ this._images[0] = url;
1112
1231
  }
1232
+ this.showLoader = false;
1233
+ }));
1234
+ }
1235
+ set images(value) {
1236
+ if (value && value.length > 0) {
1237
+ this._images = value;
1113
1238
  this._loadImages();
1239
+ this._changeDetector.detectChanges();
1114
1240
  }
1115
1241
  }
1116
- get articles() {
1117
- return this._articles;
1242
+ handleWindowResize() {
1243
+ this.resizing = true;
1244
+ this._scrollCarouselToIndex();
1245
+ clearTimeout(this._resizeTimer);
1246
+ this._resizeTimer = setTimeout(() => {
1247
+ this.resizing = false;
1248
+ }, 200);
1118
1249
  }
1119
- handleContentClick(article) {
1120
- this._appEventService.onAlternativeClick.next(article);
1250
+ gotoNextSlide() {
1251
+ this.currentIndex++;
1121
1252
  }
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
- });
1253
+ gotoPrevSlide() {
1254
+ this.currentIndex--;
1255
+ }
1256
+ isCurrentIndex(index) {
1257
+ return this.currentIndex === index;
1258
+ }
1259
+ get currentIndex() {
1260
+ return this._currentIndex;
1261
+ }
1262
+ set currentIndex(value) {
1263
+ this._currentIndex = value;
1264
+ this._scrollCarouselToIndex();
1265
+ }
1266
+ get images() {
1267
+ return this._images;
1132
1268
  }
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
1269
  ngOnInit() {
1161
1270
  }
1271
+ ngOnDestroy() {
1272
+ this.carousel = undefined;
1273
+ this._subs.forEach(s => s.unsubscribe());
1274
+ }
1275
+ handleThumbClick(index) {
1276
+ this.currentIndex = index;
1277
+ }
1278
+ onForceRenderImage() {
1279
+ this._appEventService.onForceRenderImage.next();
1280
+ }
1281
+ getImageSrc(image) {
1282
+ let source = '';
1283
+ if (image instanceof CoDocument) {
1284
+ if (image.filePath) {
1285
+ source = image.filePath;
1286
+ }
1287
+ else {
1288
+ source = image.documentBodyAsDataUri;
1289
+ }
1290
+ }
1291
+ else if (image.detail !== undefined) {
1292
+ source = image.detail;
1293
+ }
1294
+ return this._domSanitizer.bypassSecurityTrustUrl(source);
1295
+ }
1296
+ _loadImages() {
1297
+ if (this._images) {
1298
+ this._images.forEach((i) => {
1299
+ if (!i.documentBody && !i.filePath) {
1300
+ this._ione.getDocumentContent(i.documentId, false).then((content) => {
1301
+ if (content) {
1302
+ i.documentBody = content.documentContent;
1303
+ }
1304
+ });
1305
+ }
1306
+ });
1307
+ }
1308
+ }
1309
+ _scrollCarouselToIndex() {
1310
+ if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
1311
+ const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
1312
+ if (this.carousel && this.carousel.nativeElement) {
1313
+ this.carousel.nativeElement.scrollLeft = movePx;
1314
+ // this.carousel.nativeElement.scrollTo({
1315
+ // left: movePx,
1316
+ // behavior: 'smooth'
1317
+ // });
1318
+ }
1319
+ }
1320
+ }
1162
1321
  };
1322
+ ImageCarouselComponent.ctorParameters = () => [
1323
+ { type: ProductConnectorService },
1324
+ { type: ProductEventService },
1325
+ { type: ChangeDetectorRef },
1326
+ { type: DomSanitizer },
1327
+ { type: IconCacheService }
1328
+ ];
1329
+ __decorate([
1330
+ ViewChild('carousel', { read: ElementRef })
1331
+ ], ImageCarouselComponent.prototype, "carousel", void 0);
1163
1332
  __decorate([
1164
1333
  Input()
1165
- ], HeaderComponent.prototype, "label", void 0);
1334
+ ], ImageCarouselComponent.prototype, "showRefresh", void 0);
1166
1335
  __decorate([
1167
1336
  Input()
1168
- ], HeaderComponent.prototype, "amount", void 0);
1169
- HeaderComponent = __decorate([
1337
+ ], ImageCarouselComponent.prototype, "images", null);
1338
+ __decorate([
1339
+ HostListener('window:resize')
1340
+ ], ImageCarouselComponent.prototype, "handleWindowResize", null);
1341
+ __decorate([
1342
+ HostListener('swipeleft')
1343
+ ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
1344
+ __decorate([
1345
+ HostListener('swiperight')
1346
+ ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
1347
+ __decorate([
1348
+ HostBinding('class.resizing')
1349
+ ], ImageCarouselComponent.prototype, "resizing", void 0);
1350
+ ImageCarouselComponent = __decorate([
1170
1351
  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}"]
1352
+ selector: 'app-image-carousel',
1353
+ 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",
1354
+ 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
1355
  })
1175
- ], HeaderComponent);
1356
+ ], ImageCarouselComponent);
1176
1357
 
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
- }
1358
+ let ProductDescriptionComponent = class ProductDescriptionComponent {
1359
+ constructor() { }
1187
1360
  ngOnInit() {
1188
1361
  }
1189
- switchTab(tab) {
1190
- this.currentTab = tab;
1191
- }
1192
1362
  };
1193
1363
  __decorate([
1194
1364
  Input()
1195
- ], ProductInfoComponent.prototype, "article", void 0);
1196
- ProductInfoComponent = __decorate([
1365
+ ], ProductDescriptionComponent.prototype, "article", void 0);
1366
+ ProductDescriptionComponent = __decorate([
1197
1367
  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'
1368
+ selector: 'app-product-description',
1369
+ 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",
1370
+ 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
1371
  })
1242
- ], ProductModuleService);
1372
+ ], ProductDescriptionComponent);
1243
1373
 
1244
1374
  class BitUtils {
1245
1375
  static IsShortDescription(bit) {
@@ -1259,20 +1389,15 @@ class BitUtils {
1259
1389
  }
1260
1390
  }
1261
1391
 
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 = [];
1392
+ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1393
+ constructor(_appEventService) {
1394
+ this._appEventService = _appEventService;
1269
1395
  }
1270
1396
  set article(value) {
1271
- if (value) {
1272
- this._article = value;
1273
- this._buildInfo().then(() => {
1274
- this._changeDetector.detectChanges();
1275
- });
1397
+ this._article = value;
1398
+ if (this._article) {
1399
+ this.description = this.article.additionalDescription;
1400
+ this._prepareDescription();
1276
1401
  }
1277
1402
  }
1278
1403
  get article() {
@@ -1280,256 +1405,37 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1280
1405
  }
1281
1406
  ngOnInit() {
1282
1407
  }
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
- });
1408
+ onReadMore() {
1409
+ this._appEventService.onUpdateProductInfoTab.next(0);
1319
1410
  }
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);
1411
+ _prepareDescription() {
1412
+ this.description = '';
1413
+ if (this.article.texts && this.article.texts.length > 0) {
1414
+ this.article.texts.forEach((txt) => {
1415
+ if (BitUtils.IsShortDescription(txt.publication)) {
1416
+ this.description += txt.text;
1330
1417
  }
1418
+ });
1419
+ this.description = this.description.replace(/<[^>]*>?/gm, '');
1420
+ if (this.description.length > 250) {
1421
+ this.description = this.description.substr(0, 250) + ' [..]';
1331
1422
  }
1332
- return;
1333
- });
1423
+ }
1334
1424
  }
1335
1425
  };
1336
- ProductAdditionalInfoComponent.ctorParameters = () => [
1337
- { type: DomSanitizer },
1338
- { type: ProductModuleService },
1339
- { type: ChangeDetectorRef }
1426
+ ProductAdditionalDescriptionComponent.ctorParameters = () => [
1427
+ { type: ProductEventService }
1340
1428
  ];
1341
1429
  __decorate([
1342
1430
  Input()
1343
- ], ProductAdditionalInfoComponent.prototype, "article", null);
1344
- __decorate([
1345
- Input()
1346
- ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
1347
- ProductAdditionalInfoComponent = __decorate([
1431
+ ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1432
+ ProductAdditionalDescriptionComponent = __decorate([
1348
1433
  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}"]
1434
+ selector: 'app-product-additional-description',
1435
+ 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",
1436
+ 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
1437
  })
1353
- ], ProductAdditionalInfoComponent);
1354
-
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 = [];
1370
- }
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);
1438
+ ], ProductAdditionalDescriptionComponent);
1533
1439
 
1534
1440
  let ProductPriceComponent = class ProductPriceComponent {
1535
1441
  constructor(_changeDetector) {
@@ -1639,7 +1545,7 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
1639
1545
  configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';
1640
1546
  configuratorStatistics.webHost = window.location.host;
1641
1547
  configuratorStatistics.bundleHost = window.location.host;
1642
- return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, undefined, configuratorStatistics);
1548
+ return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);
1643
1549
  });
1644
1550
  }
1645
1551
  };
@@ -1685,358 +1591,581 @@ ProductAddtocartComponent = __decorate([
1685
1591
  })
1686
1592
  ], ProductAddtocartComponent);
1687
1593
 
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);
1594
+ let ProductRelatedComponent = class ProductRelatedComponent {
1595
+ constructor(_iOne, _appEventService) {
1596
+ this._iOne = _iOne;
1597
+ this._appEventService = _appEventService;
1598
+ this.isSmallModus = true;
1599
+ this._articles = [];
1698
1600
  }
1699
- ngOnInit() {
1601
+ set articles(value) {
1602
+ if (value) {
1603
+ if (this.refType && this.refType !== undefined) {
1604
+ if (value.length > 0) {
1605
+ value.forEach((x) => {
1606
+ if (x.refType === this.refType) {
1607
+ this._articles.push(x);
1608
+ }
1609
+ });
1610
+ }
1611
+ }
1612
+ else {
1613
+ this._articles = value;
1614
+ }
1615
+ this._loadImages();
1616
+ }
1700
1617
  }
1701
- handleIconClick(type) {
1702
- this.currentType = type;
1703
- this.currentTypeChange.next(this.currentType);
1704
- this.onIconClick.next(this.currentType);
1705
- this._changeDetector.detectChanges();
1618
+ get articles() {
1619
+ return this._articles;
1620
+ }
1621
+ handleContentClick(article) {
1622
+ this._appEventService.onAlternativeClick.next(article);
1623
+ }
1624
+ _loadImages() {
1625
+ this._articles.forEach((a) => {
1626
+ if (!a.image.documentBody) {
1627
+ this._iOne.getDocumentContent(a.image.documentId).then((content) => {
1628
+ if (content) {
1629
+ a.image.documentBody = content.documentContent;
1630
+ }
1631
+ });
1632
+ }
1633
+ });
1706
1634
  }
1707
1635
  };
1708
- ProductSelectorTypeComponent.ctorParameters = () => [
1709
- { type: IconCacheService },
1710
- { type: ChangeDetectorRef }
1636
+ ProductRelatedComponent.ctorParameters = () => [
1637
+ { type: ProductConnectorService },
1638
+ { type: ProductEventService }
1711
1639
  ];
1712
1640
  __decorate([
1713
1641
  Input()
1714
- ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1642
+ ], ProductRelatedComponent.prototype, "refType", void 0);
1715
1643
  __decorate([
1716
1644
  Input()
1717
- ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1645
+ ], ProductRelatedComponent.prototype, "label", void 0);
1718
1646
  __decorate([
1719
1647
  Input()
1720
- ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1721
- __decorate([
1722
- Output()
1723
- ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1648
+ ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1724
1649
  __decorate([
1725
- Output()
1726
- ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1727
- ProductSelectorTypeComponent = __decorate([
1650
+ Input()
1651
+ ], ProductRelatedComponent.prototype, "articles", null);
1652
+ ProductRelatedComponent = __decorate([
1728
1653
  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}"]
1654
+ selector: 'app-product-related',
1655
+ 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",
1656
+ 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
1657
  })
1733
- ], ProductSelectorTypeComponent);
1658
+ ], ProductRelatedComponent);
1734
1659
 
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)));
1660
+ let ProductStockComponent = class ProductStockComponent {
1661
+ constructor(_iOne, _iconCache) {
1662
+ this._iOne = _iOne;
1663
+ this._iconCache = _iconCache;
1664
+ this.icon = IconEnum;
1665
+ this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1764
1666
  }
1765
- set settings(value) {
1667
+ set stockAndDelivery(value) {
1766
1668
  if (value) {
1767
- let settings;
1768
- if (typeof value === 'string') {
1769
- settings = JSON.parse(value);
1770
- }
1771
- else {
1772
- settings = value;
1669
+ this.numberInStock = value.stock;
1670
+ }
1671
+ }
1672
+ ngOnInit() {
1673
+ }
1674
+ };
1675
+ ProductStockComponent.ctorParameters = () => [
1676
+ { type: ProductConnectorService },
1677
+ { type: IconCacheService }
1678
+ ];
1679
+ __decorate([
1680
+ Input()
1681
+ ], ProductStockComponent.prototype, "stockAndDelivery", null);
1682
+ ProductStockComponent = __decorate([
1683
+ Component({
1684
+ selector: 'app-product-stock',
1685
+ 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",
1686
+ 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}}"]
1687
+ })
1688
+ ], ProductStockComponent);
1689
+
1690
+ let LocalizePipe =
1691
+ // A pipe for localizing string values in view templates.
1692
+ class LocalizePipe {
1693
+ constructor(_dictionaryService) {
1694
+ this._dictionaryService = _dictionaryService;
1695
+ }
1696
+ transform(value, upperCaseFirst = true, replace = []) {
1697
+ if (!value) {
1698
+ return '';
1699
+ }
1700
+ replace = replace ? replace : [];
1701
+ if (!Array.isArray(replace)) {
1702
+ replace = [replace];
1703
+ }
1704
+ return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1705
+ }
1706
+ };
1707
+ LocalizePipe.ctorParameters = () => [
1708
+ { type: DictionaryService }
1709
+ ];
1710
+ LocalizePipe = __decorate([
1711
+ Pipe({
1712
+ name: 'localize'
1713
+ })
1714
+ // A pipe for localizing string values in view templates.
1715
+ ], LocalizePipe);
1716
+
1717
+ let ProductDeliveryComponent = class ProductDeliveryComponent {
1718
+ constructor(_localizePipe, _iOne, _iconCache) {
1719
+ this._localizePipe = _localizePipe;
1720
+ this._iOne = _iOne;
1721
+ this._iconCache = _iconCache;
1722
+ this.icon = IconEnum;
1723
+ this.iconData = this._iconCache.getIcon(this.icon.Truck);
1724
+ }
1725
+ set stockAndDelivery(value) {
1726
+ if (value) {
1727
+ this.deliveryDescription = value.deliveryDescription;
1728
+ if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {
1729
+ this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');
1773
1730
  }
1774
- this._settingsService.createSettingsFromObject(settings);
1775
- // this._initConnection(settings);
1776
1731
  }
1777
1732
  }
1778
- get settings() {
1779
- return this._settings;
1733
+ ngOnInit() {
1780
1734
  }
1781
- ngOnChanges(changes) {
1782
- this._changeDetector.detectChanges();
1735
+ };
1736
+ ProductDeliveryComponent.ctorParameters = () => [
1737
+ { type: LocalizePipe },
1738
+ { type: ProductConnectorService },
1739
+ { type: IconCacheService }
1740
+ ];
1741
+ __decorate([
1742
+ Input()
1743
+ ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1744
+ ProductDeliveryComponent = __decorate([
1745
+ Component({
1746
+ selector: 'app-product-delivery',
1747
+ 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",
1748
+ 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}}"]
1749
+ })
1750
+ ], ProductDeliveryComponent);
1751
+
1752
+ let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1753
+ constructor(_appEventService) {
1754
+ this._appEventService = _appEventService;
1755
+ this.activeTabHeight = 0;
1756
+ this.tabs = [];
1757
+ this._subs = [];
1758
+ this._subs.push(this._appEventService.onUpdateProductInfoTab.subscribe((index) => {
1759
+ this.updateTab(index);
1760
+ this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });
1761
+ }));
1762
+ }
1763
+ set article(value) {
1764
+ if (value) {
1765
+ this.articleObject = value;
1766
+ this._setupTabs();
1767
+ this.updateTab(0);
1768
+ }
1783
1769
  }
1784
1770
  ngOnDestroy() {
1785
1771
  this._subs.forEach(s => s.unsubscribe());
1786
1772
  }
1787
- _handleSettingsLoaded(loaded) {
1788
- if (loaded) {
1789
- this.upAndLoaded = true;
1790
- this._initConnection();
1773
+ updateTab(tabIndex) {
1774
+ this.activeTab = tabIndex;
1775
+ this.updateHeight(tabIndex);
1776
+ }
1777
+ updateHeight(tabIndex) {
1778
+ if (this.tabContent.nativeElement.children.length > 0) {
1779
+ if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
1780
+ this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;
1781
+ }
1791
1782
  }
1792
1783
  }
1793
- _handleAnswerInfoReceived(info) {
1794
- this.onArticleInfoReceived.next(info);
1784
+ _setupTabs() {
1785
+ this.tabs.push({ title: 'DESCRIPTION' });
1786
+ this.tabs.push({ title: 'FEATURES' });
1787
+ if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {
1788
+ this.tabs.push({ title: 'DOWNLOADS' });
1789
+ }
1790
+ if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {
1791
+ this.tabs.push({ title: 'SYMBOLS' });
1792
+ }
1793
+ }
1794
+ };
1795
+ ProductInfoTabsComponent.ctorParameters = () => [
1796
+ { type: ProductEventService }
1797
+ ];
1798
+ __decorate([
1799
+ ViewChild('tabContent')
1800
+ ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1801
+ __decorate([
1802
+ Input()
1803
+ ], ProductInfoTabsComponent.prototype, "article", null);
1804
+ ProductInfoTabsComponent = __decorate([
1805
+ Component({
1806
+ selector: 'app-product-info-tabs',
1807
+ 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",
1808
+ 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}}"]
1809
+ })
1810
+ ], ProductInfoTabsComponent);
1811
+
1812
+ let PipeModule = class PipeModule {
1813
+ };
1814
+ PipeModule = __decorate([
1815
+ NgModule({
1816
+ exports: [
1817
+ LocalizePipe
1818
+ ],
1819
+ declarations: [
1820
+ LocalizePipe
1821
+ ],
1822
+ providers: [
1823
+ LocalizePipe
1824
+ ]
1825
+ })
1826
+ ], PipeModule);
1827
+
1828
+ let ProductDocumentsComponent = class ProductDocumentsComponent {
1829
+ constructor(iconCache) {
1830
+ this.iconCache = iconCache;
1831
+ this.icon = IconEnum;
1832
+ this.showLabel = false;
1833
+ this.documents = [];
1834
+ }
1835
+ };
1836
+ ProductDocumentsComponent.ctorParameters = () => [
1837
+ { type: IconCacheService }
1838
+ ];
1839
+ __decorate([
1840
+ Input()
1841
+ ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1842
+ __decorate([
1843
+ Input()
1844
+ ], ProductDocumentsComponent.prototype, "documents", void 0);
1845
+ ProductDocumentsComponent = __decorate([
1846
+ Component({
1847
+ selector: 'app-product-documents',
1848
+ 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",
1849
+ 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}"]
1850
+ })
1851
+ ], ProductDocumentsComponent);
1852
+
1853
+ let HeaderComponent = class HeaderComponent {
1854
+ constructor() { }
1855
+ ngOnInit() {
1856
+ }
1857
+ };
1858
+ __decorate([
1859
+ Input()
1860
+ ], HeaderComponent.prototype, "label", void 0);
1861
+ __decorate([
1862
+ Input()
1863
+ ], HeaderComponent.prototype, "amount", void 0);
1864
+ HeaderComponent = __decorate([
1865
+ Component({
1866
+ selector: 'app-header',
1867
+ 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",
1868
+ styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
1869
+ })
1870
+ ], HeaderComponent);
1871
+
1872
+ var TabType;
1873
+ (function (TabType) {
1874
+ TabType["Additional"] = "additional";
1875
+ TabType["Properties"] = "properties";
1876
+ })(TabType || (TabType = {}));
1877
+ let ProductInfoComponent = class ProductInfoComponent {
1878
+ constructor() {
1879
+ this.tabType = TabType;
1880
+ this.currentTab = TabType.Additional;
1881
+ }
1882
+ ngOnInit() {
1883
+ }
1884
+ switchTab(tab) {
1885
+ this.currentTab = tab;
1886
+ }
1887
+ };
1888
+ __decorate([
1889
+ Input()
1890
+ ], ProductInfoComponent.prototype, "article", void 0);
1891
+ ProductInfoComponent = __decorate([
1892
+ Component({
1893
+ selector: 'app-product-info',
1894
+ 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",
1895
+ animations: [
1896
+ trigger('showContent', [
1897
+ state('void', style({ 'opacity': '0' })),
1898
+ state('*', style({ 'opacity': '1' })),
1899
+ transition('void => *', animate('200ms 100ms ease-in-out')),
1900
+ ])
1901
+ ],
1902
+ 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}"]
1903
+ })
1904
+ ], ProductInfoComponent);
1905
+
1906
+ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1907
+ constructor(_sanitizer, _connectorService, _changeDetector) {
1908
+ this._sanitizer = _sanitizer;
1909
+ this._connectorService = _connectorService;
1910
+ this._changeDetector = _changeDetector;
1911
+ this.showLabel = false;
1912
+ this.textParts = [];
1913
+ this._superArticles = new Map();
1914
+ }
1915
+ set article(value) {
1916
+ if (value) {
1917
+ this._article = value;
1918
+ this._buildInfo().then(() => {
1919
+ this._changeDetector.detectChanges();
1920
+ });
1921
+ }
1922
+ }
1923
+ get article() {
1924
+ return this._article;
1925
+ }
1926
+ ngOnInit() {
1927
+ }
1928
+ _getTextsSuperArticle() {
1929
+ return __awaiter(this, void 0, void 0, function* () {
1930
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
1931
+ const texts = [];
1932
+ if (this.article.superArticleNr) {
1933
+ let mainArticle;
1934
+ if (this._superArticles.has(this.article.superArticleNr)) {
1935
+ mainArticle = this._superArticles.get(this.article.superArticleNr);
1936
+ }
1937
+ else {
1938
+ mainArticle = yield this._connectorService.getSuperArticle(this.article.superArticleNr);
1939
+ this._superArticles.set(this.article.superArticleNr, mainArticle);
1940
+ }
1941
+ mainArticle.texts.forEach((txt) => {
1942
+ if (BitUtils.IsFullDescription(txt.publication)) {
1943
+ const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1944
+ texts.push(safeTxt);
1945
+ }
1946
+ });
1947
+ resolve(texts);
1948
+ }
1949
+ else {
1950
+ resolve(texts);
1951
+ }
1952
+ }));
1953
+ });
1954
+ }
1955
+ _prepareArticleTexts() {
1956
+ return __awaiter(this, void 0, void 0, function* () {
1957
+ const texts = yield this._getTextsSuperArticle();
1958
+ if (texts.length > 0) {
1959
+ this.textParts.push(...texts);
1960
+ }
1961
+ if (this.article.texts) {
1962
+ this.article.texts.forEach((txt) => {
1963
+ if (BitUtils.IsFullDescription(txt.publication)) {
1964
+ const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
1965
+ this.textParts.push(safeTxt);
1966
+ }
1967
+ });
1968
+ }
1969
+ });
1795
1970
  }
1796
- // we need to prepare the settings before we can use it for the 3d configurator bundle
1797
- _initConnection() {
1971
+ _buildInfo() {
1798
1972
  return __awaiter(this, void 0, void 0, function* () {
1799
- this._ione.initDefaultDevelopTestConnection();
1800
- // settingsToUse.session = this._ione.connector.connector.session;
1801
- setTimeout(() => {
1802
- this._changeDetector.detectChanges();
1803
- });
1804
- // this._settings = settingsToUse;
1973
+ this.textParts.length = 0;
1974
+ yield this._prepareArticleTexts();
1975
+ if (this.textParts.length === 0) {
1976
+ if (this.article.additionalDescription) {
1977
+ this.textParts.push(this.article.additionalDescription);
1978
+ }
1979
+ else if (this.article.description) {
1980
+ this.textParts.push(this.article.description);
1981
+ }
1982
+ }
1983
+ return;
1805
1984
  });
1806
1985
  }
1807
1986
  };
1808
- IoneProductComponent.ctorParameters = () => [
1809
- { type: DictionaryService },
1810
- { type: JsonUtilsService },
1987
+ ProductAdditionalInfoComponent.ctorParameters = () => [
1988
+ { type: DomSanitizer },
1811
1989
  { type: ProductConnectorService },
1812
- { type: ChangeDetectorRef },
1813
- { type: ProductEventService },
1814
- { type: ProductSettingsService }
1990
+ { type: ChangeDetectorRef }
1815
1991
  ];
1816
1992
  __decorate([
1817
1993
  Input()
1818
- ], IoneProductComponent.prototype, "sku", void 0);
1994
+ ], ProductAdditionalInfoComponent.prototype, "article", null);
1819
1995
  __decorate([
1820
1996
  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([
1997
+ ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
1998
+ ProductAdditionalInfoComponent = __decorate([
1844
1999
  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: [""]
2000
+ selector: 'app-product-additional-info',
2001
+ 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",
2002
+ 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
2003
  })
1850
- ], IoneProductComponent);
2004
+ ], ProductAdditionalInfoComponent);
1851
2005
 
1852
- let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1853
- constructor(_appEventService) {
1854
- this._appEventService = _appEventService;
2006
+ const propertyMap = new Map([
2007
+ ['articleNr', 'ARTICLE_NUMBER'],
2008
+ ['catExtra', 'CATEGORY'],
2009
+ ['catType', 'CATEGORY_TYPE'],
2010
+ ['description', 'DESCRIPTION'],
2011
+ ['material', 'MATERIAL'],
2012
+ ['title', 'TITLE'],
2013
+ ['turnOverGroup', 'TURNOVERGROUP'],
2014
+ ['height', 'HEIGHT'],
2015
+ ['width', 'WIDTH']
2016
+ ]);
2017
+ let ProductPropertiesComponent = class ProductPropertiesComponent {
2018
+ constructor() {
2019
+ this.showLabel = false;
2020
+ this.properties = [];
1855
2021
  }
1856
2022
  set article(value) {
1857
2023
  this._article = value;
1858
- if (this._article) {
1859
- this.description = this.article.additionalDescription;
1860
- this._prepareDescription();
1861
- }
2024
+ this._prepareProperties();
1862
2025
  }
1863
2026
  get article() {
1864
2027
  return this._article;
1865
2028
  }
1866
2029
  ngOnInit() {
1867
2030
  }
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
- }
2031
+ _prepareProperties() {
2032
+ this.properties.length = 0;
2033
+ if (!this._article) {
2034
+ return;
1883
2035
  }
2036
+ propertyMap.forEach((value, key) => {
2037
+ if (this.article.hasOwnProperty(key)) {
2038
+ this.properties.push({ key: value, value: this.article[key] });
2039
+ }
2040
+ });
1884
2041
  }
1885
2042
  };
1886
- ProductAdditionalDescriptionComponent.ctorParameters = () => [
1887
- { type: ProductEventService }
1888
- ];
1889
2043
  __decorate([
1890
2044
  Input()
1891
- ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1892
- ProductAdditionalDescriptionComponent = __decorate([
2045
+ ], ProductPropertiesComponent.prototype, "article", null);
2046
+ __decorate([
2047
+ Input()
2048
+ ], ProductPropertiesComponent.prototype, "showLabel", void 0);
2049
+ ProductPropertiesComponent = __decorate([
1893
2050
  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}}"]
2051
+ selector: 'app-product-properties',
2052
+ 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",
2053
+ 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
2054
  })
1898
- ], ProductAdditionalDescriptionComponent);
2055
+ ], ProductPropertiesComponent);
1899
2056
 
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
- }));
2057
+ let ProductSymbolsComponent = class ProductSymbolsComponent {
2058
+ constructor() {
2059
+ this.symbolStrings = [];
1910
2060
  }
1911
- set article(value) {
1912
- if (value) {
1913
- this.articleObject = value;
1914
- this._setupTabs();
1915
- this.updateTab(0);
2061
+ set symbols(value) {
2062
+ this._symbols = value;
2063
+ if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {
2064
+ this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');
1916
2065
  }
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;
2066
+ if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {
2067
+ for (let i = 0; i < this._symbols['symbolString'].length; i++) {
2068
+ this.symbolStrings.push(this._symbols['symbolString'][i]);
1929
2069
  }
1930
2070
  }
1931
2071
  }
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
- }
2072
+ get symbols() {
2073
+ return this._symbols;
2074
+ }
2075
+ ngOnInit() {
1941
2076
  }
1942
2077
  };
1943
- ProductInfoTabsComponent.ctorParameters = () => [
1944
- { type: ProductEventService }
1945
- ];
1946
- __decorate([
1947
- ViewChild('tabContent')
1948
- ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1949
2078
  __decorate([
1950
2079
  Input()
1951
- ], ProductInfoTabsComponent.prototype, "article", null);
1952
- ProductInfoTabsComponent = __decorate([
2080
+ ], ProductSymbolsComponent.prototype, "symbols", null);
2081
+ __decorate([
2082
+ HostBinding('class')
2083
+ ], ProductSymbolsComponent.prototype, "_className", void 0);
2084
+ ProductSymbolsComponent = __decorate([
1953
2085
  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',
2086
+ selector: 'app-product-symbols',
2087
+ 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",
2088
+ styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
1977
2089
  })
1978
- ], ProductInitializerService);
2090
+ ], ProductSymbolsComponent);
1979
2091
 
1980
- function initializeApp(context) {
1981
- const x = () => context.initializeApp();
1982
- return x;
1983
- }
1984
- let IoneProductModule = class IoneProductModule {
2092
+ let ProductPageModule = class ProductPageModule {
1985
2093
  };
1986
- IoneProductModule = __decorate([
2094
+ ProductPageModule = __decorate([
1987
2095
  NgModule({
1988
2096
  imports: [
1989
- // BrowserAnimationsModule,
1990
2097
  CommonModule,
1991
- ButtonModule,
1992
2098
  IconModule,
2099
+ LoaderModule,
2100
+ PipeModule,
1993
2101
  NumberPickerModule,
2102
+ ButtonModule,
2103
+ PriceDisplayPipeModule,
1994
2104
  InputTextModule,
1995
2105
  FilesUploadModule,
1996
- LoaderModule,
1997
2106
  ScrollContainerModule,
1998
2107
  TileModule,
1999
2108
  LevelIndicatorModule,
2000
- PriceDisplayPipeModule,
2001
- ArticleTileModule
2109
+ ArticleTileModule,
2002
2110
  ],
2003
2111
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
2004
2112
  declarations: [
2005
- IoneProductComponent,
2006
2113
  ProductPageComponent,
2114
+ ProductSelectorTypeComponent,
2007
2115
  ImageCarouselComponent,
2008
2116
  ProductDescriptionComponent,
2009
- ProductDocumentsComponent,
2117
+ ProductAdditionalDescriptionComponent,
2118
+ ProductPriceComponent,
2119
+ ProductAddtocartComponent,
2010
2120
  ProductRelatedComponent,
2121
+ ProductStockComponent,
2122
+ ProductDeliveryComponent,
2123
+ ProductInfoTabsComponent,
2124
+ ProductDocumentsComponent,
2011
2125
  HeaderComponent,
2012
2126
  ProductInfoComponent,
2013
2127
  ProductAdditionalInfoComponent,
2014
2128
  ProductPropertiesComponent,
2015
- ProductDeliveryComponent,
2016
- ProductStockComponent,
2017
- ProductSymbolsComponent,
2018
- ProductPriceComponent,
2019
- ProductAddtocartComponent,
2020
- ProductInfoTabsComponent,
2021
- LocalizePipe,
2022
- ProductSelectorTypeComponent,
2023
- ProductAdditionalDescriptionComponent
2129
+ ProductSymbolsComponent
2024
2130
  ],
2025
- entryComponents: [
2131
+ exports: [ProductPageComponent]
2132
+ })
2133
+ ], ProductPageModule);
2134
+
2135
+ let ProductExternalSourceModule = class ProductExternalSourceModule {
2136
+ };
2137
+ ProductExternalSourceModule = __decorate([
2138
+ NgModule({
2139
+ imports: [
2140
+ CommonModule,
2141
+ ProductPageModule
2142
+ ],
2143
+ declarations: [
2144
+ ProductExternalSourceComponent
2145
+ ],
2146
+ exports: [
2147
+ ProductExternalSourceComponent
2148
+ ]
2149
+ })
2150
+ ], ProductExternalSourceModule);
2151
+
2152
+ let IoneProductModule = class IoneProductModule {
2153
+ };
2154
+ IoneProductModule = __decorate([
2155
+ NgModule({
2156
+ imports: [
2157
+ // BrowserAnimationsModule,
2158
+ CommonModule,
2159
+ ProductExternalSourceModule,
2160
+ ProductPageModule
2161
+ ],
2162
+ declarations: [
2026
2163
  IoneProductComponent
2027
2164
  ],
2028
- providers: [
2029
- ProductSettingsService,
2030
- ProductConnectorService,
2031
- ProductConnectorAdapterService,
2032
- IconCacheService,
2033
- {
2034
- provide: APP_INITIALIZER,
2035
- useFactory: initializeApp,
2036
- deps: [ProductInitializerService],
2037
- multi: true
2038
- }
2165
+ entryComponents: [
2166
+ IoneProductComponent
2039
2167
  ],
2168
+ providers: [],
2040
2169
  exports: [IoneProductComponent],
2041
2170
  bootstrap: [
2042
2171
  IoneProductComponent
@@ -2048,5 +2177,5 @@ IoneProductModule = __decorate([
2048
2177
  * Generated bundle index. Do not edit.
2049
2178
  */
2050
2179
 
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 };
2180
+ export { IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, ProductPageModule as ɵa, PipeModule as ɵb, ProductSymbolsComponent as ɵba, IoneProductComponent as ɵbb, 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
2181
  //# sourceMappingURL=colijnit-product.js.map