@colijnit/product 1.9.5 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/product-additional-info/product-additional-info.component.d.ts +4 -3
- package/app/components/product-external-source/product-external-source.component.d.ts +30 -0
- package/app/components/product-external-source/product-external-source.module.d.ts +2 -0
- package/app/components/product-page/product-page.component.d.ts +4 -0
- package/app/components/product-page/product-page.module.d.ts +2 -0
- package/app/ione-product.component.d.ts +1 -3
- package/app/model/{settings.d.ts → productSettings.d.ts} +3 -2
- package/app/pipe/pipe.module.d.ts +2 -0
- package/app/service/product-connector-adapter.service.d.ts +8 -2
- package/app/service/product-connector.service.d.ts +10 -5
- package/app/service/product-settings.service.d.ts +3 -3
- package/bundles/colijnit-product.umd.js +1476 -1262
- package/bundles/colijnit-product.umd.js.map +1 -1
- package/bundles/colijnit-product.umd.min.js +2 -2
- package/bundles/colijnit-product.umd.min.js.map +1 -1
- package/colijnit-product.d.ts +29 -28
- package/colijnit-product.metadata.json +1 -1
- package/esm2015/app/components/product-additional-info/product-additional-info.component.js +23 -16
- package/esm2015/app/components/product-addtocart/product-addtocart.component.js +2 -2
- package/esm2015/app/components/product-delivery/product-delivery.component.js +1 -2
- package/esm2015/app/components/product-external-source/product-external-source.component.js +123 -0
- package/esm2015/app/components/product-external-source/product-external-source.module.js +23 -0
- package/esm2015/app/components/product-page/product-page.component.js +45 -15
- package/esm2015/app/components/product-page/product-page.module.js +66 -0
- package/esm2015/app/ione-product.component.js +38 -19
- package/esm2015/app/ione-product.module.js +8 -61
- package/esm2015/app/model/productSettings.js +16 -0
- package/esm2015/app/pipe/pipe.module.js +20 -0
- package/esm2015/app/product-version.js +3 -3
- package/esm2015/app/service/dictionary.service.js +1 -1
- package/esm2015/app/service/product-connector-adapter.service.js +34 -9
- package/esm2015/app/service/product-connector.service.js +33 -35
- package/esm2015/app/service/product-event.service.js +2 -6
- package/esm2015/app/service/product-settings.service.js +13 -74
- package/esm2015/colijnit-product.js +30 -29
- package/esm2015/public_api.js +3 -1
- package/esm5/app/components/product-additional-info/product-additional-info.component.js +43 -24
- package/esm5/app/components/product-addtocart/product-addtocart.component.js +2 -2
- package/esm5/app/components/product-delivery/product-delivery.component.js +1 -2
- package/esm5/app/components/product-external-source/product-external-source.component.js +126 -0
- package/esm5/app/components/product-external-source/product-external-source.module.js +26 -0
- package/esm5/app/components/product-page/product-page.component.js +49 -15
- package/esm5/app/components/product-page/product-page.module.js +69 -0
- package/esm5/app/ione-product.component.js +47 -20
- package/esm5/app/ione-product.module.js +8 -61
- package/esm5/app/model/productSettings.js +18 -0
- package/esm5/app/pipe/pipe.module.js +23 -0
- package/esm5/app/product-version.js +3 -3
- package/esm5/app/service/dictionary.service.js +1 -1
- package/esm5/app/service/product-connector-adapter.service.js +61 -10
- package/esm5/app/service/product-connector.service.js +65 -52
- package/esm5/app/service/product-event.service.js +2 -6
- package/esm5/app/service/product-settings.service.js +14 -74
- package/esm5/colijnit-product.js +30 -29
- package/esm5/public_api.js +3 -1
- package/fesm2015/colijnit-product.js +1189 -1043
- package/fesm2015/colijnit-product.js.map +1 -1
- package/fesm5/colijnit-product.js +1447 -1234
- package/fesm5/colijnit-product.js.map +1 -1
- package/package.json +5 -4
- package/public_api.d.ts +2 -0
- package/app/service/product-module.service.d.ts +0 -9
- package/esm2015/app/model/settings.js +0 -15
- package/esm2015/app/service/product-module.service.js +0 -39
- package/esm5/app/model/settings.js +0 -17
- package/esm5/app/service/product-module.service.js +0 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@colijnit/product/app/enum/language-code.enum.ts","ng://@colijnit/product/app/product-version.ts","ng://@colijnit/product/app/components/product-description/product-description.component.ts","ng://@colijnit/product/app/service/product-connector-adapter.service.ts","ng://@colijnit/product/app/utils/json-utils.service.ts","ng://@colijnit/product/assets/dictionary/text.properties.ts","ng://@colijnit/product/app/model/render-modes.ts","ng://@colijnit/product/app/service/dictionary.service.ts","ng://@colijnit/product/app/model/settings-options.ts","ng://@colijnit/product/app/model/render-parameters.ts","ng://@colijnit/product/app/enum/icon.enum.ts","ng://@colijnit/product/app/model/settings.ts","ng://@colijnit/product/app/service/product-settings.service.ts","ng://@colijnit/product/app/service/product-connector.service.ts","ng://@colijnit/product/app/service/product-event.service.ts","ng://@colijnit/product/app/model/icon.ts","ng://@colijnit/product/app/enum/selector-type.enum.ts","ng://@colijnit/product/app/service/icon-cache.service.ts","ng://@colijnit/product/app/components/image-carousel/image-carousel.component.ts","ng://@colijnit/product/app/model/stock-and-delivery.ts","ng://@colijnit/product/app/components/product-info/product-info.component.ts","ng://@colijnit/product/app/components/product-page/product-page.component.ts","ng://@colijnit/product/app/components/product-documents/product-documents.component.ts","ng://@colijnit/product/app/components/product-related/product-related.component.ts","ng://@colijnit/product/app/components/core/header/header.component.ts","ng://@colijnit/product/app/service/product-module.service.ts","ng://@colijnit/product/app/utils/bit-utils.ts","ng://@colijnit/product/app/components/product-additional-info/product-additional-info.component.ts","ng://@colijnit/product/app/components/product-properties/product-properties.component.ts","ng://@colijnit/product/app/pipe/localize.pipe.ts","ng://@colijnit/product/app/components/product-delivery/product-delivery.component.ts","ng://@colijnit/product/app/components/product-stock/product-stock.component.ts","ng://@colijnit/product/app/components/product-symbols/product-symbols.component.ts","ng://@colijnit/product/app/components/product-price/product-price.component.ts","ng://@colijnit/product/app/components/product-addtocart/product-addtocart.component.ts","ng://@colijnit/product/app/components/product-selector-type/product-selector-type.component.ts","ng://@colijnit/product/app/ione-product.component.ts","ng://@colijnit/product/app/components/product-additional-description/product-additional-description.component.ts","ng://@colijnit/product/app/components/product-info-tabs/product-info-tabs.component.ts","ng://@colijnit/product/app/service/product-initializer.service.ts","ng://@colijnit/product/app/ione-product.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","push","__read","o","m","ar","error","__spread","concat","LanguageCode","name","description","symVer","publishDate","ProductDescriptionComponent","prototype","ngOnInit","Input","Component","selector","template","ProductConnectorAdapterService","showLoader","Subject","_boFactory","BusinessObjectFactory","ngOnDestroy","articleConnector","unsubscribe","initConnector","options","_this","Articles","session","subscribe","setInstance","instanceId","getDeliveryPrognosis","goodId","branchNr","getSelectorDeliveryDate","deliveryPrognosis","_a","returnValue","getDeliveryDate2","response","validationResult","success","makeWithRawBackendData","DeliveryPrognosis","resultObject","getJsonConfiguredArticles","configuratorStatistics","getJsonArticleFlatTree","goodType","quantity","getGoodIdFromArticleNr","sku","getArticleFullObject","ArticleFullObject","getSuperArticle","id","branch","getSuperArticleQuickSel","SuperArticle","getDocumentContent","docId","thumbnail","DocumentContent","Injectable","providedIn","JsonUtilsService","readJsonFile","filePath","fetch","ok","json","console","e_1","message","RenderModes","Dictionary","strings","nl","ADDITIONAL_DATA","ALTERNATIVE_PRODUCTS","ARTICLE_NUMBER","CATEGORY","CATEGORY_TYPE","CONFIGURE","DELIVERY_TIME_PERIOD","DESCRIPTION","DOCUMENTS","DOWNLOADS","FEATURES","HEIGHT","MATERIAL","PRODUCT_IN_STOCK","PRODUCT_NOT_IN_STOCK","PROPERTIES","QUOTATION","READ_MORE","RELATED_PRODUCTS","SHOPPING_CART_IN","SHOW_IN","STOCK","SYMBOLS","TITLE","TURNOVERGROUP","VARIANTS","WIDTH","de","DictionaryService","_http","_jsonUtils","dictionaryUrl","_dictionaries","Map","_placeholder","_language","_rootUrl","_dictBasePath","setDictionary","language","Dutch","has","undefined","dictionary","substr","toLowerCase","set","get","upperCaseFirst","replacementTexts","_i","StringUtils","IsStringWithLength","text","charAt","toUpperCase","slice","ReplaceOccurrencesIn","HttpClient","SettingsOptions","showStockStatus","showZoomButton","showTagFilter","showAsConfigured","inlineAnswers","showArButton","arEnabled","vrEnabled","IconEnum","RenderParameters","host","port","secure","renderMode","RenderShop","Settings","useGroups","useRenders","useEncryption","useMatch","currencySymbol","renderParameters","ProductSettingsService","_jsonUtilsService","_dictionaryService","settingsLoaded","BehaviorSubject","_settings","initializeSettings","settings","jsonSettings","assign","settingsFinished","createSettingsFromObject","obj","hasOwnProperty","url","rootUrl","replace","schema","version","currency","client","languageCode","username","password","timeoutInMs","assetPath","threeDAssetPath","gtm","assetIndex","lightPresetsIndex","additionalTranslationFile","ProductConnectorService","connector","_settingsService","controllerInitialized","_initializing","_initialized","connectorOptions","Options","subs","_shouldShowLoader","forEach","sub","initDefaultDevelopTestConnection","Error","currencyId","useLoginEncryption","getFullArticle","onShowLoaderChange","ProductEventService","onAddToCart","onAlternativeClick","onAddToQuote","onForceRenderImage","onArticleReceived","onSelectionsReceived","onImageReceived","onRenderStarted","onRenderImageReceived","onDraftRenderImageReceived","onArticleInfoReceived","onUpdateProductInfoTab","Output","Directive","SelectorType","IconSvg","add_to_cart_drop","delivery_truck","download","full_screen","location","logo","magic_wand","normal_screen","quote","refresh","three_d","truck","two_d","warehouse","IconCacheService","_sanitizer","_iconCache","_allIcons","setIconCache","getIcon","iconName","bypassSecurityTrustHtml","DomSanitizer","ImageCarouselComponent","_ione","_appEventService","_changeDetector","_domSanitizer","iconCache","icons","showRefresh","resizing","_currentIndex","_images","_subs","CoDocument","unshift","_loadImages","detectChanges","handleWindowResize","_scrollCarouselToIndex","clearTimeout","_resizeTimer","setTimeout","gotoNextSlide","currentIndex","gotoPrevSlide","isCurrentIndex","index","carousel","s","handleThumbClick","getImageSrc","image","source","documentBodyAsDataUri","detail","bypassSecurityTrustUrl","documentBody","documentId","content","documentContent","images","movePx","nativeElement","clientWidth","scrollLeft","ChangeDetectorRef","ViewChild","read","ElementRef","HostListener","HostBinding","StockAndDelivery","stock","deliveryDescription","TabType","ProductPageComponent","_renderer","settingsService","appEventService","icon","configurable","threeD","show2D","show3D","configuring","fullscreenAnimationEnd","_fullScreen","x","selections","forceRenderImage","loaded","_sku","fullScreen","_getArticle","NormalScreen","FullScreen","_currentView","TwoD","ThreeD","ngAfterViewInit","_initializedSub","configurator","fullscreenbutton","event","handleStartConfiguration","showFullScreen","init","article","currentView","is3D","selectorType","selectorTypeCustomer","stockInfo","stockAndDelivery","Renderer2","animations","trigger","state","style","position","top","left","width","height","transition","animate","right","opacity","display","ProductDocumentsComponent","showLabel","documents","ProductRelatedComponent","_iOne","isSmallModus","_articles","refType","handleContentClick","a","HeaderComponent","ProductInfoComponent","tabType","currentTab","Additional","switchTab","tab","ProductModuleService","_iOneConnectorService","_superArticles","getArticle","mainArticle","BitUtils","IsShortDescription","bit","IsFullDescription","IsMetaTitle","IsMetaDescription","IsMetaKeys","ProductAdditionalInfoComponent","_moduleService","textParts","_article","_buildInfo","_getTextsSuperArticle","texts","superArticleNr","txt","publication","safeTxt","sanitize","SecurityContext","HTML","catch","_prepareArticleTexts","_b","additionalDescription","propertyMap","ProductPropertiesComponent","properties","_prepareProperties","LocalizePipe","transform","Array","isArray","Pipe","ProductDeliveryComponent","_localizePipe","iconData","Truck","providers","ProductStockComponent","Warehouse","numberInStock","ProductSymbolsComponent","symbolStrings","_symbols","_className","ProductPriceComponent","showFromPrice","_configurable","_pricing","_setPrices","valutaSign","_getSign","retailCurrency","fromPrice","retailBasePrice","priceBaseline","fromLabel","toPrice","retailSuggestedPrice","toLabel","ProductAddtocartComponent","_ioneControllerService","fullscreen","startConfiguration","EventEmitter","addToCartClick","addToQuoteClick","showQuoteButton","_quantity","Math","max","addToCartButton","handleAddToCartClick","_getJSONFromArticleObject","_c","handleAddToQuoteClick","ConfiguratorStatisticsEnvironment","userType","transactionType","actionDomain","sessionId","webHost","window","bundleHost","ProductSelectorTypeComponent","type","onIconClick","currentTypeChange","twoDIcon","threeDIcon","handleIconClick","currentType","IoneProductComponent","_dictionary","upAndLoaded","_handleSettingsLoaded","emit","info","_handleAnswerInfoReceived","JSON","parse","ngOnChanges","changes","_initConnection","encapsulation","ViewEncapsulation","Emulated","ProductAdditionalDescriptionComponent","_prepareDescription","onReadMore","ProductInfoTabsComponent","activeTabHeight","tabs","updateTab","tabContent","scrollIntoView","behavior","articleObject","_setupTabs","tabIndex","activeTab","updateHeight","children","offsetHeight","title","symbols","ProductInitializerService","initializeApp","context","IoneProductModule","NgModule","imports","CommonModule","ButtonModule","IconModule","NumberPickerModule","InputTextModule","FilesUploadModule","LoaderModule","ScrollContainerModule","TileModule","LevelIndicatorModule","PriceDisplayPipeModule","ArticleTileModule","schemas","CUSTOM_ELEMENTS_SCHEMA","declarations","entryComponents","provide","APP_INITIALIZER","useFactory","deps","multi","exports","bootstrap"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum LanguageCode {\r\n Dutch = \"nl-NL\",\r\n English = \"en-GB\",\r\n German = \"de-DE\",\r\n French = \"fr-FR\",\r\n}\r\n","// this file is dynamically created, do not change this\nexport class Version {\n public name = \"@colijnit/product\";\n public description = \"Product detail page project for iOne\";\n public symVer = \"1.9.5\";\n public publishDate = \"21-6-2023 11:47:53\";\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\n\n@Component({\n selector: 'app-product-description',\n templateUrl: './product-description.component.html',\n styleUrls: ['./product-description.component.scss']\n})\nexport class ProductDescriptionComponent implements OnInit {\n\n @Input()\n public article: ArticleFullObject;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {ArticleFullObject} from '@colijnit/articleapi/build/model/article-full-object';\r\nimport {SuperArticle} from '@colijnit/articleapi/build/model/super-article';\r\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\r\nimport {Articles} from '@colijnit/articleapi/build/articles';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\r\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\r\nimport {BusinessObjectFactory} from '@colijnit/ioneconnector/build/service/business-object-factory';\r\n\r\n// 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.\r\n// Only to be used by the IOneControllerService.\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductConnectorAdapterService implements OnDestroy {\r\n\r\n public readonly showLoader: Subject<boolean> = new Subject<boolean>();\r\n\r\n public articleConnector?: Articles;\r\n\r\n private _boFactory: BusinessObjectFactory = new BusinessObjectFactory();\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.articleConnector.showLoader.unsubscribe();\r\n }\r\n\r\n public initConnector(options: Options): void {\r\n this.articleConnector = new Articles(options);\r\n options.session = this.articleConnector.session;\r\n this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value));\r\n }\r\n\r\n public setInstance(instanceId: string): void {\r\n // this.articleConnector.setInstanceToConfigure(instanceId, false);\r\n }\r\n\r\n public async getDeliveryPrognosis(goodId: number, branchNr?: string): Promise<any> {\r\n const deliveryPrognosis: DeliveryPrognosis = await this.getSelectorDeliveryDate();\r\n if (!deliveryPrognosis || !deliveryPrognosis.returnValue) {\r\n return this.getDeliveryDate2(goodId);\r\n }\r\n return deliveryPrognosis;\r\n }\r\n\r\n public async getSelectorDeliveryDate(): Promise<DeliveryPrognosis> {\r\n const response: DataServiceResponseData = await this.articleConnector.getSelectorDeliveryDate();\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject) as unknown as DeliveryPrognosis;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getDeliveryDate2(goodId: number): Promise<DeliveryPrognosis> {\r\n const response: DataServiceResponseData = await this.articleConnector.getDeliveryDate2(goodId);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject) as unknown as DeliveryPrognosis;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getJsonConfiguredArticles(configuratorStatistics?: ConfiguratorStatisticsEnvironment): Promise<string> {\r\n const response: DataServiceResponseData = await this.articleConnector.getJsonConfiguredArticles(configuratorStatistics);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return response.resultObject;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n public async getJsonArticleFlatTree(\r\n goodId: number,\r\n goodType: string,\r\n quantity: number,\r\n showLoader: boolean = true,\r\n instanceId?: number,\r\n configuratorStatistics?: ConfiguratorStatisticsEnvironment\r\n ): Promise<string> {\r\n return this.articleConnector.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, instanceId, configuratorStatistics);\r\n }\r\n\r\n public async getGoodIdFromArticleNr(sku: string): Promise<number> {\r\n const response: DataServiceResponseData = await this.articleConnector.getGoodIdFromArticleNr(sku);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return response.resultObject;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\r\n const response: DataServiceResponseData = await this.articleConnector.getArticleFullObject(goodId);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject) as ArticleFullObject;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getSuperArticle(id: string, branch?: string): Promise<SuperArticle> {\r\n const response: DataServiceResponseData = await this.articleConnector.getSuperArticleQuickSel(id, branch);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(SuperArticle, response.resultObject) as SuperArticle;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getDocumentContent(docId: number, thumbnail: boolean = true): Promise<DocumentContent> {\r\n const response: DataServiceResponseData = await this.articleConnector.getDocumentContent(docId, thumbnail);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DocumentContent, response.resultObject) as unknown as DocumentContent;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonUtilsService {\r\n\r\n public async readJsonFile(filePath: string): Promise<any> {\r\n try {\r\n const response = await fetch(filePath);\r\n if (!response.ok) {\r\n return null;\r\n } else {\r\n return response.json();\r\n }\r\n } catch (e) {\r\n console.error('Error getting file:', e.message);\r\n return '';\r\n }\r\n }\r\n}\r\n","export class Dictionary {\r\n\r\n public strings: {} = {\r\n \"nl\": {\r\n \"ADDITIONAL_DATA\": \"Extra informatie\",\r\n \"ALTERNATIVE_PRODUCTS\": \"Alternatieve producten\",\r\n \"ARTICLE_NUMBER\": \"Artikel nummer\",\r\n \"CATEGORY\": \"Categorie\",\r\n \"CATEGORY_TYPE\": \"Categorie type\",\r\n \"CONFIGURE\": \"Configureren\",\r\n \"DELIVERY_TIME_PERIOD\": \"Levertijd\",\r\n \"DESCRIPTION\": \"Omschrijving\",\r\n \"DOCUMENTS\": \"Documenten\",\r\n \"DOWNLOADS\": \"Downloads\",\r\n \"FEATURES\": \"Kenmerken\",\r\n \"HEIGHT\": \"Hoogte\",\r\n \"MATERIAL\": \"Materiaal\",\r\n \"PRODUCT_IN_STOCK\": \"Op voorraad\",\r\n \"PRODUCT_NOT_IN_STOCK\": \"Niet op voorraad\",\r\n \"PROPERTIES\": \"Eigenschappen\",\r\n \"QUOTATION\": \"Quotatie\",\r\n \"READ_MORE\": \"Lees meer\",\r\n \"RELATED_PRODUCTS\": \"Gerelateerde producten\",\r\n \"SHOPPING_CART_IN\": \"In winkelwagen\",\r\n \"SHOW_IN\": \"Laat zien\",\r\n \"STOCK\": \"Voorraad\",\r\n \"SYMBOLS\": \"Symbolen\",\r\n \"TITLE\": \"Titel\",\r\n \"TURNOVERGROUP\": \"Omzetgroep\",\r\n \"VARIANTS\": \"Varianten\",\r\n \"WIDTH\": \"Breedte\"\r\n },\r\n \"de\": {\r\n \"ADDITIONAL_DATA\": \"Extra informatie\",\r\n \"ALTERNATIVE_PRODUCTS\": \"Alternative Produkte\",\r\n \"ARTICLE_NUMBER\": \"Artikelnummer\",\r\n \"CATEGORY\": \"Kategorie\",\r\n \"CATEGORY_TYPE\": \"Kategorietype\",\r\n \"CONFIGURE\": \"Konfigurieren\",\r\n \"DELIVERY_TIME_PERIOD\": \"Lieferzeit\",\r\n \"DESCRIPTION\": \"Beschreibung\",\r\n \"DOCUMENTS\": \"Dateien\",\r\n \"DOWNLOADS\": \"Downloads\",\r\n \"FEATURES\": \"Eigenschaften\",\r\n \"HEIGHT\": \"Höhe\",\r\n \"MATERIAL\": \"Material\",\r\n \"PRODUCT_IN_STOCK\": \"Auf lager\",\r\n \"PRODUCT_NOT_IN_STOCK\": \"Nicht auf lager\",\r\n \"PROPERTIES\": \"Eigenschaften\",\r\n \"QUOTATION\": \"Angebot\",\r\n \"READ_MORE\": \"Lesen Sie mehr\",\r\n \"RELATED_PRODUCTS\": \"Verwandte Produkte\",\r\n \"SHOPPING_CART_IN\": \"Im Einkaufswagen\",\r\n \"SHOW_IN\": \"Zeigen\",\r\n \"STOCK\": \"Vorrat\",\r\n \"SYMBOLS\": \"Symbole\",\r\n \"TITLE\": \"Titulatur\",\r\n \"TURNOVERGROUP\": \"Umsatzgruppe\",\r\n \"VARIANTS\": \"Varianten\",\r\n \"WIDTH\": \"Breite\"\r\n }\r\n };\r\n}\r\n","export enum RenderModes {\r\n RenderRoom = 'render_room',\r\n RenderShop = 'render_shop',\r\n RenderIone = 'render_ione'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LanguageCode } from '../enum/language-code.enum';\r\nimport { JsonUtilsService } from '../utils/json-utils.service';\r\nimport { Dictionary } from '../../assets/dictionary/text.properties';\r\nimport {StringUtils} from '@colijnit/ioneconnector/build/utils/string-utils';\r\n\r\n// The localization service, providing peers with text translation functionality.\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DictionaryService {\r\n private readonly dictionaryUrl: string = 'js/browser/res/dictionary/';\r\n\r\n public get language(): string {\r\n return this._language;\r\n }\r\n\r\n public set rootUrl(value: string) {\r\n this._rootUrl = value;\r\n this._dictBasePath = this._rootUrl + '/' + this.dictionaryUrl;\r\n }\r\n\r\n // public dictionaryLoaded: Subject<void> = new Subject();\r\n\r\n private _dictBasePath: string;\r\n private _rootUrl: string;\r\n // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();\r\n private _dictionaries: Map<string, { [key: string]: string }> = new Map<string, { [key: string]: string }>();\r\n private _language: string;\r\n\r\n // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.\r\n private readonly _placeholder: string = '|~';\r\n\r\n constructor(\r\n private _http: HttpClient,\r\n private _jsonUtils: JsonUtilsService\r\n ) {\r\n }\r\n\r\n // Loads the dictionary for given language in memory.\r\n public async setDictionary(language: string): Promise<void> {\r\n this._language = language || LanguageCode.Dutch;\r\n if (!this._dictionaries.has(this._language)) {\r\n const dictionary = new Dictionary();\r\n if(dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {\r\n this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);\r\n }\r\n }\r\n // if (!this._dictionaryPromise.has(language)) {\r\n // this._dictionaryPromise.set(language,\r\n // this._jsonUtils.readJsonFile(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')\r\n // .then((data: { [key: string]: string }) => {\r\n // this._dictionaries.set(language, data);\r\n // this.dictionaryLoaded.next();\r\n // return data;\r\n // })\r\n // // this._http.get(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')\r\n // // .toPromise().then((data: { [key: string]: string }) => {\r\n // // this._dictionaries.set(language, data);\r\n // // return data;\r\n // // })\r\n // );\r\n // } else {\r\n // this.dictionaryLoaded.next();\r\n // }\r\n // await this._dictionaryPromise.get(language);\r\n }\r\n\r\n /**\r\n * Returns the localized text for the given dictionary key.\r\n * @param {string} key\r\n * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val\r\n * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value\r\n * @returns {string} The translated text for given dictionary key\r\n */\r\n public get(key: string, upperCaseFirst: boolean = true, ...replacementTexts: string[]): string {\r\n if (!StringUtils.IsStringWithLength(key)) {\r\n return key || '';\r\n }\r\n\r\n let text: string = this._dictionaries.get(this.language)[key];\r\n text = StringUtils.IsStringWithLength(text) ? text : key;\r\n\r\n if (upperCaseFirst) {\r\n text = text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n text = text.charAt(0).toLowerCase() + text.slice(1);\r\n }\r\n\r\n if (replacementTexts.length > 0) {\r\n text = StringUtils.ReplaceOccurrencesIn(text, this._placeholder, ...replacementTexts);\r\n }\r\n\r\n return text;\r\n }\r\n\r\n // private _dictionaryLoaded(language: LanguageCode): boolean {\r\n // return this._dictionaries.has(language);\r\n // }\r\n}\r\n","export class SettingsOptions {\r\n public showStockStatus: boolean = false;\r\n public showZoomButton: boolean = false;\r\n public showTagFilter: boolean = false;\r\n public showAsConfigured: boolean = false;\r\n public inlineAnswers: boolean = false;\r\n public showArButton: boolean = false;\r\n\r\n public arEnabled: boolean = false;\r\n public vrEnabled: boolean = false;\r\n}\r\n","import { RenderModes } from './render-modes';\r\n\r\nexport class RenderParameters {\r\n public host: string = \"\";\r\n public port: number = 0;\r\n public secure: boolean = false;\r\n public renderMode: RenderModes = RenderModes.RenderShop;\r\n}\r\n","/** AUTO GENERATED FILE. DO NOT CHANGE.. **/\n\nexport enum IconEnum {\n AddToCartDrop = \"add_to_cart_drop\",\n DeliveryTruck = \"delivery_truck\",\n Download = \"download\",\n FullScreen = \"full_screen\",\n Location = \"location\",\n Logo = \"logo\",\n MagicWand = \"magic_wand\",\n NormalScreen = \"normal_screen\",\n Quote = \"quote\",\n Refresh = \"refresh\",\n ThreeD = \"three_d\",\n Truck = \"truck\",\n TwoD = \"two_d\",\n Warehouse = \"warehouse\"\n}","import { SettingsOptions } from './settings-options';\r\nimport { RenderParameters } from './render-parameters';\r\n\r\nexport class Settings {\r\n\r\n public url: string;\r\n public schema: string;\r\n public version: string;\r\n public branch: string;\r\n public currency: number;\r\n public username: string;\r\n public password: string;\r\n public session: any = undefined;\r\n public useGroups: boolean = true;\r\n public useRenders: boolean = false;\r\n public useEncryption: boolean = true;\r\n public useMatch: boolean = false;\r\n public assetPath: string;\r\n public assetIndex: string;\r\n public currencySymbol: string = '€';\r\n public threeDAssetPath: string;\r\n public lightPresetsIndex: string;\r\n public additionalTranslationFile: string;\r\n public gtm: string;\r\n public client: string;\r\n public timeoutInMs: number;\r\n public languageCode: string;\r\n public options: SettingsOptions = new SettingsOptions();\r\n public renderParameters: RenderParameters = new RenderParameters();\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { JsonUtilsService } from '../utils/json-utils.service';\r\nimport { DictionaryService } from './dictionary.service';\r\nimport { Settings } from '../model/settings';\r\nimport { SettingsOptions } from '../model/settings-options';\r\n\r\ndeclare let settings: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductSettingsService {\r\n\r\n public set settings(value: Settings) {\r\n this._settings = value;\r\n }\r\n\r\n public get settings(): Settings {\r\n return this._settings;\r\n }\r\n\r\n public settingsLoaded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _settings: Settings;\r\n\r\n constructor(\r\n private _jsonUtilsService: JsonUtilsService,\r\n private _dictionaryService: DictionaryService\r\n ) {\r\n }\r\n\r\n public async initializeSettings(): Promise<void> {\r\n // see if there's a json file for application settings\r\n if (typeof settings === 'undefined') {\r\n const jsonSettings = await this._jsonUtilsService.readJsonFile('product-settings.json');\r\n if (jsonSettings) {\r\n this.settings = Object.assign(new Settings(), jsonSettings);\r\n this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);\r\n this.settingsFinished();\r\n }\r\n } else {\r\n this.settings = Object.assign(new Settings(), settings);\r\n this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);\r\n this.settingsFinished();\r\n }\r\n }\r\n\r\n public async createSettingsFromObject(obj: any): Promise<void> {\r\n if (!this.settings) {\r\n this.settings = new Settings();\r\n }\r\n if (obj.hasOwnProperty('url')) {\r\n this.settings.url = obj['url'];\r\n this._dictionaryService.rootUrl = this.settings.url.replace('/ajaxservice', '');\r\n }\r\n if (obj.hasOwnProperty('schema')) {\r\n this.settings.schema = obj['schema'];\r\n }\r\n if (obj.hasOwnProperty('version')) {\r\n this.settings.version = obj['version'];\r\n }\r\n if (obj.hasOwnProperty('branch')) {\r\n this.settings.branch = obj['branch'];\r\n }\r\n if (obj.hasOwnProperty('currency')) {\r\n this.settings.currency = obj['currency'];\r\n }\r\n if (obj.hasOwnProperty('client')) {\r\n this.settings.client = obj['client'];\r\n }\r\n if (obj.hasOwnProperty('languageCode')) {\r\n this.settings.languageCode = obj['languageCode'];\r\n }\r\n if (obj.hasOwnProperty('username')) {\r\n this.settings.username = obj['username'];\r\n }\r\n if (obj.hasOwnProperty('password')) {\r\n this.settings.password = obj['password'];\r\n }\r\n if (obj.hasOwnProperty('timeoutInMs')) {\r\n this.settings.timeoutInMs = obj['timeoutInMs'];\r\n }\r\n if (obj.hasOwnProperty('session')) {\r\n this.settings.session = obj['session'];\r\n }\r\n if (obj.hasOwnProperty('useGroups')) {\r\n this.settings.useGroups = obj['useGroups'];\r\n }\r\n if (obj.hasOwnProperty('useEncryption')) {\r\n this.settings.useEncryption = obj['useEncryption'];\r\n }\r\n if (obj.hasOwnProperty('useMatch')) {\r\n this.settings.useMatch = obj['useMatch'];\r\n }\r\n if (obj.hasOwnProperty('assetPath')) {\r\n this.settings.assetPath = obj['assetPath'];\r\n if (this.settings.assetPath[this.settings.assetPath.length - 1] !== '/') {\r\n this.settings.assetPath += '/';\r\n }\r\n this.settings.threeDAssetPath = this.settings.assetPath;\r\n }\r\n if (obj.hasOwnProperty('threeDAssetPath')) {\r\n this.settings.threeDAssetPath = obj['threeDAssetPath'];\r\n if (this.settings.threeDAssetPath[this.settings.threeDAssetPath.length - 1] !== '/') {\r\n this.settings.threeDAssetPath += '/';\r\n }\r\n }\r\n if (obj.hasOwnProperty('currencySymbol')) {\r\n this.settings.currencySymbol = obj['currencySymbol'];\r\n }\r\n if (obj.hasOwnProperty('gtm')) {\r\n this.settings.gtm = obj['gtm'];\r\n }\r\n if (obj.hasOwnProperty('assetIndex')) {\r\n this.settings.assetIndex = obj['assetIndex'];\r\n }\r\n if (obj.hasOwnProperty('lightPresetsIndex')) {\r\n this.settings.lightPresetsIndex = obj['lightPresetsIndex'];\r\n }\r\n if (obj.hasOwnProperty('additionalTranslationFile')) {\r\n this.settings.additionalTranslationFile = obj['additionalTranslationFile'];\r\n }\r\n if (obj.hasOwnProperty('options')) {\r\n this.settings.options = obj['options'];\r\n }\r\n if (obj.hasOwnProperty('renderParameters')) {\r\n this.settings.renderParameters = obj['renderParameters'];\r\n }\r\n this.settingsFinished();\r\n }\r\n\r\n public async settingsFinished(): Promise<void> {\r\n await this._dictionaryService.setDictionary(this.settings.languageCode);\r\n this.settingsLoaded.next(true);\r\n }\r\n}\r\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\n\r\nimport {ProductConnectorAdapterService} from './product-connector-adapter.service';\r\nimport {ArticleFullObject} from '@colijnit/articleapi/build/model/article-full-object';\r\nimport {SuperArticle} from '@colijnit/articleapi/build/model/super-article';\r\nimport {ProductSettingsService} from './product-settings.service';\r\nimport {Settings} from '../model/settings';\r\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\r\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\r\n\r\n// Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductConnectorService implements OnDestroy {\r\n\r\n public get shouldShowLoader(): boolean {\r\n return this._shouldShowLoader;\r\n }\r\n\r\n public controllerInitialized: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n private _shouldShowLoader: boolean;\r\n private _initializing = false;\r\n private _initialized = false;\r\n\r\n private readonly connectorOptions: Options = new Options();\r\n\r\n private readonly subs: Subscription[] = [];\r\n\r\n constructor(\r\n public connector: ProductConnectorAdapterService,\r\n private _settingsService: ProductSettingsService\r\n ) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n public async initDefaultDevelopTestConnection(): Promise<void> {\r\n if (this._initialized || this._initializing) {\r\n return;\r\n }\r\n this._initializing = true;\r\n try {\r\n const settings: Settings = this._settingsService.settings;\r\n if (!settings) {\r\n throw Error('Settings are not defined!');\r\n }\r\n this.connectorOptions.url = settings.url;\r\n this.connectorOptions.schema = settings.schema;\r\n this.connectorOptions.version = settings.version;\r\n this.connectorOptions.branch = settings.branch;\r\n this.connectorOptions.username = settings.username;\r\n this.connectorOptions.password = settings.password;\r\n this.connectorOptions.session = settings.session;\r\n this.connectorOptions.currencyId = settings.currency;\r\n this.connectorOptions.useGroups = settings.useGroups;\r\n this.connectorOptions.useRenders = settings.useRenders;\r\n this.connectorOptions.useLoginEncryption = settings.useEncryption;\r\n this.connectorOptions.languageCode = settings.languageCode;\r\n\r\n this.connector.initConnector(this.connectorOptions);\r\n this._settingsService.settings.session = this.connectorOptions.session;\r\n this.controllerInitialized.next(true);\r\n this._initialized = true;\r\n this._initializing = false;\r\n } catch (e) {\r\n this._initializing = false;\r\n }\r\n }\r\n\r\n public setInstance(instanceId: string): void {\r\n this.connector.setInstance(instanceId);\r\n }\r\n\r\n public async getFullArticle(sku: string): Promise<ArticleFullObject> {\r\n const goodId: number = await this.connector.getGoodIdFromArticleNr(sku);\r\n if (goodId) {\r\n return this.connector.getArticleFullObject(goodId);\r\n }\r\n return null;\r\n }\r\n\r\n public getDocumentContent(docId: number, thumbnail: boolean = true): Promise<DocumentContent> {\r\n return this.connector.getDocumentContent(docId, thumbnail);\r\n }\r\n\r\n public getDeliveryPrognosis(goodId: number): Promise<DeliveryPrognosis> {\r\n return this.connector.getDeliveryPrognosis(goodId);\r\n }\r\n\r\n public async getSelectorDeliveryDate(): Promise<DeliveryPrognosis> {\r\n return this.connector.getSelectorDeliveryDate();\r\n }\r\n\r\n public getDeliveryDate2(goodId: number): Promise<DeliveryPrognosis> {\r\n return this.connector.getDeliveryDate2(goodId);\r\n }\r\n\r\n public getSuperArticle(id: string): Promise<SuperArticle> {\r\n return this.connector.getSuperArticle(id);\r\n }\r\n\r\n public getJsonArticleFlatTree(\r\n goodId: number,\r\n goodType: string,\r\n quantity: number,\r\n showLoader: boolean = true,\r\n instanceId?: number,\r\n configuratorStatistics?: ConfiguratorStatisticsEnvironment): Promise<string> {\r\n return this.connector.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, instanceId, configuratorStatistics);\r\n }\r\n\r\n public onShowLoaderChange(showLoader: boolean): void {\r\n this._shouldShowLoader = showLoader;\r\n }\r\n}\r\n","import {Directive, Injectable, Output} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {ArticleListObject} from '@colijnit/articleapi/build/model/article-list-object';\r\nimport {Selection} from '@colijnit/articleapi/build/model/selection';\r\nimport {ArticleQuickSel} from '@colijnit/articleapi/build/model/article-quick-sel';\r\n\r\n@Directive()\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductEventService {\r\n\r\n @Output()\r\n public onAddToCart: Subject<string> = new Subject<string>();\r\n\r\n @Output()\r\n public onAlternativeClick: Subject<ArticleListObject> = new Subject<ArticleListObject>();\r\n\r\n @Output()\r\n public onAddToQuote: Subject<string> = new Subject<string>();\r\n\r\n @Output()\r\n public onForceRenderImage: Subject<void> = new Subject<void>();\r\n\r\n public onArticleReceived: Subject<ArticleQuickSel> = new Subject<ArticleQuickSel>();\r\n\r\n public onSelectionsReceived: Subject<Selection[]> = new Subject<Selection[]>();\r\n\r\n public onImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onRenderStarted: Subject<void> = new Subject<void>();\r\n\r\n public onRenderImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onDraftRenderImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onArticleInfoReceived: Subject<string> = new Subject<string>();\r\n\r\n public onUpdateProductInfoTab: Subject<number> = new Subject<number>();\r\n\r\n}\r\n","/** AUTO GENERATED FILE. DO NOT CHANGE.. **/\n\nexport const IconSvg: {[iconName: string]: string} = {\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\"\n};","export enum SelectorType {\r\n TwoD = '2D',\r\n ThreeD = '3D',\r\n Omni = 'Omni'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { IconSvg } from '../model/icon';\r\nimport { IconEnum } from '../enum/icon.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconCacheService {\r\n /**\r\n * All the icons as a large JSON object, from the all-icons.json file.\r\n * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.\r\n */\r\n public get iconCache(): { [iconName: string]: SafeHtml } {\r\n return this._iconCache;\r\n }\r\n\r\n private _iconCache: { [iconName: string]: SafeHtml } = {};\r\n\r\n private _allIcons: any;\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n this._allIcons = IconSvg;\r\n this.setIconCache();\r\n }\r\n\r\n public getIcon(iconName: IconEnum): SafeHtml {\r\n return this._iconCache[iconName.toLowerCase()];\r\n }\r\n\r\n public setIconCache(): void {\r\n for (const key in this._allIcons) {\r\n if (this._allIcons.hasOwnProperty(key)) {\r\n this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { CoDocument } from '@colijnit/mainapi/build/model/co-document';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { Subscription } from 'rxjs';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\n\n@Component({\n selector: 'app-image-carousel',\n templateUrl: './image-carousel.component.html',\n styleUrls: ['./image-carousel.component.scss']\n})\nexport class ImageCarouselComponent implements OnInit, OnDestroy {\n\n public readonly icons: typeof IconEnum = IconEnum;\n\n public showLoader: boolean = false;\n\n @ViewChild('carousel', { read: ElementRef })\n public carousel: ElementRef;\n\n @Input()\n public showRefresh: boolean = false;\n\n @Input()\n public set images(value: CoDocument[]) {\n if (value && value.length > 0) {\n this._images = value;\n this._loadImages();\n this._changeDetector.detectChanges();\n }\n }\n\n @HostListener('window:resize')\n public handleWindowResize(): void {\n this.resizing = true;\n this._scrollCarouselToIndex();\n clearTimeout(this._resizeTimer);\n this._resizeTimer = setTimeout(() => {\n this.resizing = false;\n }, 200);\n }\n\n @HostListener('swipeleft')\n public gotoNextSlide(): void {\n this.currentIndex++;\n }\n\n @HostListener('swiperight')\n public gotoPrevSlide(): void {\n this.currentIndex--;\n }\n\n public isCurrentIndex(index: number): boolean {\n return this.currentIndex === index;\n }\n\n public get currentIndex(): number {\n return this._currentIndex;\n }\n\n public set currentIndex(value: number) {\n this._currentIndex = value;\n this._scrollCarouselToIndex();\n }\n\n @HostBinding('class.resizing')\n public resizing = false;\n\n public get images(): CoDocument[] {\n return this._images;\n }\n\n private _resizeTimer: any;\n\n private _currentIndex = 0;\n\n private _images = [];\n private _subs: Subscription[] = [];\n\n constructor(\n private _ione: ProductConnectorService,\n private _appEventService: ProductEventService,\n private _changeDetector: ChangeDetectorRef,\n private _domSanitizer: DomSanitizer,\n public iconCache: IconCacheService,\n ) {\n this._subs.push(\n this._appEventService.onRenderStarted.subscribe(() => {\n this.showLoader = true;\n }),\n this._appEventService.onDraftRenderImageReceived.subscribe((url: string) => {\n if (this._images[0] instanceof CoDocument) {\n this._images.unshift(url);\n } else {\n this._images[0] = url;\n }\n this.showLoader = false;\n }),\n );\n\n }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.carousel = undefined;\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public handleThumbClick(index: number): void {\n this.currentIndex = index;\n }\n\n public onForceRenderImage(): void {\n this._appEventService.onForceRenderImage.next();\n }\n\n public getImageSrc(image: CoDocument | CustomEvent): SafeUrl {\n let source = '';\n if (image instanceof CoDocument) {\n if (image.filePath) {\n source = image.filePath;\n } else {\n source = image.documentBodyAsDataUri;\n }\n } else if (image.detail !== undefined) {\n source = image.detail;\n }\n\n return this._domSanitizer.bypassSecurityTrustUrl(source);\n }\n\n private _loadImages(): void {\n if (this._images) {\n this._images.forEach((i: CoDocument) => {\n if (!i.documentBody && !i.filePath) {\n this._ione.getDocumentContent(i.documentId, false).then((content: DocumentContent) => {\n if (content) {\n i.documentBody = content.documentContent;\n }\n });\n }\n });\n }\n }\n\n private _scrollCarouselToIndex(): void {\n if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {\n const movePx: number = this.currentIndex * this.carousel.nativeElement.clientWidth;\n if (this.carousel && this.carousel.nativeElement) {\n this.carousel.nativeElement.scrollLeft = movePx;\n // this.carousel.nativeElement.scrollTo({\n // left: movePx,\n // behavior: 'smooth'\n // });\n }\n }\n }\n\n}\n","export class StockAndDelivery {\r\n\r\n public stock: number = 0;\r\n public deliveryDescription: string;\r\n\r\n constructor(stock?: any, deliveryDescription?: string) {\r\n this.stock = stock;\r\n this.deliveryDescription = deliveryDescription;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport enum TabType {\n Additional = 'additional',\n Properties = 'properties'\n}\n\n@Component({\n selector: 'app-product-info',\n templateUrl: './product-info.component.html',\n styleUrls: ['./product-info.component.scss'],\n animations: [\n trigger('showContent', [\n state('void', style({'opacity': '0'})),\n state('*', style({'opacity': '1'})),\n transition('void => *', animate('200ms 100ms ease-in-out')),\n ])\n ]\n})\nexport class ProductInfoComponent implements OnInit {\n\n public readonly tabType: typeof TabType = TabType;\n\n @Input()\n public article: ArticleFullObject;\n\n public currentTab: TabType = TabType.Additional;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n public switchTab(tab: TabType): void {\n this.currentTab = tab;\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { Subscription } from 'rxjs';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\nimport { SelectorType } from '../../enum/selector-type.enum';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { ProductSettingsService } from '../../service/product-settings.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\n\n@Component({\n selector: 'app-product-page',\n templateUrl: './product-page.component.html',\n styleUrls: ['./product-page.component.scss'],\n animations: [\n trigger('toggleFullScreen', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%'})),\n state('halfscreen', style({'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleTopLeft', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'left': '0'})),\n state('halfscreen', style({'position': 'absolute', 'top': '*', 'left': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleTopRight', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'right': '0'})),\n state('halfscreen', style({'position': '*', 'top': '*', 'right': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleFullScreenRight', [\n state('fullscreen', style({'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0'})),\n state('halfscreen', style({'position': '*', 'width': '*', 'top': '*', 'right': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleVisibilityByState', [\n state('hide', style({'opacity': '0', 'display': 'none'})),\n state('show', style({'display': 'block', 'opacity': '1'})),\n transition('hide <=> show', animate('200ms 100ms ease-in-out')),\n ]),\n trigger('toggleVisibility', [\n state('void', style({'opacity': '0'})),\n state('*', style({'opacity': '1'})),\n transition('void => *', animate('200ms ease-in-out')),\n ])\n ]\n})\nexport class ProductPageComponent implements OnInit, OnDestroy, AfterViewInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @ViewChild('configurator', { read: ElementRef })\n public configurator: ElementRef;\n\n @ViewChild('selections', { read: ElementRef })\n public selections: ElementRef;\n\n @ViewChild('fullscreenbutton', { read: ElementRef })\n public fullscreenbutton: ElementRef;\n\n @Input()\n public set sku(value: string) {\n if (value) {\n if (this.configuring) {\n this.show3D = false;\n this.fullScreen = false;\n this.configuring = false;\n this._changeDetector.detectChanges();\n }\n this._sku = value;\n this._getArticle();\n }\n }\n\n public get sku(): string {\n return this._sku;\n }\n\n public set fullScreen(value: boolean) {\n this._fullScreen = value;\n this.fullscreenAnimationEnd = true;\n this._changeDetector.detectChanges();\n // setTimeout(() => {\n // this.fullscreenAnimationEnd = true;\n // }, 400)\n }\n\n public get fullScreen(): boolean {\n return this._fullScreen;\n }\n\n public get fullScreenIcon(): IconEnum {\n return this.fullScreen ? this.icon.NormalScreen : this.icon.FullScreen;\n }\n\n public set currentView(value: SelectorType) {\n this._currentView = value;\n this.show2D = this._currentView === SelectorType.TwoD;\n this.show3D = this._currentView === SelectorType.ThreeD;\n this._changeDetector.detectChanges();\n }\n\n public get currentView(): SelectorType {\n return this._currentView;\n }\n\n public article: ArticleFullObject;\n public stockAndDelivery: StockAndDelivery;\n public configurable = false;\n public threeD = false;\n public selectorType: SelectorType;\n public show2D = true;\n public show3D = false;\n public configuring: boolean = false;\n public fullscreenAnimationEnd: boolean = false;\n public settingsLoaded: boolean = false;\n private _sku: string;\n private _initializedSub: Subscription;\n private _fullScreen: boolean = false;\n private _currentView: SelectorType;\n private _subs: Subscription[] = [];\n\n constructor(private _ione: ProductConnectorService,\n private _renderer: Renderer2,\n private _changeDetector: ChangeDetectorRef,\n public iconCache: IconCacheService,\n public settingsService: ProductSettingsService,\n public appEventService: ProductEventService\n ) {\n this._subs.push(\n this.appEventService.onForceRenderImage.subscribe((x) => {\n if (this.selections.nativeElement){\n this.selections.nativeElement.forceRenderImage();\n }\n }),\n this.settingsService.settingsLoaded.subscribe((loaded: boolean) => {\n this.settingsLoaded = loaded;\n })\n );\n\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n if (this._initializedSub) {\n this._initializedSub.unsubscribe();\n }\n this.configurator = undefined;\n this.selections = undefined;\n this.fullscreenbutton = undefined;\n }\n\n public setInstance(event: CustomEvent): void {\n if (event.detail) {\n this._ione.setInstance(event.detail);\n }\n }\n\n public handleStartConfiguration(): void {\n this.configuring = true;\n this._changeDetector.detectChanges();\n }\n\n public showFullScreen(): void {\n this.fullScreen = !this.fullScreen;\n }\n\n private async _getArticle(): Promise<void> {\n if (this._initializedSub) {\n this._initializedSub.unsubscribe();\n }\n this._initializedSub = this._ione.controllerInitialized.subscribe(async (init: boolean) => {\n if (init) {\n this._ione.getFullArticle(this._sku).then((article: ArticleFullObject) => {\n this.article = article;\n this.configurable = this.article.goodType === 'B';\n if (this.configurable) {\n this.currentView = SelectorType.TwoD;\n }\n this.threeD = this.article.is3D;\n this.selectorType = this.article.selectorTypeCustomer;\n this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo: DeliveryPrognosis) => {\n const stockAndDelivery: DeliveryPrognosis = stockInfo;\n this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');\n this._changeDetector.detectChanges();\n });\n this._changeDetector.detectChanges();\n });\n }\n });\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CoDocument } from '@colijnit/mainapi/build/model/co-document';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\n\n@Component({\n selector: 'app-product-documents',\n templateUrl: './product-documents.component.html',\n styleUrls: ['./product-documents.component.css']\n})\nexport class ProductDocumentsComponent {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public showLabel: boolean = false;\n\n @Input()\n public documents: CoDocument[] = [];\n\n constructor(public iconCache: IconCacheService) { }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { ArticleListObject } from '@colijnit/articleapi/build/model/article-list-object';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\n\n@Component({\n selector: 'app-product-related',\n templateUrl: './product-related.component.html',\n styleUrls: ['./product-related.component.scss']\n})\nexport class ProductRelatedComponent {\n\n @Input()\n public refType: number;\n\n @Input()\n public label: string;\n\n @Input()\n public isSmallModus: boolean = true;\n\n @Input()\n public set articles(value: ArticleListObject[]) {\n if (value) {\n if (this.refType && this.refType !== undefined) {\n if (value.length > 0) {\n value.forEach((x: ArticleListObject) => {\n if (x.refType === this.refType) {\n this._articles.push(x);\n }\n });\n }\n } else {\n this._articles = value;\n }\n this._loadImages();\n }\n }\n\n public get articles(): ArticleListObject[] {\n return this._articles;\n }\n\n private _articles: ArticleListObject[] = [];\n\n constructor(\n private _iOne: ProductConnectorService,\n private _appEventService: ProductEventService\n ) { }\n\n public handleContentClick(article: ArticleListObject): void {\n this._appEventService.onAlternativeClick.next(article);\n }\n\n private _loadImages(): void {\n this._articles.forEach((a: ArticleListObject) => {\n if (!a.image.documentBody) {\n this._iOne.getDocumentContent(a.image.documentId).then((content: DocumentContent) => {\n if (content) {\n a.image.documentBody = content.documentContent;\n }\n });\n }\n });\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n @Input()\n public label: string;\n\n @Input()\n public amount: number;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { ProductConnectorService } from './product-connector.service';\r\nimport { SuperArticle } from '@colijnit/articleapi/build/model/super-article';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductModuleService {\r\n\r\n private _superArticles: Map<string, SuperArticle> = new Map();\r\n\r\n constructor(\r\n private _iOneConnectorService: ProductConnectorService\r\n ) {}\r\n\r\n public async getArticle(id: string): Promise<SuperArticle> {\r\n return await this._getArticle(id);\r\n }\r\n\r\n private async _getArticle(id: string): Promise<SuperArticle> {\r\n if (this._superArticles.has(id)) {\r\n return this._superArticles.get(id);\r\n } else {\r\n const mainArticle = await this._iOneConnectorService.getSuperArticle(id);\r\n this._superArticles.set(id, mainArticle);\r\n return mainArticle;\r\n }\r\n }\r\n}\r\n","export class BitUtils {\r\n\r\n public static IsShortDescription(bit: number): boolean {\r\n return (1 & bit) > 0;\r\n }\r\n\r\n public static IsFullDescription(bit: number): boolean {\r\n return (2 & bit) > 0;\r\n }\r\n\r\n public static IsMetaTitle(bit: number): boolean {\r\n return (4 & bit) > 0;\r\n }\r\n\r\n public static IsMetaDescription(bit: number): boolean {\r\n return (8 & bit) > 0;\r\n }\r\n\r\n public static IsMetaKeys(bit: number): boolean {\r\n return (16 & bit) > 0;\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnInit, SecurityContext } from '@angular/core';\nimport { CoText } from '@colijnit/mainapi/build/model/co-text';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { ProductModuleService } from '../../service/product-module.service';\nimport { SuperArticle } from '@colijnit/articleapi/build/model/super-article';\nimport { BitUtils } from '../../utils/bit-utils';\n\n@Component({\n selector: 'app-product-additional-info',\n templateUrl: './product-additional-info.component.html',\n styleUrls: ['./product-additional-info.component.scss']\n})\nexport class ProductAdditionalInfoComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n if (value) {\n this._article = value;\n this._buildInfo().then(() => {\n this._changeDetector.detectChanges();\n });\n }\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n @Input()\n public showLabel: boolean = false;\n\n public textParts: SafeHtml[] = [];\n public info: string;\n\n private _article: ArticleFullObject;\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _moduleService: ProductModuleService,\n private _changeDetector: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n }\n\n private _getTextsSuperArticle(): Promise<SafeHtml[]> {\n return new Promise((resolve: Function, reject: Function) => {\n const texts: SafeHtml[] = [];\n if (this.article.superArticleNr) {\n this._moduleService.getArticle(this.article.superArticleNr).then((mainArticle: SuperArticle) => {\n mainArticle.texts.forEach((txt: CoText) => {\n if (BitUtils.IsFullDescription(txt.publication)) {\n const safeTxt: SafeHtml = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);\n texts.push(safeTxt);\n }\n });\n resolve(texts);\n }).catch(() => {\n resolve([]);\n });\n } else {\n resolve(texts);\n }\n });\n }\n\n private async _prepareArticleTexts(): Promise<void> {\n const texts: SafeHtml[] = await this._getTextsSuperArticle();\n if (texts.length > 0) {\n this.textParts.push(...texts);\n }\n if (this.article.texts) {\n this.article.texts.forEach((txt: CoText) => {\n if (BitUtils.IsFullDescription(txt.publication)) {\n const safeTxt: SafeHtml = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);\n this.textParts.push(safeTxt);\n }\n });\n }\n }\n\n private async _buildInfo(): Promise<void> {\n this.textParts.length = 0;\n await this._prepareArticleTexts();\n if (this.textParts.length === 0) {\n if (this.article.additionalDescription) {\n this.textParts.push(this.article.additionalDescription);\n } else if (this.article.description) {\n this.textParts.push(this.article.description);\n }\n }\n return;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\n\nexport const propertyMap: Map<string, string> = new Map([\n ['articleNr', 'ARTICLE_NUMBER'],\n ['catExtra', 'CATEGORY'],\n ['catType', 'CATEGORY_TYPE'],\n ['description', 'DESCRIPTION'],\n ['material', 'MATERIAL'],\n ['title', 'TITLE'],\n ['turnOverGroup', 'TURNOVERGROUP'],\n ['height', 'HEIGHT'],\n ['width', 'WIDTH']\n]);\n\n@Component({\n selector: 'app-product-properties',\n templateUrl: './product-properties.component.html',\n styleUrls: ['./product-properties.component.scss']\n})\nexport class ProductPropertiesComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n this._article = value;\n this._prepareProperties();\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n @Input()\n public showLabel: boolean = false;\n\n public properties: {key: string, value: string}[] = [];\n\n private _article: ArticleFullObject;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n private _prepareProperties(): void {\n this.properties.length = 0;\n if (!this._article) {\n return;\n }\n propertyMap.forEach((value: string, key: string) => {\n if (this.article.hasOwnProperty(key)) {\n this.properties.push({key: value, value: this.article[key]});\n }\n });\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport { DictionaryService } from '../service/dictionary.service';\r\n\r\n@Pipe({\r\n name: 'localize'\r\n})\r\n// A pipe for localizing string values in view templates.\r\nexport class LocalizePipe implements PipeTransform {\r\n\r\n constructor(private _dictionaryService: DictionaryService) {}\r\n\r\n transform(value: string, upperCaseFirst: boolean = true, replace: string|string[] = []): string {\r\n if (!value) {\r\n return '';\r\n }\r\n replace = replace ? replace : [];\r\n if (!Array.isArray(replace)) {\r\n replace = [replace];\r\n }\r\n return this._dictionaryService.get(value, upperCaseFirst, ...replace);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\nimport { LocalizePipe } from '../../pipe/localize.pipe';\n\n@Component({\n selector: 'app-product-delivery',\n templateUrl: './product-delivery.component.html',\n styleUrls: ['./product-delivery.component.scss'],\n providers: [ LocalizePipe ]\n})\nexport class ProductDeliveryComponent implements OnInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public set stockAndDelivery(value: StockAndDelivery) {\n if (value) {\n this.deliveryDescription = value.deliveryDescription;\n if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {\n this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');\n }\n }\n }\n\n public deliveryDescription: string;\n public iconData: SafeHtml;\n\n constructor(\n private _localizePipe: LocalizePipe,\n private _iOne: ProductConnectorService,\n private _iconCache: IconCacheService\n ) {\n this.iconData = this._iconCache.getIcon(this.icon.Truck);\n }\n\n ngOnInit() {\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\n\n@Component({\n selector: 'app-product-stock',\n templateUrl: './product-stock.component.html',\n styleUrls: ['./product-stock.component.scss']\n})\nexport class ProductStockComponent implements OnInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public set stockAndDelivery(value: StockAndDelivery) {\n if (value) {\n this.numberInStock = value.stock;\n }\n }\n\n public numberInStock: number;\n public iconData: SafeHtml;\n\n constructor(private _iOne: ProductConnectorService, private _iconCache: IconCacheService) {\n this.iconData = this._iconCache.getIcon(this.icon.Warehouse);\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-product-symbols',\n templateUrl: './product-symbols.component.html',\n styleUrls: ['./product-symbols.component.scss']\n})\nexport class ProductSymbolsComponent implements OnInit {\n\n @Input()\n public set symbols(value: any) {\n this._symbols = value;\n if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {\n this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');\n }\n if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {\n for (let i = 0; i < this._symbols['symbolString'].length; i++) {\n this.symbolStrings.push(this._symbols['symbolString'][i]);\n }\n }\n }\n\n public get symbols(): any {\n return this._symbols;\n }\n\n @HostBinding('class')\n public _className: string;\n\n public symbolStrings: string[] = [];\n\n private _symbols: any;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ArticlePricing } from '@colijnit/articleapi/build/model/article-pricing';\n\n@Component({\n selector: 'app-product-price',\n templateUrl: './product-price.component.html',\n styleUrls: ['./product-price.component.scss']\n})\nexport class ProductPriceComponent implements OnInit {\n\n @Input()\n public set pricing(value: any) {\n this._pricing = value;\n this._setPrices();\n }\n\n public get pricing(): any {\n return this._pricing;\n }\n\n @Input()\n public set configurable(value: boolean) {\n this._configurable = value;\n this._setPrices();\n }\n\n public fromPrice: number;\n public toPrice: number;\n public valutaSign: string;\n public fromLabel: string;\n public toLabel: string;\n public showFromPrice: boolean = false;\n\n private _pricing: ArticlePricing;\n private _configurable: boolean = false;\n\n constructor(private _changeDetector: ChangeDetectorRef) { }\n\n ngOnInit() {\n }\n\n private _setPrices(): void {\n if (this._pricing) {\n this.valutaSign = this._getSign(this._pricing.retailCurrency);\n if (this._configurable) {\n this.fromPrice = this._pricing.retailBasePrice ? this._pricing.retailBasePrice : this._pricing.priceBaseline;\n this.fromLabel = this._pricing.retailBasePrice ? 'PRICE' : 'FROM';\n this.toPrice = undefined;\n } else {\n this.fromPrice = this._pricing.retailSuggestedPrice ? this._pricing.retailSuggestedPrice : this._pricing.retailBasePrice;\n this.fromLabel = this._pricing.retailSuggestedPrice ? 'Was' : 'PRICE';\n this.toPrice = this._pricing.retailSuggestedPrice ? this._pricing.retailBasePrice : undefined;\n this.toLabel = this._pricing.retailSuggestedPrice ? 'IS_NOW' : '';\n }\n this._changeDetector.detectChanges();\n }\n }\n\n private _getSign(currency: string): string {\n switch (currency) {\n case 'EUR':\n return '€';\n default:\n return '€';\n }\n }\n\n}\n","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { ArticleQuantity } from '../../model/article-quantity.model';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport {ArticleExtended} from '@colijnit/articleapi/build/model/article-extended.bo';\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\nimport {ProductSettingsService} from '../../service/product-settings.service';\n\n@Component({\n selector: 'app-product-addtocart',\n templateUrl: './product-addtocart.component.html',\n styleUrls: ['./product-addtocart.component.scss']\n})\nexport class ProductAddtocartComponent implements OnInit, OnDestroy {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @ViewChild('addtocartbutton', { read: ElementRef })\n public addToCartButton: ElementRef;\n\n @Input()\n public article: ArticleFullObject;\n\n @Input()\n public configurable: boolean = false;\n\n @Input()\n public configuring: boolean = false;\n\n @HostBinding('class.full-screen')\n @Input()\n public fullscreen: boolean = false;\n\n @Input()\n public set quantity(value: number) {\n this._quantity = Math.max(1, value);\n }\n\n public get quantity(): number {\n return this._quantity;\n }\n\n @Output()\n public startConfiguration: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public addToCartClick: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n public addToQuoteClick: EventEmitter<number> = new EventEmitter<number>();\n\n public showQuoteButton: boolean = false;\n\n private _quantity = 1;\n\n constructor(\n public iconCache: IconCacheService,\n private _ioneControllerService: ProductConnectorService,\n private _appEventService: ProductEventService,\n private _settingsService: ProductSettingsService\n ) { }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.addToCartButton = undefined;\n }\n\n public async handleAddToCartClick(quantity: number): Promise<void> {\n this._appEventService.onAddToCart.next(await this._getJSONFromArticleObject({article: this.article, quantity: quantity}));\n }\n\n public async handleAddToQuoteClick(quantity: number): Promise<void> {\n this._appEventService.onAddToQuote.next(await this._getJSONFromArticleObject({article: this.article, quantity: quantity}));\n }\n\n private async _getJSONFromArticleObject(article: ArticleQuantity): Promise<string> {\n const configuratorStatistics = new ConfiguratorStatisticsEnvironment();\n configuratorStatistics.userType = 'iOneProductPage';\n configuratorStatistics.transactionType = 'Sales';\n configuratorStatistics.actionDomain = 'bundle';\n configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';\n configuratorStatistics.webHost = window.location.host;\n configuratorStatistics.bundleHost = window.location.host;\n return await this._ioneControllerService.getJsonArticleFlatTree(\n article.article.goodId, article.article.goodType, article.quantity, true, undefined, configuratorStatistics);\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { SelectorType } from '../../enum/selector-type.enum';\n\n@Component({\n selector: 'app-product-selector-type',\n templateUrl: './product-selector-type.component.html',\n styleUrls: ['./product-selector-type.component.scss']\n})\nexport class ProductSelectorTypeComponent implements OnInit {\n\n public readonly type: typeof SelectorType = SelectorType;\n public readonly icons: typeof IconEnum = IconEnum;\n\n @Input()\n public show2D: boolean;\n\n @Input()\n public show3D: boolean;\n\n @Input()\n public currentType: SelectorType;\n\n @Output()\n public onIconClick: EventEmitter<SelectorType> = new EventEmitter();\n\n @Output()\n public currentTypeChange: EventEmitter<SelectorType> = new EventEmitter();\n\n public twoDIcon: SafeHtml | null;\n public threeDIcon: SafeHtml | null;\n\n constructor(\n private _iconCache: IconCacheService,\n private _changeDetector: ChangeDetectorRef\n ) {\n this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);\n this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);\n }\n\n ngOnInit() {\n }\n\n public handleIconClick(type: SelectorType): void {\n this.currentType = type;\n this.currentTypeChange.next(this.currentType);\n this.onIconClick.next(this.currentType);\n this._changeDetector.detectChanges();\n }\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {JsonUtilsService} from './utils/json-utils.service';\nimport {ProductConnectorService} from './service/product-connector.service';\nimport {DictionaryService} from './service/dictionary.service';\nimport {Subscription} from 'rxjs';\nimport {ProductEventService} from './service/product-event.service';\nimport {ArticleListObject} from '@colijnit/articleapi/build/model/article-list-object';\nimport {ProductSettingsService} from './service/product-settings.service';\nimport {Selection} from '@colijnit/articleapi/build/model/selection';\nimport {ArticleQuickSel} from '@colijnit/articleapi/build/model/article-quick-sel';\n\n@Component({\n selector: 'app-ione-product',\n templateUrl: './ione-product.component.html',\n styleUrls: ['./ione-product.component.css'],\n encapsulation: ViewEncapsulation.Emulated\n})\nexport class IoneProductComponent implements OnChanges, OnDestroy {\n\n @Input()\n public sku: string;\n\n @Input()\n public set settings(value: any) {\n if (value) {\n let settings: any;\n if (typeof value === 'string') {\n settings = JSON.parse(value);\n } else {\n settings = value;\n }\n this._settingsService.createSettingsFromObject(settings);\n // this._initConnection(settings);\n }\n }\n\n public get settings(): any {\n return this._settings;\n }\n\n @Output()\n public onAddToCart: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n public forceRenderImage: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public onAlternativeClick: EventEmitter<ArticleListObject> = new EventEmitter<ArticleListObject>();\n\n @Output()\n public onArticleInfoReceived: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n public onArticleReceived: EventEmitter<ArticleQuickSel> = new EventEmitter<ArticleQuickSel>();\n\n @Output()\n public onSelectionsReceived: EventEmitter<Selection[]> = new EventEmitter<Selection[]>();\n\n @Output()\n public onAddToQuote: EventEmitter<string> = new EventEmitter<string>();\n\n public upAndLoaded = false;\n private _settings: any;\n private _subs: Subscription[] = [];\n\n constructor (\n private _dictionary: DictionaryService,\n private _jsonUtils: JsonUtilsService,\n private _ione: ProductConnectorService,\n private _changeDetector: ChangeDetectorRef,\n private _appEventService: ProductEventService,\n private _settingsService: ProductSettingsService\n ) {\n // this.sku = 'CF-HILL';\n // this.sku = 'CF-ALMADA';\n // this.sku = 'CF-39904ANT';\n // this.sku = 'CF-22346001';\n // this.sku = '104';\n // this.sku = '1000561986';\n // this.sku = '1000234793';\n // this.sku = '1066';\n // this.sku = '104';\n\n this._subs.push(\n this._settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\n // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),\n this._appEventService.onAddToCart.subscribe(json => this.onAddToCart.emit(json)),\n this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)),\n this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)),\n this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)),\n this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)),\n this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this._changeDetector.detectChanges();\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n private _handleSettingsLoaded(loaded: boolean): void {\n if (loaded) {\n this.upAndLoaded = true;\n this._initConnection();\n }\n }\n\n private _handleAnswerInfoReceived(info: string): void {\n this.onArticleInfoReceived.next(info);\n }\n\n // we need to prepare the settings before we can use it for the 3d configurator bundle\n private async _initConnection(): Promise<void> {\n this._ione.initDefaultDevelopTestConnection();\n // settingsToUse.session = this._ione.connector.connector.session;\n setTimeout(() => {\n this._changeDetector.detectChanges();\n });\n // this._settings = settingsToUse;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { CoText } from '@colijnit/mainapi/build/model/co-text';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { BitUtils } from '../../utils/bit-utils';\n\n@Component({\n selector: 'app-product-additional-description',\n templateUrl: './product-additional-description.component.html',\n styleUrls: ['./product-additional-description.component.scss']\n})\nexport class ProductAdditionalDescriptionComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n this._article = value;\n if (this._article) {\n this.description = this.article.additionalDescription;\n this._prepareDescription();\n }\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n public description: string;\n\n private _article: ArticleFullObject;\n\n constructor(\n private _appEventService: ProductEventService\n ) {}\n\n ngOnInit() {\n }\n\n public onReadMore(): void {\n this._appEventService.onUpdateProductInfoTab.next(0);\n }\n\n private _prepareDescription(): void {\n\n this.description = '';\n\n if (this.article.texts && this.article.texts.length > 0) {\n this.article.texts.forEach((txt: CoText) => {\n if (BitUtils.IsShortDescription(txt.publication)) {\n this.description += txt.text;\n }\n });\n\n this.description = this.description.replace(/<[^>]*>?/gm, '');\n if (this.description.length > 250) {\n this.description = this.description.substr(0, 250) + ' [..]';\n }\n }\n\n }\n\n}\n","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { Subscription } from 'rxjs';\nimport { ProductEventService } from '../../service/product-event.service';\n\n@Component({\n selector: 'app-product-info-tabs',\n templateUrl: './product-info-tabs.component.html',\n styleUrls: ['./product-info-tabs.component.scss']\n})\nexport class ProductInfoTabsComponent implements OnDestroy {\n\n public activeTab: number;\n public activeTabHeight: number = 0;\n\n @ViewChild('tabContent')\n public tabContent: ElementRef;\n\n public tabs: any[] = [];\n\n public articleObject: ArticleFullObject;\n\n @Input ()\n set article(value: ArticleFullObject) {\n if (value) {\n this.articleObject = value;\n this._setupTabs();\n this.updateTab(0);\n }\n }\n\n private _subs: Subscription[] = [];\n\n constructor(\n private _appEventService: ProductEventService\n ) {\n this._subs.push(\n this._appEventService.onUpdateProductInfoTab.subscribe((index: number) => {\n this.updateTab(index);\n this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public updateTab(tabIndex: number) {\n this.activeTab = tabIndex;\n this.updateHeight(tabIndex);\n }\n\n public updateHeight(tabIndex: number): void {\n if (this.tabContent.nativeElement.children.length > 0) {\n if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {\n this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;\n }\n }\n }\n\n private _setupTabs(): void {\n this.tabs.push({ title: 'DESCRIPTION' });\n this.tabs.push({ title: 'FEATURES' });\n\n if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {\n this.tabs.push({ title: 'DOWNLOADS' });\n }\n\n if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {\n this.tabs.push({ title: 'SYMBOLS' });\n }\n\n }\n\n}\n","import {Injectable} from '@angular/core';\r\nimport {ProductSettingsService} from './product-settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductInitializerService {\r\n\r\n constructor(\r\n private _settingsService: ProductSettingsService\r\n ) {\r\n }\r\n\r\n public async initializeApp(): Promise<void> {\r\n return this._settingsService.initializeSettings();\r\n }\r\n\r\n}\r\n","import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\n\nimport {\n ArticleTileModule,\n ButtonModule,\n FilesUploadModule,\n IconModule,\n InputTextModule,\n LevelIndicatorModule,\n LoaderModule,\n NumberPickerModule,\n PriceDisplayPipeModule,\n ScrollContainerModule,\n TileModule\n} from '@colijnit/corecomponents';\nimport { ProductDescriptionComponent } from './components/product-description/product-description.component';\nimport { ImageCarouselComponent } from './components/image-carousel/image-carousel.component';\nimport { ProductPageComponent } from './components/product-page/product-page.component';\nimport { IconCacheService } from './service/icon-cache.service';\nimport { ProductConnectorAdapterService } from './service/product-connector-adapter.service';\nimport { ProductConnectorService } from './service/product-connector.service';\nimport { ProductDocumentsComponent } from './components/product-documents/product-documents.component';\nimport { ProductRelatedComponent } from './components/product-related/product-related.component';\nimport { HeaderComponent } from './components/core/header/header.component';\nimport { ProductInfoComponent } from './components/product-info/product-info.component';\nimport { ProductAdditionalInfoComponent } from './components/product-additional-info/product-additional-info.component';\nimport { ProductPropertiesComponent } from './components/product-properties/product-properties.component';\nimport { ProductDeliveryComponent } from './components/product-delivery/product-delivery.component';\nimport { ProductStockComponent } from './components/product-stock/product-stock.component';\nimport { ProductSymbolsComponent } from './components/product-symbols/product-symbols.component';\nimport { ProductPriceComponent } from './components/product-price/product-price.component';\nimport { ProductAddtocartComponent } from './components/product-addtocart/product-addtocart.component';\nimport { LocalizePipe } from './pipe/localize.pipe';\nimport { ProductSelectorTypeComponent } from './components/product-selector-type/product-selector-type.component';\nimport { IoneProductComponent } from './ione-product.component';\nimport { CommonModule } from '@angular/common';\nimport { ProductAdditionalDescriptionComponent } from './components/product-additional-description/product-additional-description.component';\nimport { ProductInfoTabsComponent } from './components/product-info-tabs/product-info-tabs.component';\n// import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ProductInitializerService } from './service/product-initializer.service';\nimport { ProductSettingsService } from './service/product-settings.service';\n\nexport function initializeApp(context: ProductInitializerService) {\n const x = () => context.initializeApp();\n return x;\n}\n\n@NgModule({\n imports: [\n // BrowserAnimationsModule,\n CommonModule,\n ButtonModule,\n IconModule,\n NumberPickerModule,\n InputTextModule,\n FilesUploadModule,\n LoaderModule,\n ScrollContainerModule,\n TileModule,\n LevelIndicatorModule,\n PriceDisplayPipeModule,\n ArticleTileModule\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n declarations: [\n IoneProductComponent,\n ProductPageComponent,\n ImageCarouselComponent,\n ProductDescriptionComponent,\n ProductDocumentsComponent,\n ProductRelatedComponent,\n HeaderComponent,\n ProductInfoComponent,\n ProductAdditionalInfoComponent,\n ProductPropertiesComponent,\n ProductDeliveryComponent,\n ProductStockComponent,\n ProductSymbolsComponent,\n ProductPriceComponent,\n ProductAddtocartComponent,\n ProductInfoTabsComponent,\n LocalizePipe,\n ProductSelectorTypeComponent,\n ProductAdditionalDescriptionComponent\n ],\n entryComponents: [\n IoneProductComponent\n ],\n providers: [\n ProductSettingsService,\n ProductConnectorService,\n ProductConnectorAdapterService,\n IconCacheService,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeApp,\n deps: [ProductInitializerService],\n multi: true\n }\n ],\n exports: [IoneProductComponent],\n bootstrap: [\n IoneProductComponent\n ]\n})\nexport class IoneProductModule {\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@colijnit/product/app/model/render-modes.ts","ng://@colijnit/product/app/product-version.ts","ng://@colijnit/product/app/utils/json-utils.service.ts","ng://@colijnit/product/app/model/settings-options.ts","ng://@colijnit/product/app/model/render-parameters.ts","ng://@colijnit/product/app/enum/language-code.enum.ts","ng://@colijnit/product/app/model/productSettings.ts","ng://@colijnit/product/app/service/product-connector-adapter.service.ts","ng://@colijnit/product/assets/dictionary/text.properties.ts","ng://@colijnit/product/app/enum/selector-type.enum.ts","ng://@colijnit/product/app/enum/icon.enum.ts","ng://@colijnit/product/app/service/dictionary.service.ts","ng://@colijnit/product/app/service/product-settings.service.ts","ng://@colijnit/product/app/service/product-connector.service.ts","ng://@colijnit/product/app/service/product-event.service.ts","ng://@colijnit/product/app/ione-product.component.ts","ng://@colijnit/product/app/service/product-initializer.service.ts","ng://@colijnit/product/app/components/product-external-source/product-external-source.component.ts","ng://@colijnit/product/app/model/stock-and-delivery.ts","ng://@colijnit/product/app/model/icon.ts","ng://@colijnit/product/app/components/product-info/product-info.component.ts","ng://@colijnit/product/app/service/icon-cache.service.ts","ng://@colijnit/product/app/components/product-page/product-page.component.ts","ng://@colijnit/product/app/components/product-selector-type/product-selector-type.component.ts","ng://@colijnit/product/app/components/image-carousel/image-carousel.component.ts","ng://@colijnit/product/app/components/product-description/product-description.component.ts","ng://@colijnit/product/app/utils/bit-utils.ts","ng://@colijnit/product/app/components/product-additional-description/product-additional-description.component.ts","ng://@colijnit/product/app/components/product-price/product-price.component.ts","ng://@colijnit/product/app/components/product-addtocart/product-addtocart.component.ts","ng://@colijnit/product/app/components/product-related/product-related.component.ts","ng://@colijnit/product/app/components/product-stock/product-stock.component.ts","ng://@colijnit/product/app/pipe/localize.pipe.ts","ng://@colijnit/product/app/components/product-delivery/product-delivery.component.ts","ng://@colijnit/product/app/components/product-info-tabs/product-info-tabs.component.ts","ng://@colijnit/product/app/pipe/pipe.module.ts","ng://@colijnit/product/app/components/product-documents/product-documents.component.ts","ng://@colijnit/product/app/components/core/header/header.component.ts","ng://@colijnit/product/app/components/product-additional-info/product-additional-info.component.ts","ng://@colijnit/product/app/components/product-properties/product-properties.component.ts","ng://@colijnit/product/app/components/product-symbols/product-symbols.component.ts","ng://@colijnit/product/app/components/product-page/product-page.module.ts","ng://@colijnit/product/app/components/product-external-source/product-external-source.module.ts","ng://@colijnit/product/app/ione-product.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","push","__read","o","m","ar","error","__spread","concat","RenderModes","name","description","symVer","publishDate","JsonUtilsService","prototype","readJsonFile","filePath","fetch","response","_a","ok","json","console","e_1","message","Injectable","providedIn","SettingsOptions","showStockStatus","showZoomButton","showTagFilter","showAsConfigured","inlineAnswers","showArButton","arEnabled","vrEnabled","LanguageCode","RenderParameters","host","port","secure","renderMode","RenderShop","ProductSettings","session","undefined","useGroups","useRenders","useLoginEncryption","createWebOrder","useMatch","currencySymbol","options","renderParameters","ProductConnectorAdapterService","showLoader","Subject","_boFactory","BusinessObjectFactory","ngOnDestroy","articleConnector","unsubscribe","initConnector","Articles","connect","transactionConnector","Transaction","subscribe","_this","setInstance","instanceId","getProductBundleSettings","url","upId","tempSettings","schema","toString","MainApi","getPublicParams","productSettings","getDeliveryPrognosis","goodId","branchNr","getSelectorDeliveryDate","deliveryPrognosis","returnValue","getDeliveryDate2","validationResult","success","makeWithRawBackendData","DeliveryPrognosis","resultObject","getJsonConfiguredArticles","configuratorStatistics","getJsonArticleFlatTree","goodType","quantity","getGoodIdFromArticleNr","sku","getArticleFullObject","ArticleFullObject","getSuperArticle","id","branch","getSuperArticleQuickSel","SuperArticle","getDocumentContent","docId","thumbnail","DocumentContent","addWebSessionTransactionLine","getWebTransaction","getWebSessionSalesOrder","SelectorType","IconEnum","Dictionary","strings","nl","ADDITIONAL_DATA","ALTERNATIVE_PRODUCTS","ARTICLE_NUMBER","CATEGORY","CATEGORY_TYPE","CONFIGURE","DELIVERY_TIME_PERIOD","DESCRIPTION","DOCUMENTS","DOWNLOADS","FEATURES","HEIGHT","MATERIAL","PRODUCT_IN_STOCK","PRODUCT_NOT_IN_STOCK","PROPERTIES","QUOTATION","READ_MORE","RELATED_PRODUCTS","SHOPPING_CART_IN","SHOW_IN","STOCK","SYMBOLS","TITLE","TURNOVERGROUP","VARIANTS","WIDTH","de","DictionaryService","_http","_jsonUtils","dictionaryUrl","_dictionaries","Map","_placeholder","_language","_rootUrl","_dictBasePath","setDictionary","language","Dutch","has","dictionary","substr","toLowerCase","set","get","upperCaseFirst","replacementTexts","_i","StringUtils","IsStringWithLength","text","charAt","toUpperCase","slice","ReplaceOccurrencesIn","HttpClient","ProductSettingsService","_jsonUtilsService","_dictionaryService","settingsLoaded","BehaviorSubject","_settings","initializeSettings","settings","jsonSettings","assign","settingsFinished","createSettingsFromObject","obj","ownOptions","ownRenderParameters","hasOwnProperty","assetPath","threeDAssetPath","languageCode","ProductConnectorService","_adapterService","_settingsService","controllerInitialized","_initializing","_initialized","connectorOptions","Options","subs","_shouldShowLoader","forEach","sub","initConnection","Error","_instanceId","getFullArticle","log","onShowLoaderChange","ProductEventService","onAddToCart","onAlternativeClick","onAddToQuote","onForceRenderImage","onArticleReceived","onSelectionsReceived","onImageReceived","onRenderStarted","onRenderImageReceived","onDraftRenderImageReceived","onArticleInfoReceived","onUpdateProductInfoTab","Output","Directive","IoneProductComponent","_dictionary","_ione","_changeDetector","_appEventService","EventEmitter","forceRenderImage","_subs","_handleAddToCart","emit","article","info","_handleAnswerInfoReceived","selections","JSON","parse","ngOnChanges","changes","detectChanges","s","articleTreeData","articleTree","compositeGoods","Array","isArray","subArticles","good","subArticle","articleNumber","ChangeDetectorRef","Input","Component","selector","template","providers","encapsulation","ViewEncapsulation","Emulated","ProductInitializerService","initializeApp","ProductExternalSourceComponent","_sanitizer","_productConnectorService","addToCart","addToQuote","alternativeClick","showProduct","loaded","externalSettings","_externalSource","_prepareExternalSource","showClass","ngOnInit","externalUrl","externalSource","type","parseInt","bundleSettings","username","password","safeUrl","bypassSecurityTrustResourceUrl","DomSanitizer","HostBinding","None","StockAndDelivery","stock","deliveryDescription","TabType","IconSvg","add_to_cart_drop","delivery_truck","download","full_screen","location","logo","magic_wand","normal_screen","quote","refresh","three_d","truck","two_d","warehouse","IconCacheService","_iconCache","_allIcons","setIconCache","getIcon","iconName","bypassSecurityTrustHtml","ProductPageComponent","_renderer","iconCache","settingsService","appEventService","icon","configurable","threeD","show2D","show3D","configuring","fullscreenAnimationEnd","_fullScreen","x","nativeElement","_handleSettingsLoaded","initialized","_sku","fullScreen","_getArticle","NormalScreen","FullScreen","_currentView","TwoD","ThreeD","ngAfterViewInit","_initializedSub","configurator","fullscreenbutton","event","detail","handleStartConfiguration","showFullScreen","init","currentView","is3D","selectorType","selectorTypeCustomer","stockInfo","stockAndDelivery","Renderer2","ViewChild","read","ElementRef","animations","trigger","state","style","position","top","left","width","height","transition","animate","right","opacity","display","ProductSelectorTypeComponent","icons","onIconClick","currentTypeChange","twoDIcon","threeDIcon","handleIconClick","currentType","ImageCarouselComponent","_domSanitizer","showRefresh","resizing","_currentIndex","_images","CoDocument","unshift","_loadImages","handleWindowResize","_scrollCarouselToIndex","clearTimeout","_resizeTimer","setTimeout","gotoNextSlide","currentIndex","gotoPrevSlide","isCurrentIndex","index","carousel","handleThumbClick","getImageSrc","image","source","documentBodyAsDataUri","bypassSecurityTrustUrl","documentBody","documentId","content","documentContent","images","movePx","clientWidth","scrollLeft","HostListener","ProductDescriptionComponent","BitUtils","IsShortDescription","bit","IsFullDescription","IsMetaTitle","IsMetaDescription","IsMetaKeys","ProductAdditionalDescriptionComponent","_article","additionalDescription","_prepareDescription","onReadMore","texts","txt","publication","replace","ProductPriceComponent","showFromPrice","_configurable","_pricing","_setPrices","valutaSign","_getSign","retailCurrency","fromPrice","retailBasePrice","priceBaseline","fromLabel","toPrice","retailSuggestedPrice","toLabel","currency","ProductAddtocartComponent","_ioneControllerService","fullscreen","startConfiguration","addToCartClick","addToQuoteClick","showQuoteButton","_quantity","Math","max","addToCartButton","handleAddToCartClick","_b","_getJSONFromArticleObject","_c","handleAddToQuoteClick","ConfiguratorStatisticsEnvironment","userType","transactionType","actionDomain","sessionId","webHost","window","bundleHost","ProductRelatedComponent","_iOne","isSmallModus","_articles","refType","handleContentClick","a","ProductStockComponent","iconData","Warehouse","numberInStock","LocalizePipe","transform","Pipe","ProductDeliveryComponent","_localizePipe","Truck","ProductInfoTabsComponent","activeTabHeight","tabs","updateTab","tabContent","scrollIntoView","behavior","articleObject","_setupTabs","tabIndex","activeTab","updateHeight","children","offsetHeight","title","documents","symbols","PipeModule","NgModule","exports","declarations","ProductDocumentsComponent","showLabel","HeaderComponent","ProductInfoComponent","tabType","currentTab","Additional","switchTab","tab","ProductAdditionalInfoComponent","_connectorService","textParts","_superArticles","_buildInfo","_getTextsSuperArticle","superArticleNr","mainArticle","safeTxt","sanitize","SecurityContext","HTML","_prepareArticleTexts","propertyMap","ProductPropertiesComponent","properties","_prepareProperties","ProductSymbolsComponent","symbolStrings","_symbols","_className","ProductPageModule","imports","CommonModule","IconModule","LoaderModule","NumberPickerModule","ButtonModule","PriceDisplayPipeModule","InputTextModule","FilesUploadModule","ScrollContainerModule","TileModule","LevelIndicatorModule","ArticleTileModule","schemas","CUSTOM_ELEMENTS_SCHEMA","ProductExternalSourceModule","context","IoneProductModule","entryComponents","provide","APP_INITIALIZER","useFactory","deps","multi","bootstrap"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum RenderModes {\r\n RenderRoom = 'render_room',\r\n RenderShop = 'render_shop',\r\n RenderIone = 'render_ione'\r\n}\r\n","// this file is dynamically created, do not change this\nexport class Version {\n public name = \"@colijnit/product\";\n public description = \"Product detail page project for iOne\";\n public symVer = \"2.9.0\";\n public publishDate = \"7-9-2023 15:18:44\";\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonUtilsService {\r\n\r\n public async readJsonFile(filePath: string): Promise<any> {\r\n try {\r\n const response = await fetch(filePath);\r\n if (!response.ok) {\r\n return null;\r\n } else {\r\n return response.json();\r\n }\r\n } catch (e) {\r\n console.error('Error getting file:', e.message);\r\n return '';\r\n }\r\n }\r\n}\r\n","export class SettingsOptions {\r\n public showStockStatus: boolean = false;\r\n public showZoomButton: boolean = false;\r\n public showTagFilter: boolean = false;\r\n public showAsConfigured: boolean = false;\r\n public inlineAnswers: boolean = false;\r\n public showArButton: boolean = false;\r\n\r\n public arEnabled: boolean = false;\r\n public vrEnabled: boolean = false;\r\n}\r\n","import { RenderModes } from './render-modes';\r\n\r\nexport class RenderParameters {\r\n public host: string = \"\";\r\n public port: number = 0;\r\n public secure: boolean = false;\r\n public renderMode: RenderModes = RenderModes.RenderShop;\r\n}\r\n","export enum LanguageCode {\r\n Dutch = \"nl-NL\",\r\n English = \"en-GB\",\r\n German = \"de-DE\",\r\n French = \"fr-FR\",\r\n}\r\n","import { SettingsOptions } from './settings-options';\r\nimport { RenderParameters } from './render-parameters';\r\n\r\nexport class ProductSettings {\r\n\r\n public url: string;\r\n public schema: string;\r\n public version: string;\r\n public branch: string;\r\n public currency: number;\r\n public username: string;\r\n public password: string;\r\n public session: any = undefined;\r\n public useGroups: boolean = true;\r\n public useRenders: boolean = false;\r\n public useLoginEncryption: boolean = true;\r\n public createWebOrder: boolean = true;\r\n public useMatch: boolean = false;\r\n public assetPath: string;\r\n public assetIndex: string;\r\n public currencySymbol: string = '€';\r\n public threeDAssetPath: string;\r\n public lightPresetsIndex: string;\r\n public additionalTranslationFile: string;\r\n public gtm: string;\r\n public client: string;\r\n public timeoutInMs: number;\r\n public languageCode: string;\r\n public options: SettingsOptions = new SettingsOptions();\r\n public renderParameters: RenderParameters = new RenderParameters();\r\n}\r\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {ArticleFullObject} from '@colijnit/articleapi/build/model/article-full-object';\r\nimport {SuperArticle} from '@colijnit/articleapi/build/model/super-article';\r\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\r\nimport {Articles} from '@colijnit/articleapi/build/articles';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\r\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\r\nimport {BusinessObjectFactory} from '@colijnit/ioneconnector/build/service/business-object-factory';\r\nimport {Transaction} from '@colijnit/transactionapi/build/transaction';\r\nimport {ProductSettingsService} from './product-settings.service';\r\nimport {ProductSettings} from '../model/productSettings';\r\nimport {MainApi} from '@colijnit/mainapi';\r\n\r\n// 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.\r\n// Only to be used by the IOneControllerService.\r\n@Injectable()\r\nexport class ProductConnectorAdapterService implements OnDestroy {\r\n\r\n public readonly showLoader: Subject<boolean> = new Subject<boolean>();\r\n\r\n public articleConnector?: Articles;\r\n public transactionConnector: Transaction;\r\n\r\n private _boFactory: BusinessObjectFactory = new BusinessObjectFactory();\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.articleConnector.showLoader.unsubscribe();\r\n }\r\n\r\n public async initConnector(options: Options): Promise<void> {\r\n this.articleConnector = new Articles(options);\r\n await this.articleConnector.connect();\r\n this.transactionConnector = new Transaction(options);\r\n this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value));\r\n }\r\n\r\n public setInstance(instanceId: string): void {\r\n // this.articleConnector.setInstanceToConfigure(instanceId, false);\r\n }\r\n\r\n public async getProductBundleSettings(url: string, upId: number): Promise<string> {\r\n const tempSettings: ProductSettings = new ProductSettings();\r\n tempSettings.url = url;\r\n tempSettings.schema = upId.toString();\r\n const tempMainConnector = new MainApi(tempSettings);\r\n const response: any = await tempMainConnector.getPublicParams(upId);\r\n if (response) {\r\n return response.productSettings;\r\n }\r\n return \"\";\r\n }\r\n\r\n public async getDeliveryPrognosis(goodId: number, branchNr?: string): Promise<any> {\r\n const deliveryPrognosis: DeliveryPrognosis = await this.getSelectorDeliveryDate();\r\n if (!deliveryPrognosis || !deliveryPrognosis.returnValue) {\r\n return this.getDeliveryDate2(goodId);\r\n }\r\n return deliveryPrognosis;\r\n }\r\n\r\n public async getSelectorDeliveryDate(): Promise<DeliveryPrognosis> {\r\n const response: DataServiceResponseData = await this.articleConnector.getSelectorDeliveryDate();\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject) as unknown as DeliveryPrognosis;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getDeliveryDate2(goodId: number): Promise<DeliveryPrognosis> {\r\n const response: DataServiceResponseData = await this.articleConnector.getDeliveryDate2(goodId);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject) as unknown as DeliveryPrognosis;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getJsonConfiguredArticles(configuratorStatistics?: ConfiguratorStatisticsEnvironment): Promise<string> {\r\n const response: DataServiceResponseData = await this.articleConnector.getJsonConfiguredArticles(configuratorStatistics);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return response.resultObject;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n public async getJsonArticleFlatTree(\r\n goodId: number,\r\n goodType: string,\r\n quantity: number,\r\n showLoader: boolean = true,\r\n instanceId?: any,\r\n configuratorStatistics?: ConfiguratorStatisticsEnvironment\r\n ): Promise<string> {\r\n return this.articleConnector.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, instanceId, configuratorStatistics);\r\n }\r\n\r\n public async getGoodIdFromArticleNr(sku: string): Promise<number> {\r\n const response: DataServiceResponseData = await this.articleConnector.getGoodIdFromArticleNr(sku);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return response.resultObject;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\r\n const response: DataServiceResponseData = await this.articleConnector.getArticleFullObject(goodId);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject) as ArticleFullObject;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getSuperArticle(id: string, branch?: string): Promise<SuperArticle> {\r\n const response: DataServiceResponseData = await this.articleConnector.getSuperArticleQuickSel(id, branch);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(SuperArticle, response.resultObject) as SuperArticle;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async getDocumentContent(docId: number, thumbnail: boolean = true): Promise<DocumentContent> {\r\n const response: DataServiceResponseData = await this.articleConnector.getDocumentContent(docId, thumbnail);\r\n if (response && response.validationResult && response.validationResult.success) {\r\n return this._boFactory.makeWithRawBackendData(DocumentContent, response.resultObject) as unknown as DocumentContent;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async addWebSessionTransactionLine(sku: string, quantity: number): Promise<DataServiceResponseData> {\r\n return await this.transactionConnector.addWebSessionTransactionLine(sku, quantity);\r\n }\r\n\r\n public async getWebTransaction(): Promise<DataServiceResponseData> {\r\n return await this.transactionConnector.getWebSessionSalesOrder();\r\n }\r\n}\r\n","export class Dictionary {\r\n\r\n public strings: {} = {\r\n \"nl\": {\r\n \"ADDITIONAL_DATA\": \"Extra informatie\",\r\n \"ALTERNATIVE_PRODUCTS\": \"Alternatieve producten\",\r\n \"ARTICLE_NUMBER\": \"Artikel nummer\",\r\n \"CATEGORY\": \"Categorie\",\r\n \"CATEGORY_TYPE\": \"Categorie type\",\r\n \"CONFIGURE\": \"Configureren\",\r\n \"DELIVERY_TIME_PERIOD\": \"Levertijd\",\r\n \"DESCRIPTION\": \"Omschrijving\",\r\n \"DOCUMENTS\": \"Documenten\",\r\n \"DOWNLOADS\": \"Downloads\",\r\n \"FEATURES\": \"Kenmerken\",\r\n \"HEIGHT\": \"Hoogte\",\r\n \"MATERIAL\": \"Materiaal\",\r\n \"PRODUCT_IN_STOCK\": \"Op voorraad\",\r\n \"PRODUCT_NOT_IN_STOCK\": \"Niet op voorraad\",\r\n \"PROPERTIES\": \"Eigenschappen\",\r\n \"QUOTATION\": \"Quotatie\",\r\n \"READ_MORE\": \"Lees meer\",\r\n \"RELATED_PRODUCTS\": \"Gerelateerde producten\",\r\n \"SHOPPING_CART_IN\": \"In winkelwagen\",\r\n \"SHOW_IN\": \"Laat zien\",\r\n \"STOCK\": \"Voorraad\",\r\n \"SYMBOLS\": \"Symbolen\",\r\n \"TITLE\": \"Titel\",\r\n \"TURNOVERGROUP\": \"Omzetgroep\",\r\n \"VARIANTS\": \"Varianten\",\r\n \"WIDTH\": \"Breedte\"\r\n },\r\n \"de\": {\r\n \"ADDITIONAL_DATA\": \"Extra informatie\",\r\n \"ALTERNATIVE_PRODUCTS\": \"Alternative Produkte\",\r\n \"ARTICLE_NUMBER\": \"Artikelnummer\",\r\n \"CATEGORY\": \"Kategorie\",\r\n \"CATEGORY_TYPE\": \"Kategorietype\",\r\n \"CONFIGURE\": \"Konfigurieren\",\r\n \"DELIVERY_TIME_PERIOD\": \"Lieferzeit\",\r\n \"DESCRIPTION\": \"Beschreibung\",\r\n \"DOCUMENTS\": \"Dateien\",\r\n \"DOWNLOADS\": \"Downloads\",\r\n \"FEATURES\": \"Eigenschaften\",\r\n \"HEIGHT\": \"Höhe\",\r\n \"MATERIAL\": \"Material\",\r\n \"PRODUCT_IN_STOCK\": \"Auf lager\",\r\n \"PRODUCT_NOT_IN_STOCK\": \"Nicht auf lager\",\r\n \"PROPERTIES\": \"Eigenschaften\",\r\n \"QUOTATION\": \"Angebot\",\r\n \"READ_MORE\": \"Lesen Sie mehr\",\r\n \"RELATED_PRODUCTS\": \"Verwandte Produkte\",\r\n \"SHOPPING_CART_IN\": \"Im Einkaufswagen\",\r\n \"SHOW_IN\": \"Zeigen\",\r\n \"STOCK\": \"Vorrat\",\r\n \"SYMBOLS\": \"Symbole\",\r\n \"TITLE\": \"Titulatur\",\r\n \"TURNOVERGROUP\": \"Umsatzgruppe\",\r\n \"VARIANTS\": \"Varianten\",\r\n \"WIDTH\": \"Breite\"\r\n }\r\n };\r\n}\r\n","export enum SelectorType {\r\n TwoD = '2D',\r\n ThreeD = '3D',\r\n Omni = 'Omni'\r\n}\r\n","/** AUTO GENERATED FILE. DO NOT CHANGE.. **/\n\nexport enum IconEnum {\n AddToCartDrop = \"add_to_cart_drop\",\n DeliveryTruck = \"delivery_truck\",\n Download = \"download\",\n FullScreen = \"full_screen\",\n Location = \"location\",\n Logo = \"logo\",\n MagicWand = \"magic_wand\",\n NormalScreen = \"normal_screen\",\n Quote = \"quote\",\n Refresh = \"refresh\",\n ThreeD = \"three_d\",\n Truck = \"truck\",\n TwoD = \"two_d\",\n Warehouse = \"warehouse\"\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { LanguageCode } from '../enum/language-code.enum';\r\nimport { JsonUtilsService } from '../utils/json-utils.service';\r\nimport { Dictionary } from '../../assets/dictionary/text.properties';\r\nimport {StringUtils} from '@colijnit/ioneconnector/build/utils/string-utils';\r\n\r\n// The localization service, providing peers with text translation functionality.\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DictionaryService {\r\n private readonly dictionaryUrl: string = 'js/browser/res/dictionary/';\r\n\r\n public get language(): string {\r\n return this._language;\r\n }\r\n\r\n public set rootUrl(value: string) {\r\n this._rootUrl = value;\r\n this._dictBasePath = this._rootUrl + '/' + this.dictionaryUrl;\r\n }\r\n\r\n // public dictionaryLoaded: Subject<void> = new Subject();\r\n\r\n private _dictBasePath: string;\r\n private _rootUrl: string;\r\n // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();\r\n private _dictionaries: Map<string, { [key: string]: string }> = new Map<string, { [key: string]: string }>();\r\n private _language: string;\r\n\r\n // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.\r\n private readonly _placeholder: string = '|~';\r\n\r\n constructor(\r\n private _http: HttpClient,\r\n private _jsonUtils: JsonUtilsService\r\n ) {\r\n }\r\n\r\n // Loads the dictionary for given language in memory.\r\n public async setDictionary(language: string): Promise<void> {\r\n this._language = language || LanguageCode.Dutch;\r\n if (!this._dictionaries.has(this._language)) {\r\n const dictionary = new Dictionary();\r\n if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {\r\n this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);\r\n }\r\n }\r\n // if (!this._dictionaryPromise.has(language)) {\r\n // this._dictionaryPromise.set(language,\r\n // this._jsonUtils.readJsonFile(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')\r\n // .then((data: { [key: string]: string }) => {\r\n // this._dictionaries.set(language, data);\r\n // this.dictionaryLoaded.next();\r\n // return data;\r\n // })\r\n // // this._http.get(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')\r\n // // .toPromise().then((data: { [key: string]: string }) => {\r\n // // this._dictionaries.set(language, data);\r\n // // return data;\r\n // // })\r\n // );\r\n // } else {\r\n // this.dictionaryLoaded.next();\r\n // }\r\n // await this._dictionaryPromise.get(language);\r\n }\r\n\r\n /**\r\n * Returns the localized text for the given dictionary key.\r\n * @param {string} key\r\n * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val\r\n * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value\r\n * @returns {string} The translated text for given dictionary key\r\n */\r\n public get(key: string, upperCaseFirst: boolean = true, ...replacementTexts: string[]): string {\r\n if (!StringUtils.IsStringWithLength(key)) {\r\n return key || '';\r\n }\r\n\r\n let text: string = this._dictionaries.get(this.language)[key];\r\n text = StringUtils.IsStringWithLength(text) ? text : key;\r\n\r\n if (upperCaseFirst) {\r\n text = text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n text = text.charAt(0).toLowerCase() + text.slice(1);\r\n }\r\n\r\n if (replacementTexts.length > 0) {\r\n text = StringUtils.ReplaceOccurrencesIn(text, this._placeholder, ...replacementTexts);\r\n }\r\n\r\n return text;\r\n }\r\n\r\n // private _dictionaryLoaded(language: LanguageCode): boolean {\r\n // return this._dictionaries.has(language);\r\n // }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { JsonUtilsService } from '../utils/json-utils.service';\r\nimport { DictionaryService } from './dictionary.service';\r\nimport { ProductSettings } from '../model/productSettings';\r\nimport { SettingsOptions } from '../model/settings-options';\r\n\r\ndeclare let settings: any;\r\n\r\n@Injectable()\r\nexport class ProductSettingsService {\r\n\r\n public set settings(value: ProductSettings) {\r\n this._settings = value;\r\n }\r\n\r\n public get settings(): ProductSettings {\r\n return this._settings;\r\n }\r\n\r\n public settingsLoaded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _settings: ProductSettings;\r\n\r\n constructor(\r\n private _jsonUtilsService: JsonUtilsService,\r\n private _dictionaryService: DictionaryService\r\n ) {\r\n }\r\n\r\n public async initializeSettings(): Promise<void> {\r\n // see if there's a json file for application settings\r\n if (typeof settings === 'undefined') {\r\n const jsonSettings = await this._jsonUtilsService.readJsonFile('product-settings.json');\r\n if (jsonSettings) {\r\n this.settings = Object.assign(new ProductSettings(), jsonSettings);\r\n this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);\r\n this.settingsFinished();\r\n }\r\n } else {\r\n this.settings = Object.assign(new ProductSettings(), settings);\r\n this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);\r\n this.settingsFinished();\r\n }\r\n }\r\n\r\n public async createSettingsFromObject(obj: any): Promise<void> {\r\n if (!this.settings) {\r\n this.settings = new ProductSettings();\r\n }\r\n const ownOptions = Object.assign({}, this.settings.options);\r\n const ownRenderParameters = Object.assign({}, this.settings.renderParameters);\r\n this.settings = Object.assign({}, this.settings, obj);\r\n if (obj.renderParameters) {\r\n this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);\r\n }\r\n if (obj.options) {\r\n this.settings.options = Object.assign({}, ownOptions, obj.options);\r\n }\r\n if (obj.hasOwnProperty('assetPath')) {\r\n this.settings.assetPath = obj['assetPath'];\r\n if (this.settings.assetPath[this.settings.assetPath.length - 1] !== '/') {\r\n this.settings.assetPath += '/';\r\n }\r\n this.settings.threeDAssetPath = this.settings.assetPath;\r\n }\r\n if (obj.hasOwnProperty('threeDAssetPath')) {\r\n this.settings.threeDAssetPath = obj['threeDAssetPath'];\r\n if (this.settings.threeDAssetPath[this.settings.threeDAssetPath.length - 1] !== '/') {\r\n this.settings.threeDAssetPath += '/';\r\n }\r\n }\r\n this.settingsFinished();\r\n }\r\n\r\n public async settingsFinished(): Promise<void> {\r\n await this._dictionaryService.setDictionary(this.settings.languageCode);\r\n this.settingsLoaded.next(true);\r\n }\r\n}\r\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\n\r\nimport {ProductConnectorAdapterService} from './product-connector-adapter.service';\r\nimport {ArticleFullObject} from '@colijnit/articleapi/build/model/article-full-object';\r\nimport {SuperArticle} from '@colijnit/articleapi/build/model/super-article';\r\nimport {ProductSettingsService} from './product-settings.service';\r\nimport {ProductSettings} from '../model/productSettings';\r\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\r\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\r\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\n\r\n// Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.\r\n@Injectable()\r\nexport class ProductConnectorService implements OnDestroy {\r\n\r\n public get shouldShowLoader(): boolean {\r\n return this._shouldShowLoader;\r\n }\r\n\r\n public controllerInitialized: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n private _shouldShowLoader: boolean;\r\n private _initializing = false;\r\n private _initialized = false;\r\n private _instanceId: string;\r\n\r\n private connectorOptions: Options = new Options();\r\n\r\n private readonly subs: Subscription[] = [];\r\n\r\n constructor(\r\n private _adapterService: ProductConnectorAdapterService,\r\n private _settingsService: ProductSettingsService\r\n ) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n public async initConnection(): Promise<void> {\r\n if (this._initialized || this._initializing) {\r\n return;\r\n }\r\n this._initializing = true;\r\n try {\r\n const settings: ProductSettings = this._settingsService.settings;\r\n if (!settings) {\r\n throw Error('Settings are not defined!');\r\n }\r\n this.connectorOptions = Object.assign(new Options(), settings);\r\n\r\n await this._adapterService.initConnector(this.connectorOptions);\r\n this.controllerInitialized.next(true);\r\n this._initialized = true;\r\n this._initializing = false;\r\n } catch (e) {\r\n this._initializing = false;\r\n }\r\n }\r\n\r\n public async getProductBundleSettings(url: string, upId: number): Promise<string> {\r\n return this._adapterService.getProductBundleSettings(url, upId);\r\n }\r\n\r\n public setInstance(instanceId: string): void {\r\n this._instanceId = instanceId;\r\n this._adapterService.setInstance(instanceId);\r\n }\r\n\r\n public async getFullArticle(sku: string): Promise<ArticleFullObject> {\r\n const goodId: number = await this._adapterService.getGoodIdFromArticleNr(sku);\r\n if (goodId) {\r\n return this._adapterService.getArticleFullObject(goodId);\r\n }\r\n return null;\r\n }\r\n\r\n public getDocumentContent(docId: number, thumbnail: boolean = true): Promise<DocumentContent> {\r\n return this._adapterService.getDocumentContent(docId, thumbnail);\r\n }\r\n\r\n public getDeliveryPrognosis(goodId: number): Promise<DeliveryPrognosis> {\r\n return this._adapterService.getDeliveryPrognosis(goodId);\r\n }\r\n\r\n public async getSelectorDeliveryDate(): Promise<DeliveryPrognosis> {\r\n return this._adapterService.getSelectorDeliveryDate();\r\n }\r\n\r\n public getDeliveryDate2(goodId: number): Promise<DeliveryPrognosis> {\r\n return this._adapterService.getDeliveryDate2(goodId);\r\n }\r\n\r\n public getSuperArticle(id: string): Promise<SuperArticle> {\r\n return this._adapterService.getSuperArticle(id);\r\n }\r\n\r\n public getJsonArticleFlatTree(\r\n goodId: number,\r\n goodType: string,\r\n quantity: number,\r\n showLoader: boolean = true,\r\n configuratorStatistics?: ConfiguratorStatisticsEnvironment): Promise<string> {\r\n return this._adapterService.getJsonArticleFlatTree(goodId, goodType, quantity, showLoader, this._instanceId, configuratorStatistics);\r\n }\r\n\r\n public async addWebSessionTransactionLine(sku: string, quantity: number): Promise<DataServiceResponseData> {\r\n return await this._adapterService.addWebSessionTransactionLine(sku, quantity);\r\n }\r\n\r\n public getWebTransaction(): void {\r\n this._adapterService.getWebTransaction().then((response) => {\r\n console.log(response);\r\n });\r\n }\r\n\r\n\r\n public onShowLoaderChange(showLoader: boolean): void {\r\n this._shouldShowLoader = showLoader;\r\n }\r\n}\r\n","import {Directive, Injectable, Output} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {ArticleListObject} from '@colijnit/articleapi/build/model/article-list-object';\r\nimport {Selection} from '@colijnit/articleapi/build/model/selection';\r\nimport {ArticleQuickSel} from '@colijnit/articleapi/build/model/article-quick-sel';\r\n\r\n@Directive()\r\n@Injectable()\r\nexport class ProductEventService {\r\n\r\n @Output()\r\n public onAddToCart: Subject<string> = new Subject<string>();\r\n\r\n @Output()\r\n public onAlternativeClick: Subject<ArticleListObject> = new Subject<ArticleListObject>();\r\n\r\n @Output()\r\n public onAddToQuote: Subject<string> = new Subject<string>();\r\n\r\n @Output()\r\n public onForceRenderImage: Subject<void> = new Subject<void>();\r\n\r\n public onArticleReceived: Subject<ArticleQuickSel> = new Subject<ArticleQuickSel>();\r\n\r\n public onSelectionsReceived: Subject<Selection[]> = new Subject<Selection[]>();\r\n\r\n public onImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onRenderStarted: Subject<void> = new Subject<void>();\r\n\r\n public onRenderImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onDraftRenderImageReceived: Subject<string> = new Subject<string>();\r\n\r\n public onArticleInfoReceived: Subject<string> = new Subject<string>();\r\n\r\n public onUpdateProductInfoTab: Subject<number> = new Subject<number>();\r\n\r\n}\r\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {JsonUtilsService} from './utils/json-utils.service';\nimport {ProductConnectorService} from './service/product-connector.service';\nimport {DictionaryService} from './service/dictionary.service';\nimport {Subscription} from 'rxjs';\nimport {ProductEventService} from './service/product-event.service';\nimport {ArticleListObject} from '@colijnit/articleapi/build/model/article-list-object';\nimport {ProductSettingsService} from './service/product-settings.service';\nimport {Selection} from '@colijnit/articleapi/build/model/selection';\nimport {ArticleQuickSel} from '@colijnit/articleapi/build/model/article-quick-sel';\nimport {ProductConnectorAdapterService} from './service/product-connector-adapter.service';\n\n@Component({\n selector: 'app-ione-product',\n template: `\n <app-product-page [sku]=\"sku\"\n ></app-product-page>\n `,\n providers: [\n ProductEventService,\n ProductSettingsService,\n ProductConnectorAdapterService,\n ProductConnectorService\n ],\n encapsulation: ViewEncapsulation.Emulated,\n styleUrls: ['./ione-product.component.css']\n})\nexport class IoneProductComponent implements OnChanges, OnDestroy {\n\n @Input()\n public sku: string;\n\n @Input()\n public set settings(value: any) {\n if (value) {\n let settings: any;\n if (typeof value === 'string') {\n settings = JSON.parse(value);\n } else {\n settings = value;\n }\n this._settingsService.createSettingsFromObject(settings);\n // this._initConnection(settings);\n }\n }\n\n public get settings(): any {\n return this._settings;\n }\n\n @Output()\n public onAddToCart: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n public forceRenderImage: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public onAlternativeClick: EventEmitter<ArticleListObject> = new EventEmitter<ArticleListObject>();\n\n @Output()\n public onArticleInfoReceived: EventEmitter<string> = new EventEmitter<string>();\n\n @Output()\n public onArticleReceived: EventEmitter<ArticleQuickSel> = new EventEmitter<ArticleQuickSel>();\n\n @Output()\n public onSelectionsReceived: EventEmitter<Selection[]> = new EventEmitter<Selection[]>();\n\n @Output()\n public onAddToQuote: EventEmitter<string> = new EventEmitter<string>();\n\n private _settings: any;\n private _subs: Subscription[] = [];\n\n constructor (\n private _dictionary: DictionaryService,\n private _jsonUtils: JsonUtilsService,\n private _ione: ProductConnectorService,\n private _changeDetector: ChangeDetectorRef,\n private _appEventService: ProductEventService,\n private _settingsService: ProductSettingsService\n ) {\n // this.sku = 'CF-HILL';\n // this.sku = 'CF-ALMADA';\n // this.sku = 'CF-39904ANT';\n // this.sku = 'CF-22346001';\n // this.sku = '104';\n // this.sku = '1000561986';\n // this.sku = '1000567768';\n // this.sku = '1000234793';\n // this.sku = '1066';\n // this.sku = '104';\n\n // this.sku = \"70000107\";\n\n this._subs.push(\n // this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),\n this._appEventService.onAddToCart.subscribe((json: string) => {\n this._handleAddToCart(json);\n }),\n this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)),\n this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)),\n this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)),\n this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)),\n this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this._changeDetector.detectChanges();\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n private _handleAnswerInfoReceived(info: string): void {\n this.onArticleInfoReceived.next(info);\n }\n\n private async _handleAddToCart(json: string): Promise<void> {\n if (this._settingsService.settings.createWebOrder) {\n if (json) {\n const articleTreeData = JSON.parse(json);\n if (articleTreeData.articleTree && articleTreeData.articleTree.article) {\n if (articleTreeData.articleTree.compositeGoods && Array.isArray(articleTreeData.articleTree.compositeGoods) &&\n articleTreeData.articleTree.compositeGoods.length > 0 && articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {\n for (let i = 0; i < articleTreeData.articleTree.compositeGoods.length - 1; i++) {\n const good = articleTreeData.articleTree.compositeGoods[i];\n const subArticle = articleTreeData.articleTree.subArticles[i];\n await this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);\n }\n } else {\n await this._ione.addWebSessionTransactionLine(articleTreeData.articleTree.article.articleNumber, 1);\n }\n }\n }\n }\n this.onAddToCart.emit(json);\n }\n}\n","import {Injectable} from '@angular/core';\r\nimport {ProductSettingsService} from './product-settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductInitializerService {\r\n\r\n constructor(\r\n private _settingsService: ProductSettingsService\r\n ) {\r\n }\r\n\r\n public async initializeApp(): Promise<void> {\r\n return this._settingsService.initializeSettings();\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, ViewEncapsulation} from '@angular/core';\r\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\r\nimport {ExternalSource} from '@colijnit/articleapi/build/model/external-source.bo';\r\nimport {ProductConnectorService} from '../../service/product-connector.service';\r\nimport {ArticleListObject} from '@colijnit/articleapi/build/model/article-list-object';\r\nimport {ProductEventService} from '../../service/product-event.service';\r\nimport {Subscription} from 'rxjs';\r\nimport {ProductSettingsService} from '../../service/product-settings.service';\r\nimport {ProductConnectorAdapterService} from '../../service/product-connector-adapter.service';\r\n\r\n@Component({\r\n selector: 'co-product-external-source',\r\n template: `\r\n <ng-container *ngIf=\"loaded\">\r\n <ng-container *ngIf=\"showProduct\">\r\n <app-product-page\r\n [sku]=\"sku\"\r\n [settings]=\"externalSettings\"\r\n ></app-product-page>\r\n </ng-container>\r\n <ng-container *ngIf=\"!showProduct\">\r\n <iframe width=\"100%\" height=\"100%\" [src]=\"safeUrl\" frameborder=\"0\" allowfullscreen></iframe>\r\n </ng-container>\r\n </ng-container>\r\n `,\r\n providers: [\r\n ProductEventService,\r\n ProductSettingsService,\r\n ProductConnectorAdapterService,\r\n ProductConnectorService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProductExternalSourceComponent implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n public sku: string;\r\n\r\n @Input()\r\n public set externalSource(value: ExternalSource) {\r\n this._externalSource = value;\r\n this.loaded = false;\r\n this._prepareExternalSource();\r\n }\r\n\r\n public get externalSource(): ExternalSource {\r\n return this._externalSource;\r\n }\r\n\r\n @Input()\r\n public options: {};\r\n\r\n @Output()\r\n public addToCart: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n public addToQuote: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n public alternativeClick: EventEmitter<ArticleListObject> = new EventEmitter<ArticleListObject>();\r\n\r\n @HostBinding('class.co-product-external-source')\r\n public showClass() {\r\n return true;\r\n }\r\n\r\n public showProduct: boolean = false;\r\n public safeUrl: SafeResourceUrl;\r\n public loaded: boolean = false;\r\n public externalUrl: string;\r\n public externalSettings: any = {};\r\n\r\n private _externalSource: ExternalSource;\r\n private _subs: Subscription[] = [];\r\n\r\n constructor(\r\n private _sanitizer: DomSanitizer,\r\n private _productConnectorService: ProductConnectorService,\r\n private _appEventService: ProductEventService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this._subs.push(\r\n this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)),\r\n this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)),\r\n this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article))\r\n )\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.forEach(s => s.unsubscribe());\r\n }\r\n\r\n private async _prepareExternalSource(): Promise<void> {\r\n if (!this._externalSource) {\r\n return;\r\n }\r\n this.externalUrl = undefined;\r\n this.externalSettings = {};\r\n if (this.externalSource.type === 'CATF') {\r\n // get bundle settings from external source\r\n const bundleSettings: string = await this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));\r\n this.externalSettings = JSON.parse(bundleSettings);\r\n if (this.options) {\r\n this.externalSettings.options = this.options;\r\n }\r\n // this.externalSettings.assetPath = \"https://cdn1.colijn-it.nl/content43\";\r\n // this.externalSettings.threeDAssetPath = \"https://cdn1.colijn-it.nl/content43\";\r\n if (this.externalSource.username && this.externalSource.password) {\r\n this.externalSettings.useLoginEncryption = true;\r\n this.externalSettings.username = this.externalSource.username;\r\n this.externalSettings.password = this.externalSource.password;\r\n }\r\n // finally show the catalog\r\n this.showProduct = true;\r\n } else {\r\n this.externalUrl = this.externalSource.url;\r\n this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);\r\n this.showProduct = false;\r\n }\r\n this.loaded = true;\r\n }\r\n}\r\n","export class StockAndDelivery {\r\n\r\n public stock: number = 0;\r\n public deliveryDescription: string;\r\n\r\n constructor(stock?: any, deliveryDescription?: string) {\r\n this.stock = stock;\r\n this.deliveryDescription = deliveryDescription;\r\n }\r\n}\r\n","/** AUTO GENERATED FILE. DO NOT CHANGE.. **/\n\nexport const IconSvg: {[iconName: string]: string} = {\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\",\n \"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>\"\n};","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport enum TabType {\n Additional = 'additional',\n Properties = 'properties'\n}\n\n@Component({\n selector: 'app-product-info',\n templateUrl: './product-info.component.html',\n styleUrls: ['./product-info.component.scss'],\n animations: [\n trigger('showContent', [\n state('void', style({'opacity': '0'})),\n state('*', style({'opacity': '1'})),\n transition('void => *', animate('200ms 100ms ease-in-out')),\n ])\n ]\n})\nexport class ProductInfoComponent implements OnInit {\n\n public readonly tabType: typeof TabType = TabType;\n\n @Input()\n public article: ArticleFullObject;\n\n public currentTab: TabType = TabType.Additional;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n public switchTab(tab: TabType): void {\n this.currentTab = tab;\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { IconSvg } from '../model/icon';\r\nimport { IconEnum } from '../enum/icon.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconCacheService {\r\n /**\r\n * All the icons as a large JSON object, from the all-icons.json file.\r\n * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.\r\n */\r\n public get iconCache(): { [iconName: string]: SafeHtml } {\r\n return this._iconCache;\r\n }\r\n\r\n private _iconCache: { [iconName: string]: SafeHtml } = {};\r\n\r\n private _allIcons: any;\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n this._allIcons = IconSvg;\r\n this.setIconCache();\r\n }\r\n\r\n public getIcon(iconName: IconEnum): SafeHtml {\r\n return this._iconCache[iconName.toLowerCase()];\r\n }\r\n\r\n public setIconCache(): void {\r\n for (const key in this._allIcons) {\r\n if (this._allIcons.hasOwnProperty(key)) {\r\n this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);\r\n }\r\n }\r\n }\r\n}\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { Subscription } from 'rxjs';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\nimport { SelectorType } from '../../enum/selector-type.enum';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { ProductSettingsService } from '../../service/product-settings.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport {DeliveryPrognosis} from '@colijnit/articleapi/build/model/delivery-prognosis';\n\n@Component({\n selector: 'app-product-page',\n templateUrl: './product-page.component.html',\n styleUrls: ['./product-page.component.scss'],\n animations: [\n trigger('toggleFullScreen', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%'})),\n state('halfscreen', style({'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleTopLeft', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'left': '0'})),\n state('halfscreen', style({'position': 'absolute', 'top': '*', 'left': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleTopRight', [\n state('fullscreen', style({'position': 'fixed', 'top': '0', 'right': '0'})),\n state('halfscreen', style({'position': '*', 'top': '*', 'right': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleFullScreenRight', [\n state('fullscreen', style({'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0'})),\n state('halfscreen', style({'position': '*', 'width': '*', 'top': '*', 'right': '*'})),\n transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),\n ]),\n trigger('toggleVisibilityByState', [\n state('hide', style({'opacity': '0', 'display': 'none'})),\n state('show', style({'display': 'block', 'opacity': '1'})),\n transition('hide <=> show', animate('200ms 100ms ease-in-out')),\n ]),\n trigger('toggleVisibility', [\n state('void', style({'opacity': '0'})),\n state('*', style({'opacity': '1'})),\n transition('void => *', animate('200ms ease-in-out')),\n ])\n ]\n})\nexport class ProductPageComponent implements OnInit, OnDestroy, AfterViewInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @ViewChild('configurator', { read: ElementRef })\n public configurator: ElementRef;\n\n @ViewChild('selections', { read: ElementRef })\n public selections: ElementRef;\n\n @ViewChild('fullscreenbutton', { read: ElementRef })\n public fullscreenbutton: ElementRef;\n\n @Input()\n public set sku(value: string) {\n if (value) {\n if (this.configuring) {\n this.show3D = false;\n this.fullScreen = false;\n this.configuring = false;\n this._changeDetector.detectChanges();\n }\n this._sku = value;\n this._getArticle();\n }\n }\n\n public get sku(): string {\n return this._sku;\n }\n\n @Input()\n public set settings(value: any) {\n if (value) {\n if (typeof value === 'string') {\n this._settings = JSON.parse(value);\n } else {\n this._settings = value;\n }\n }\n }\n\n public get settings(): any {\n return this._settings;\n }\n\n public set fullScreen(value: boolean) {\n this._fullScreen = value;\n this.fullscreenAnimationEnd = true;\n this._changeDetector.detectChanges();\n // setTimeout(() => {\n // this.fullscreenAnimationEnd = true;\n // }, 400)\n }\n\n public get fullScreen(): boolean {\n return this._fullScreen;\n }\n\n public get fullScreenIcon(): IconEnum {\n return this.fullScreen ? this.icon.NormalScreen : this.icon.FullScreen;\n }\n\n public set currentView(value: SelectorType) {\n this._currentView = value;\n this.show2D = this._currentView === SelectorType.TwoD;\n this.show3D = this._currentView === SelectorType.ThreeD;\n this._changeDetector.detectChanges();\n }\n\n public get currentView(): SelectorType {\n return this._currentView;\n }\n\n public article: ArticleFullObject;\n public stockAndDelivery: StockAndDelivery;\n public configurable = false;\n public threeD = false;\n public selectorType: SelectorType;\n public show2D = true;\n public show3D = false;\n public configuring: boolean = false;\n public fullscreenAnimationEnd: boolean = false;\n public settingsLoaded: boolean = false;\n private _sku: string;\n private _initializedSub: Subscription;\n private _fullScreen: boolean = false;\n private _currentView: SelectorType;\n private _subs: Subscription[] = [];\n private _settings: any;\n\n constructor(private _ione: ProductConnectorService,\n private _renderer: Renderer2,\n private _changeDetector: ChangeDetectorRef,\n public iconCache: IconCacheService,\n public settingsService: ProductSettingsService,\n public appEventService: ProductEventService\n ) {\n this._subs.push(\n this.appEventService.onForceRenderImage.subscribe((x) => {\n if (this.selections.nativeElement) {\n this.selections.nativeElement.forceRenderImage();\n }\n }),\n this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\n this._ione.controllerInitialized.subscribe((initialized: boolean) => {\n this.settingsLoaded = initialized;\n })\n );\n\n }\n\n ngOnInit() {\n if (this._settings) {\n this.settingsService.settings = undefined;\n this.settingsService.createSettingsFromObject(this._settings);\n } else {\n this._settings = this.settingsService.settings;\n }\n }\n\n ngAfterViewInit(): void {\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n if (this._initializedSub) {\n this._initializedSub.unsubscribe();\n }\n this.configurator = undefined;\n this.selections = undefined;\n this.fullscreenbutton = undefined;\n }\n\n public setInstance(event: CustomEvent): void {\n if (event.detail) {\n this._ione.setInstance(event.detail);\n }\n }\n\n public handleStartConfiguration(): void {\n this.configuring = true;\n this._changeDetector.detectChanges();\n }\n\n public showFullScreen(): void {\n this.fullScreen = !this.fullScreen;\n }\n\n private _handleSettingsLoaded(loaded: boolean): void {\n if (loaded) {\n this._ione.initConnection();\n }\n }\n\n private async _getArticle(): Promise<void> {\n if (this._initializedSub) {\n this._initializedSub.unsubscribe();\n }\n this._initializedSub = this._ione.controllerInitialized.subscribe(async (init: boolean) => {\n if (init) {\n this._ione.getFullArticle(this._sku).then((article: ArticleFullObject) => {\n this.article = article;\n if (this.article) {\n this.configurable = this.article.goodType === 'B';\n if (this.configurable) {\n this.currentView = SelectorType.TwoD;\n }\n this.threeD = this.article.is3D;\n this.selectorType = this.article.selectorTypeCustomer;\n this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo: DeliveryPrognosis) => {\n const stockAndDelivery: DeliveryPrognosis = stockInfo;\n this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');\n this._changeDetector.detectChanges();\n });\n this._changeDetector.detectChanges();\n }\n });\n }\n });\n }\n\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { SelectorType } from '../../enum/selector-type.enum';\n\n@Component({\n selector: 'app-product-selector-type',\n templateUrl: './product-selector-type.component.html',\n styleUrls: ['./product-selector-type.component.scss']\n})\nexport class ProductSelectorTypeComponent implements OnInit {\n\n public readonly type: typeof SelectorType = SelectorType;\n public readonly icons: typeof IconEnum = IconEnum;\n\n @Input()\n public show2D: boolean;\n\n @Input()\n public show3D: boolean;\n\n @Input()\n public currentType: SelectorType;\n\n @Output()\n public onIconClick: EventEmitter<SelectorType> = new EventEmitter();\n\n @Output()\n public currentTypeChange: EventEmitter<SelectorType> = new EventEmitter();\n\n public twoDIcon: SafeHtml | null;\n public threeDIcon: SafeHtml | null;\n\n constructor(\n private _iconCache: IconCacheService,\n private _changeDetector: ChangeDetectorRef\n ) {\n this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);\n this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);\n }\n\n ngOnInit() {\n }\n\n public handleIconClick(type: SelectorType): void {\n this.currentType = type;\n this.currentTypeChange.next(this.currentType);\n this.onIconClick.next(this.currentType);\n this._changeDetector.detectChanges();\n }\n\n}\n","import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { CoDocument } from '@colijnit/mainapi/build/model/co-document';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { Subscription } from 'rxjs';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\n\n@Component({\n selector: 'app-image-carousel',\n templateUrl: './image-carousel.component.html',\n styleUrls: ['./image-carousel.component.scss']\n})\nexport class ImageCarouselComponent implements OnInit, OnDestroy {\n\n public readonly icons: typeof IconEnum = IconEnum;\n\n public showLoader: boolean = false;\n\n @ViewChild('carousel', { read: ElementRef })\n public carousel: ElementRef;\n\n @Input()\n public showRefresh: boolean = false;\n\n @Input()\n public set images(value: CoDocument[]) {\n if (value && value.length > 0) {\n this._images = value;\n this._loadImages();\n this._changeDetector.detectChanges();\n }\n }\n\n @HostListener('window:resize')\n public handleWindowResize(): void {\n this.resizing = true;\n this._scrollCarouselToIndex();\n clearTimeout(this._resizeTimer);\n this._resizeTimer = setTimeout(() => {\n this.resizing = false;\n }, 200);\n }\n\n @HostListener('swipeleft')\n public gotoNextSlide(): void {\n this.currentIndex++;\n }\n\n @HostListener('swiperight')\n public gotoPrevSlide(): void {\n this.currentIndex--;\n }\n\n public isCurrentIndex(index: number): boolean {\n return this.currentIndex === index;\n }\n\n public get currentIndex(): number {\n return this._currentIndex;\n }\n\n public set currentIndex(value: number) {\n this._currentIndex = value;\n this._scrollCarouselToIndex();\n }\n\n @HostBinding('class.resizing')\n public resizing = false;\n\n public get images(): CoDocument[] {\n return this._images;\n }\n\n private _resizeTimer: any;\n\n private _currentIndex = 0;\n\n private _images = [];\n private _subs: Subscription[] = [];\n\n constructor(\n private _ione: ProductConnectorService,\n private _appEventService: ProductEventService,\n private _changeDetector: ChangeDetectorRef,\n private _domSanitizer: DomSanitizer,\n public iconCache: IconCacheService,\n ) {\n this._subs.push(\n this._appEventService.onRenderStarted.subscribe(() => {\n this.showLoader = true;\n }),\n this._appEventService.onDraftRenderImageReceived.subscribe((url: string) => {\n if (this._images[0] instanceof CoDocument) {\n this._images.unshift(url);\n } else {\n this._images[0] = url;\n }\n this.showLoader = false;\n }),\n );\n\n }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.carousel = undefined;\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public handleThumbClick(index: number): void {\n this.currentIndex = index;\n }\n\n public onForceRenderImage(): void {\n this._appEventService.onForceRenderImage.next();\n }\n\n public getImageSrc(image: CoDocument | CustomEvent): SafeUrl {\n let source = '';\n if (image instanceof CoDocument) {\n if (image.filePath) {\n source = image.filePath;\n } else {\n source = image.documentBodyAsDataUri;\n }\n } else if (image.detail !== undefined) {\n source = image.detail;\n }\n\n return this._domSanitizer.bypassSecurityTrustUrl(source);\n }\n\n private _loadImages(): void {\n if (this._images) {\n this._images.forEach((i: CoDocument) => {\n if (!i.documentBody && !i.filePath) {\n this._ione.getDocumentContent(i.documentId, false).then((content: DocumentContent) => {\n if (content) {\n i.documentBody = content.documentContent;\n }\n });\n }\n });\n }\n }\n\n private _scrollCarouselToIndex(): void {\n if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {\n const movePx: number = this.currentIndex * this.carousel.nativeElement.clientWidth;\n if (this.carousel && this.carousel.nativeElement) {\n this.carousel.nativeElement.scrollLeft = movePx;\n // this.carousel.nativeElement.scrollTo({\n // left: movePx,\n // behavior: 'smooth'\n // });\n }\n }\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\n\n@Component({\n selector: 'app-product-description',\n templateUrl: './product-description.component.html',\n styleUrls: ['./product-description.component.scss']\n})\nexport class ProductDescriptionComponent implements OnInit {\n\n @Input()\n public article: ArticleFullObject;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export class BitUtils {\r\n\r\n public static IsShortDescription(bit: number): boolean {\r\n return (1 & bit) > 0;\r\n }\r\n\r\n public static IsFullDescription(bit: number): boolean {\r\n return (2 & bit) > 0;\r\n }\r\n\r\n public static IsMetaTitle(bit: number): boolean {\r\n return (4 & bit) > 0;\r\n }\r\n\r\n public static IsMetaDescription(bit: number): boolean {\r\n return (8 & bit) > 0;\r\n }\r\n\r\n public static IsMetaKeys(bit: number): boolean {\r\n return (16 & bit) > 0;\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { CoText } from '@colijnit/mainapi/build/model/co-text';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { BitUtils } from '../../utils/bit-utils';\n\n@Component({\n selector: 'app-product-additional-description',\n templateUrl: './product-additional-description.component.html',\n styleUrls: ['./product-additional-description.component.scss']\n})\nexport class ProductAdditionalDescriptionComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n this._article = value;\n if (this._article) {\n this.description = this.article.additionalDescription;\n this._prepareDescription();\n }\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n public description: string;\n\n private _article: ArticleFullObject;\n\n constructor(\n private _appEventService: ProductEventService\n ) {}\n\n ngOnInit() {\n }\n\n public onReadMore(): void {\n this._appEventService.onUpdateProductInfoTab.next(0);\n }\n\n private _prepareDescription(): void {\n\n this.description = '';\n\n if (this.article.texts && this.article.texts.length > 0) {\n this.article.texts.forEach((txt: CoText) => {\n if (BitUtils.IsShortDescription(txt.publication)) {\n this.description += txt.text;\n }\n });\n\n this.description = this.description.replace(/<[^>]*>?/gm, '');\n if (this.description.length > 250) {\n this.description = this.description.substr(0, 250) + ' [..]';\n }\n }\n\n }\n\n}\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ArticlePricing } from '@colijnit/articleapi/build/model/article-pricing';\n\n@Component({\n selector: 'app-product-price',\n templateUrl: './product-price.component.html',\n styleUrls: ['./product-price.component.scss']\n})\nexport class ProductPriceComponent implements OnInit {\n\n @Input()\n public set pricing(value: any) {\n this._pricing = value;\n this._setPrices();\n }\n\n public get pricing(): any {\n return this._pricing;\n }\n\n @Input()\n public set configurable(value: boolean) {\n this._configurable = value;\n this._setPrices();\n }\n\n public fromPrice: number;\n public toPrice: number;\n public valutaSign: string;\n public fromLabel: string;\n public toLabel: string;\n public showFromPrice: boolean = false;\n\n private _pricing: ArticlePricing;\n private _configurable: boolean = false;\n\n constructor(private _changeDetector: ChangeDetectorRef) { }\n\n ngOnInit() {\n }\n\n private _setPrices(): void {\n if (this._pricing) {\n this.valutaSign = this._getSign(this._pricing.retailCurrency);\n if (this._configurable) {\n this.fromPrice = this._pricing.retailBasePrice ? this._pricing.retailBasePrice : this._pricing.priceBaseline;\n this.fromLabel = this._pricing.retailBasePrice ? 'PRICE' : 'FROM';\n this.toPrice = undefined;\n } else {\n this.fromPrice = this._pricing.retailSuggestedPrice ? this._pricing.retailSuggestedPrice : this._pricing.retailBasePrice;\n this.fromLabel = this._pricing.retailSuggestedPrice ? 'Was' : 'PRICE';\n this.toPrice = this._pricing.retailSuggestedPrice ? this._pricing.retailBasePrice : undefined;\n this.toLabel = this._pricing.retailSuggestedPrice ? 'IS_NOW' : '';\n }\n this._changeDetector.detectChanges();\n }\n }\n\n private _getSign(currency: string): string {\n switch (currency) {\n case 'EUR':\n return '€';\n default:\n return '€';\n }\n }\n\n}\n","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { ArticleQuantity } from '../../model/article-quantity.model';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport {ArticleExtended} from '@colijnit/articleapi/build/model/article-extended.bo';\nimport {ConfiguratorStatisticsEnvironment} from '@colijnit/articleapi/build/model/configurator-statistics-environment';\nimport {ProductSettingsService} from '../../service/product-settings.service';\n\n@Component({\n selector: 'app-product-addtocart',\n templateUrl: './product-addtocart.component.html',\n styleUrls: ['./product-addtocart.component.scss']\n})\nexport class ProductAddtocartComponent implements OnInit, OnDestroy {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @ViewChild('addtocartbutton', { read: ElementRef })\n public addToCartButton: ElementRef;\n\n @Input()\n public article: ArticleFullObject;\n\n @Input()\n public configurable: boolean = false;\n\n @Input()\n public configuring: boolean = false;\n\n @HostBinding('class.full-screen')\n @Input()\n public fullscreen: boolean = false;\n\n @Input()\n public set quantity(value: number) {\n this._quantity = Math.max(1, value);\n }\n\n public get quantity(): number {\n return this._quantity;\n }\n\n @Output()\n public startConfiguration: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public addToCartClick: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n public addToQuoteClick: EventEmitter<number> = new EventEmitter<number>();\n\n public showQuoteButton: boolean = false;\n\n private _quantity = 1;\n\n constructor(\n public iconCache: IconCacheService,\n private _ioneControllerService: ProductConnectorService,\n private _appEventService: ProductEventService,\n private _settingsService: ProductSettingsService\n ) { }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this.addToCartButton = undefined;\n }\n\n public async handleAddToCartClick(quantity: number): Promise<void> {\n this._appEventService.onAddToCart.next(await this._getJSONFromArticleObject({article: this.article, quantity: quantity}));\n }\n\n public async handleAddToQuoteClick(quantity: number): Promise<void> {\n this._appEventService.onAddToQuote.next(await this._getJSONFromArticleObject({article: this.article, quantity: quantity}));\n }\n\n private async _getJSONFromArticleObject(article: ArticleQuantity): Promise<string> {\n const configuratorStatistics = new ConfiguratorStatisticsEnvironment();\n configuratorStatistics.userType = 'iOneProductPage';\n configuratorStatistics.transactionType = 'Sales';\n configuratorStatistics.actionDomain = 'bundle';\n configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';\n configuratorStatistics.webHost = window.location.host;\n configuratorStatistics.bundleHost = window.location.host;\n return await this._ioneControllerService.getJsonArticleFlatTree(\n article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ArticleListObject } from '@colijnit/articleapi/build/model/article-list-object';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { ProductEventService } from '../../service/product-event.service';\nimport {DocumentContent} from '@colijnit/articleapi/build/model/document-content';\n\n@Component({\n selector: 'app-product-related',\n templateUrl: './product-related.component.html',\n styleUrls: ['./product-related.component.scss']\n})\nexport class ProductRelatedComponent {\n\n @Input()\n public refType: number;\n\n @Input()\n public label: string;\n\n @Input()\n public isSmallModus: boolean = true;\n\n @Input()\n public set articles(value: ArticleListObject[]) {\n if (value) {\n if (this.refType && this.refType !== undefined) {\n if (value.length > 0) {\n value.forEach((x: ArticleListObject) => {\n if (x.refType === this.refType) {\n this._articles.push(x);\n }\n });\n }\n } else {\n this._articles = value;\n }\n this._loadImages();\n }\n }\n\n public get articles(): ArticleListObject[] {\n return this._articles;\n }\n\n private _articles: ArticleListObject[] = [];\n\n constructor(\n private _iOne: ProductConnectorService,\n private _appEventService: ProductEventService\n ) { }\n\n public handleContentClick(article: ArticleListObject): void {\n this._appEventService.onAlternativeClick.next(article);\n }\n\n private _loadImages(): void {\n this._articles.forEach((a: ArticleListObject) => {\n if (!a.image.documentBody) {\n this._iOne.getDocumentContent(a.image.documentId).then((content: DocumentContent) => {\n if (content) {\n a.image.documentBody = content.documentContent;\n }\n });\n }\n });\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\n\n@Component({\n selector: 'app-product-stock',\n templateUrl: './product-stock.component.html',\n styleUrls: ['./product-stock.component.scss']\n})\nexport class ProductStockComponent implements OnInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public set stockAndDelivery(value: StockAndDelivery) {\n if (value) {\n this.numberInStock = value.stock;\n }\n }\n\n public numberInStock: number;\n public iconData: SafeHtml;\n\n constructor(private _iOne: ProductConnectorService, private _iconCache: IconCacheService) {\n this.iconData = this._iconCache.getIcon(this.icon.Warehouse);\n }\n\n ngOnInit() {\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport { DictionaryService } from '../service/dictionary.service';\r\n\r\n@Pipe({\r\n name: 'localize'\r\n})\r\n// A pipe for localizing string values in view templates.\r\nexport class LocalizePipe implements PipeTransform {\r\n\r\n constructor(private _dictionaryService: DictionaryService) {}\r\n\r\n transform(value: string, upperCaseFirst: boolean = true, replace: string|string[] = []): string {\r\n if (!value) {\r\n return '';\r\n }\r\n replace = replace ? replace : [];\r\n if (!Array.isArray(replace)) {\r\n replace = [replace];\r\n }\r\n return this._dictionaryService.get(value, upperCaseFirst, ...replace);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { StockAndDelivery } from '../../model/stock-and-delivery';\nimport { LocalizePipe } from '../../pipe/localize.pipe';\n\n@Component({\n selector: 'app-product-delivery',\n templateUrl: './product-delivery.component.html',\n styleUrls: ['./product-delivery.component.scss']\n})\nexport class ProductDeliveryComponent implements OnInit {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public set stockAndDelivery(value: StockAndDelivery) {\n if (value) {\n this.deliveryDescription = value.deliveryDescription;\n if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {\n this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');\n }\n }\n }\n\n public deliveryDescription: string;\n public iconData: SafeHtml;\n\n constructor(\n private _localizePipe: LocalizePipe,\n private _iOne: ProductConnectorService,\n private _iconCache: IconCacheService\n ) {\n this.iconData = this._iconCache.getIcon(this.icon.Truck);\n }\n\n ngOnInit() {\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { Subscription } from 'rxjs';\nimport { ProductEventService } from '../../service/product-event.service';\n\n@Component({\n selector: 'app-product-info-tabs',\n templateUrl: './product-info-tabs.component.html',\n styleUrls: ['./product-info-tabs.component.scss']\n})\nexport class ProductInfoTabsComponent implements OnDestroy {\n\n public activeTab: number;\n public activeTabHeight: number = 0;\n\n @ViewChild('tabContent')\n public tabContent: ElementRef;\n\n public tabs: any[] = [];\n\n public articleObject: ArticleFullObject;\n\n @Input ()\n set article(value: ArticleFullObject) {\n if (value) {\n this.articleObject = value;\n this._setupTabs();\n this.updateTab(0);\n }\n }\n\n private _subs: Subscription[] = [];\n\n constructor(\n private _appEventService: ProductEventService\n ) {\n this._subs.push(\n this._appEventService.onUpdateProductInfoTab.subscribe((index: number) => {\n this.updateTab(index);\n this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public updateTab(tabIndex: number) {\n this.activeTab = tabIndex;\n this.updateHeight(tabIndex);\n }\n\n public updateHeight(tabIndex: number): void {\n if (this.tabContent.nativeElement.children.length > 0) {\n if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {\n this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;\n }\n }\n }\n\n private _setupTabs(): void {\n this.tabs.push({ title: 'DESCRIPTION' });\n this.tabs.push({ title: 'FEATURES' });\n\n if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {\n this.tabs.push({ title: 'DOWNLOADS' });\n }\n\n if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {\n this.tabs.push({ title: 'SYMBOLS' });\n }\n\n }\n\n}\n","import {NgModule} from '@angular/core';\r\nimport {LocalizePipe} from './localize.pipe';\r\n\r\n@NgModule({\r\n exports: [\r\n LocalizePipe\r\n ],\r\n declarations: [\r\n LocalizePipe\r\n ],\r\n providers: [\r\n LocalizePipe\r\n ]\r\n})\r\nexport class PipeModule {\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CoDocument } from '@colijnit/mainapi/build/model/co-document';\nimport { IconEnum } from '../../enum/icon.enum';\nimport { ProductConnectorService } from '../../service/product-connector.service';\nimport { IconCacheService } from '../../service/icon-cache.service';\n\n@Component({\n selector: 'app-product-documents',\n templateUrl: './product-documents.component.html',\n styleUrls: ['./product-documents.component.css']\n})\nexport class ProductDocumentsComponent {\n\n public readonly icon: typeof IconEnum = IconEnum;\n\n @Input()\n public showLabel: boolean = false;\n\n @Input()\n public documents: CoDocument[] = [];\n\n constructor(public iconCache: IconCacheService) { }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n @Input()\n public label: string;\n\n @Input()\n public amount: number;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { ChangeDetectorRef, Component, Input, OnInit, SecurityContext } from '@angular/core';\nimport { CoText } from '@colijnit/mainapi/build/model/co-text';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\nimport { SuperArticle } from '@colijnit/articleapi/build/model/super-article';\nimport { BitUtils } from '../../utils/bit-utils';\nimport {ProductConnectorService} from '../../service/product-connector.service';\n\n@Component({\n selector: 'app-product-additional-info',\n templateUrl: './product-additional-info.component.html',\n styleUrls: ['./product-additional-info.component.scss']\n})\nexport class ProductAdditionalInfoComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n if (value) {\n this._article = value;\n this._buildInfo().then(() => {\n this._changeDetector.detectChanges();\n });\n }\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n @Input()\n public showLabel: boolean = false;\n\n public textParts: SafeHtml[] = [];\n public info: string;\n\n private _article: ArticleFullObject;\n private _superArticles: Map<string, SuperArticle> = new Map();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _connectorService: ProductConnectorService,\n private _changeDetector: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n }\n\n private async _getTextsSuperArticle(): Promise<SafeHtml[]> {\n return new Promise(async (resolve: Function, reject: Function) => {\n const texts: SafeHtml[] = [];\n if (this.article.superArticleNr) {\n let mainArticle;\n if (this._superArticles.has(this.article.superArticleNr)) {\n mainArticle = this._superArticles.get(this.article.superArticleNr);\n } else {\n mainArticle = await this._connectorService.getSuperArticle(this.article.superArticleNr);\n this._superArticles.set(this.article.superArticleNr, mainArticle);\n }\n mainArticle.texts.forEach((txt: CoText) => {\n if (BitUtils.IsFullDescription(txt.publication)) {\n const safeTxt: SafeHtml = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);\n texts.push(safeTxt);\n }\n });\n resolve(texts);\n } else {\n resolve(texts);\n }\n });\n }\n\n private async _prepareArticleTexts(): Promise<void> {\n const texts: SafeHtml[] = await this._getTextsSuperArticle();\n if (texts.length > 0) {\n this.textParts.push(...texts);\n }\n if (this.article.texts) {\n this.article.texts.forEach((txt: CoText) => {\n if (BitUtils.IsFullDescription(txt.publication)) {\n const safeTxt: SafeHtml = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);\n this.textParts.push(safeTxt);\n }\n });\n }\n }\n\n private async _buildInfo(): Promise<void> {\n this.textParts.length = 0;\n await this._prepareArticleTexts();\n if (this.textParts.length === 0) {\n if (this.article.additionalDescription) {\n this.textParts.push(this.article.additionalDescription);\n } else if (this.article.description) {\n this.textParts.push(this.article.description);\n }\n }\n return;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';\n\nexport const propertyMap: Map<string, string> = new Map([\n ['articleNr', 'ARTICLE_NUMBER'],\n ['catExtra', 'CATEGORY'],\n ['catType', 'CATEGORY_TYPE'],\n ['description', 'DESCRIPTION'],\n ['material', 'MATERIAL'],\n ['title', 'TITLE'],\n ['turnOverGroup', 'TURNOVERGROUP'],\n ['height', 'HEIGHT'],\n ['width', 'WIDTH']\n]);\n\n@Component({\n selector: 'app-product-properties',\n templateUrl: './product-properties.component.html',\n styleUrls: ['./product-properties.component.scss']\n})\nexport class ProductPropertiesComponent implements OnInit {\n\n @Input()\n public set article(value: ArticleFullObject) {\n this._article = value;\n this._prepareProperties();\n }\n\n public get article(): ArticleFullObject {\n return this._article;\n }\n\n @Input()\n public showLabel: boolean = false;\n\n public properties: {key: string, value: string}[] = [];\n\n private _article: ArticleFullObject;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n private _prepareProperties(): void {\n this.properties.length = 0;\n if (!this._article) {\n return;\n }\n propertyMap.forEach((value: string, key: string) => {\n if (this.article.hasOwnProperty(key)) {\n this.properties.push({key: value, value: this.article[key]});\n }\n });\n }\n\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-product-symbols',\n templateUrl: './product-symbols.component.html',\n styleUrls: ['./product-symbols.component.scss']\n})\nexport class ProductSymbolsComponent implements OnInit {\n\n @Input()\n public set symbols(value: any) {\n this._symbols = value;\n if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {\n this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');\n }\n if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {\n for (let i = 0; i < this._symbols['symbolString'].length; i++) {\n this.symbolStrings.push(this._symbols['symbolString'][i]);\n }\n }\n }\n\n public get symbols(): any {\n return this._symbols;\n }\n\n @HostBinding('class')\n public _className: string;\n\n public symbolStrings: string[] = [];\n\n private _symbols: any;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ProductPageComponent} from './product-page.component';\r\nimport {ProductSelectorTypeComponent} from '../product-selector-type/product-selector-type.component';\r\nimport {ImageCarouselComponent} from '../image-carousel/image-carousel.component';\r\nimport {\r\n ArticleTileModule,\r\n ButtonModule,\r\n FilesUploadModule,\r\n IconModule,\r\n InputTextModule,\r\n LevelIndicatorModule,\r\n LoaderModule,\r\n NumberPickerModule,\r\n PriceDisplayPipeModule,\r\n ScrollContainerModule,\r\n TileModule\r\n} from '@colijnit/corecomponents';\r\nimport {ProductDescriptionComponent} from '../product-description/product-description.component';\r\nimport {ProductAdditionalDescriptionComponent} from '../product-additional-description/product-additional-description.component';\r\nimport {ProductPriceComponent} from '../product-price/product-price.component';\r\nimport {ProductAddtocartComponent} from '../product-addtocart/product-addtocart.component';\r\nimport {ProductRelatedComponent} from '../product-related/product-related.component';\r\nimport {ProductStockComponent} from '../product-stock/product-stock.component';\r\nimport {ProductDeliveryComponent} from '../product-delivery/product-delivery.component';\r\nimport {ProductInfoTabsComponent} from '../product-info-tabs/product-info-tabs.component';\r\nimport {PipeModule} from '../../pipe/pipe.module';\r\nimport {ProductDocumentsComponent} from '../product-documents/product-documents.component';\r\nimport {HeaderComponent} from '../core/header/header.component';\r\nimport {ProductInfoComponent} from '../product-info/product-info.component';\r\nimport {ProductAdditionalInfoComponent} from '../product-additional-info/product-additional-info.component';\r\nimport {ProductPropertiesComponent} from '../product-properties/product-properties.component';\r\nimport {ProductSymbolsComponent} from '../product-symbols/product-symbols.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IconModule,\r\n LoaderModule,\r\n PipeModule,\r\n NumberPickerModule,\r\n ButtonModule,\r\n PriceDisplayPipeModule,\r\n InputTextModule,\r\n FilesUploadModule,\r\n ScrollContainerModule,\r\n TileModule,\r\n LevelIndicatorModule,\r\n ArticleTileModule,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n declarations: [\r\n ProductPageComponent,\r\n ProductSelectorTypeComponent,\r\n ImageCarouselComponent,\r\n ProductDescriptionComponent,\r\n ProductAdditionalDescriptionComponent,\r\n ProductPriceComponent,\r\n ProductAddtocartComponent,\r\n ProductRelatedComponent,\r\n ProductStockComponent,\r\n ProductDeliveryComponent,\r\n ProductInfoTabsComponent,\r\n ProductDocumentsComponent,\r\n HeaderComponent,\r\n ProductInfoComponent,\r\n ProductAdditionalInfoComponent,\r\n ProductPropertiesComponent,\r\n ProductSymbolsComponent\r\n ],\r\n exports: [ProductPageComponent]\r\n})\r\nexport class ProductPageModule {\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ProductExternalSourceComponent} from './product-external-source.component';\r\nimport {ProductPageModule} from '../product-page/product-page.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ProductPageModule\r\n ],\r\n declarations: [\r\n ProductExternalSourceComponent\r\n ],\r\n exports: [\r\n ProductExternalSourceComponent\r\n ]\r\n})\r\nexport class ProductExternalSourceModule {\r\n}\r\n","import {APP_INITIALIZER, NgModule} from '@angular/core';\nimport {IoneProductComponent} from './ione-product.component';\nimport {CommonModule} from '@angular/common';\n// import {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProductInitializerService} from './service/product-initializer.service';\nimport {ProductExternalSourceModule} from './components/product-external-source/product-external-source.module';\nimport {ProductPageModule} from './components/product-page/product-page.module';\n\nexport function initializeApp(context: ProductInitializerService) {\n const x = () => context.initializeApp();\n return x;\n}\n\n@NgModule({\n imports: [\n // BrowserAnimationsModule,\n CommonModule,\n ProductExternalSourceModule,\n ProductPageModule\n ],\n declarations: [\n IoneProductComponent\n ],\n entryComponents: [\n IoneProductComponent\n ],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: initializeApp,\n deps: [ProductInitializerService],\n multi: true\n }\n ],\n exports: [IoneProductComponent],\n bootstrap: [\n IoneProductComponent\n ]\n})\nexport class IoneProductModule {\n}\n"]}
|