@colijnit/product 2.9.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
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"]}
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/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","loaded","JSON","parse","ngOnInit","ngOnChanges","changes","detectChanges","s","articleTreeData","articleTree","compositeGoods","Array","isArray","subArticles","sort","a","b","versionNumber","good","subArticle","find","memberGoodId","this_1","articleNumber","ChangeDetectorRef","Input","Component","selector","template","providers","encapsulation","ViewEncapsulation","Emulated","ProductExternalSourceComponent","_sanitizer","_productConnectorService","addToCart","addToQuote","alternativeClick","showProduct","externalSettings","_externalSource","_prepareExternalSource","showClass","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","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","IoneProductModule","entryComponents","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.1\";\n public publishDate = \"14-9-2023 16:32:35\";\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 APP_INITIALIZER,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy, OnInit,\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 *ngIf=\"settingsLoaded\"\n [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 OnInit, 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 settingsLoaded: boolean = false;\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 this._settingsService.settingsLoaded.subscribe(loaded => {\n this.settingsLoaded = loaded;\n }),\n );\n }\n\n async ngOnInit(): Promise<void> {\n await this._settingsService.initializeSettings();\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 &&\n articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {\n const compositeGoods = articleTreeData.articleTree.compositeGoods;\n compositeGoods.sort((a, b) => a.versionNumber < b.versionNumber ? -1 : 1);\n for (let i = 0; i < compositeGoods.length; i++) {\n const good = compositeGoods[i];\n const subArticle = articleTreeData.articleTree.subArticles.find(s => s.goodId === good.memberGoodId);\n if (subArticle) {\n await this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);\n }\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 {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 {NgModule} from '@angular/core';\nimport {IoneProductComponent} from './ione-product.component';\nimport {CommonModule} from '@angular/common';\n// import {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProductExternalSourceModule} from './components/product-external-source/product-external-source.module';\nimport {ProductPageModule} from './components/product-page/product-page.module';\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 exports: [IoneProductComponent],\n bootstrap: [\n IoneProductComponent\n ]\n})\nexport class IoneProductModule {\n}\n"]}