{"version":3,"file":"resource-center.min.js","sources":["../../node_modules/@progress-wad/resource-center/src/js/resource-center-strings.js","../../node_modules/@progress-wad/resource-center/src/js/resource-center-sanitize.js","../../node_modules/@progress-wad/resource-center/src/js/resource-center-page-url-service.js","../../node_modules/@progress-wad/resource-center/src/js/resource-center-api-service.js","../../node_modules/@progress-wad/resource-center/src/js/resource-center-filter-service.js","../../node_modules/@progress-wad/resource-center/src/js/resource-center-api-url-service.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-wug.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-ipswitch.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-partners.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-customers.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-resources.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-events.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-webinars.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-dci-overview.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-dci-accordion.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-center-html-provider-progress-dci-connectors-list.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-center-html-provider-progress-user-awards-list.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-kemp-partners.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-flowmon-partners.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-kemp-videos.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-flowmon-resources.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-kemp-resources.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-flowmon-research-projects.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-chef-in-ipswitch-resources.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-webinars.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-telerik-release-notes.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-tutorials.js","../../node_modules/@progress-wad/resource-center/src/js/site-spicific-data/resource-item-html-provider-progress-sitefinity-integrations.js","../../node_modules/@progress-wad/resource-center/src/js/object-factory.js","../../node_modules/@progress-wad/resource-center/src/js/init.js"],"sourcesContent":["export class ResourceCenterStrings {\n static get contentTypesKeyName() {\n return \"content-types\";\n }\n\n static get languageKeyName() {\n return \"language\";\n }\n\n static get industriesKeyName() {\n return \"industries\";\n }\n\n static get solutionsKeyName() {\n return \"solutions\";\n }\n\n static get categoriesKeyName() {\n return \"categories\";\n }\n\n static get productsKeyName() {\n return \"products\";\n }\n\n static get searchtextKeyName() {\n return \"searchtext\";\n }\n\n static get pageKeyName() {\n return \"page\";\n }\n}\n","export const htmlEncode = (html = '') => html ? document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML : html;\nexport const htmlDecode = (html = '') => html ? new DOMParser().parseFromString(html, 'text/html').documentElement.textContent : html;\n","import { ResourceCenterStrings } from \"./resource-center-strings.js\";\nimport { htmlEncode } from \"./resource-center-sanitize.js\";\n\nconst languageValues = {\n chinese: \"zh-TW\",\n japanese: \"ja\",\n swedish: \"sv\"\n}\n\nexport class ResourceCenterPageUrlService {\n constructor() {\n }\n\n getCurrentQueryParams() {\n const queryParams = new URLSearchParams(window.location.search);\n\n return queryParams;\n }\n\n getPageNumber() {\n const queryParams = this.getCurrentQueryParams();\n\n let pageNumber = 1;\n\n if (queryParams.has(ResourceCenterStrings.pageKeyName)) {\n pageNumber = Number(queryParams.get(ResourceCenterStrings.pageKeyName))\n }\n\n return pageNumber;\n\n }\n\n getResourcesLanguage() {\n const urlQueryString = this.getCurrentQueryParams();\n let resourceLanguage = urlQueryString.get(ResourceCenterStrings.languageKeyName);\n if (resourceLanguage == null) {\n resourceLanguage = this.getPageLanguage();\n }\n\n return resourceLanguage;\n }\n\n getPageLanguage() {\n let languageFromPath = window.location.pathname.split('/').filter(function (el) { return el != \"\"; })[0];\n if (languageFromPath == \"jp\") { languageFromPath = languageValues.japanese; }\n if (languageFromPath == \"tw\") { languageFromPath = languageValues.chinese; }\n if (languageFromPath == \"se\") { languageFromPath = languageValues.swedish; }\n\n let defaultLanguage = 'en';\n const languageInputField = document.getElementById(languageFromPath);\n\n if (languageInputField) {\n defaultLanguage = languageInputField.id;\n }\n\n return defaultLanguage;\n }\n\n transformSelectionsToQueryParams(page, shouldPushState, currentFilterSelection) {\n const queryParams = this.parseFilterSelectionToQueryParams(page, currentFilterSelection);\n let url = new URL(window.location);\n url.search = queryParams;\n\n if (shouldPushState) {\n ResourceCenterPageUrlService.push(url);\n }\n }\n\n parseFilterSelectionToQueryParams(page, currentFilterSelection) {\n let query = new URLSearchParams();\n if (Object.keys(currentFilterSelection.selectedTaxonomies).length > 0) {\n currentFilterSelection.selectedTaxonomies.forEach(taxonomies => {\n for (const taxon in taxonomies) {\n taxonomies[taxon].taxa.forEach(taxa => {\n const taxaDomElementById = document.querySelector(`[data-id*=\"${taxa}\"]`);\n if (taxaDomElementById) {\n const queryParamAlreadyExists = query.get(taxon) === taxaDomElementById.dataset.name\n if (!queryParamAlreadyExists) {\n query.append(taxon.toLowerCase(), taxaDomElementById.dataset.name);\n }\n }\n });\n }\n });\n }\n\n if(page > 0){\n query.append(ResourceCenterStrings.pageKeyName, page);\n }\n\n if (currentFilterSelection.searchTerm.length > 0) {\n query.append(ResourceCenterStrings.searchtextKeyName, htmlEncode(currentFilterSelection.searchTerm));\n }\n if (currentFilterSelection.language) {\n query.append(ResourceCenterStrings.languageKeyName, currentFilterSelection.language);\n }\n\n // Dispach event in order to be able to extend with custom filters query params\n let urlSearchParamsWrapper = {\n urlSearchParams: query\n };\n const onParseFilterToQueryParamsCompleted = new CustomEvent(\"onParseFilterToQueryParamsCompleted\", { detail: urlSearchParamsWrapper });\n document.dispatchEvent(onParseFilterToQueryParamsCompleted);\n\n return query.toString();\n }\n\n static push(url) {\n if (!ResourceCenterPageUrlService.validate(url)) {\n throw new Error('Please provide valid URL');\n }\n\n let newUrl = url.search;\n if(!newUrl){\n newUrl = (!url.hash) ? url.pathname : (url.pathname + url.hash);\n }\n\n window.history.pushState(null, null, newUrl);\n }\n\n static validate(url) {\n let result = false;\n\n try {\n new URL(url);\n result = true;\n }\n catch (error) {\n result = false;\n }\n\n return result;\n }\n}\n","\n\nconst styles = {\n block: \"-db\",\n none: \"-dn\"\n}\n\nexport class ResourceCenterApiService {\n constructor(apiUrlService, filterService, resourceCenterfactory, settings) {\n this.widgetSettings = settings;\n this.updateGrid = this.updateGrid.bind(this);\n this.apiUrlService = apiUrlService;\n this.filterService = filterService;\n this.pageSize = window.ResourceCenterSettings.ODataSettings.PageSize;\n this.cachedResponses = new Map();\n this.lastRequestURL;\n this.resourceCenterObjectFactory = resourceCenterfactory;\n }\n\n updateGrid(pageNumber) {\n //GET the API call based on DOM selection.\n const apiRequest = this.apiUrlService.generate(pageNumber, this.filterService.getSelection());\n const resourceItems = {};\n let html = \"\";\n const cachedReponse = this.cachedResponses.get(apiRequest);\n this.lastRequestURL = this.normalizeRequestUrl(apiRequest);\n\n if (cachedReponse) {\n cachedReponse.response.totalItemsCount > 0 ? this.showMissingResourcesMessage(false) : this.showMissingResourcesMessage(true);\n\n document.getElementById(this.widgetSettings.ItemsContainer).innerHTML = cachedReponse.html;\n return Promise.resolve(cachedReponse.response);\n }\n\n const result = fetch(apiRequest, {\n method: 'GET',\n })\n .then((response) => {\n const isLastUrlResponse = this.lastRequestURL === response.url;\n if (response.ok && (isLastUrlResponse || !response.url)) {\n return response.json();\n }\n else if (!isLastUrlResponse) {\n return Promise.reject(new Error(\"Awaiting last response.\"));\n }\n else {\n return Promise.reject(new Error(`There was a problem with your request - ${response.url}.`));\n }\n })\n .then(data => {\n resourceItems.resources = data.value;\n resourceItems.dataCount = data['@odata.count'];\n resourceItems.pagesCount = Math.ceil(resourceItems.dataCount / this.pageSize);\n\n if (resourceItems.dataCount == 0 || data.value.length == 0) {\n this.showMissingResourcesMessage(true);\n }\n else {\n this.showMissingResourcesMessage(false);\n let idsWithMissingRelatedMedia = [];\n data.value.forEach(item => {\n const imageFieldName = Object.keys(window.ResourceCenterSettings.ODataSettings.ExpandedFields.Image)[0];\n if (item[imageFieldName] && (item[imageFieldName].length == 0 || (item.File && item.File.length == 0))) {\n idsWithMissingRelatedMedia.push(item.Id);\n }\n });\n return this.getRelatedMedia_english(idsWithMissingRelatedMedia);\n }\n })\n .then(images => {\n resourceItems.images = images;\n return resourceItems;\n })\n .then(() => {\n if(this.widgetSettings.GroupingSettings){\n let groupedCollection = this.groupItems(resourceItems.resources, this.widgetSettings.GroupingSettings);\n groupedCollection.forEach(item => {\n html += this.itemHTML(item, resourceItems.images);\n });\n }\n else{\n resourceItems.resources.forEach(item => {\n html += this.itemHTML(item, resourceItems.images);\n });\n }\n document.getElementById(this.widgetSettings.ItemsContainer).innerHTML = html;\n const response = { totalItemsCount: resourceItems.dataCount, totalPagesCount: resourceItems.pagesCount, currentPage: pageNumber };\n this.cachedResponses.set(apiRequest, { response, html });\n\n return response;\n });\n\n return result;\n }\n\n normalizeRequestUrl(urlString) {\n const absoluteUrlString = window.location.origin + urlString;\n let encodedUrlString;\n try {\n encodedUrlString = new URL(absoluteUrlString).href;\n }\n catch {\n encodedUrlString = absoluteUrlString;\n }\n\n return encodedUrlString;\n }\n\n itemHTML(item, relatedMedia) {\n const itemHtml = this.resourceCenterObjectFactory.getResourceItemHtmlProvider(this.filterService).getItemHtml(item, relatedMedia);\n const result = itemHtml.trim().split('\\n').map(x => x.trim()).join('');\n\n return result;\n }\n\n getRelatedMedia_english(itemIds) {\n if (itemIds.length == 0) {\n return \"\";\n }\n\n const apiRequestUrl = this.apiUrlService.getImagesUrl_english(itemIds);\n const result = fetch(apiRequestUrl, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n return response.json().then(data => {\n return data.value;\n });\n }\n });\n\n return result;\n }\n\n showMissingResourcesMessage(showMessage) {\n const missingResourcesMessageDiv = document.querySelector(`#${this.widgetSettings.MissingItemsContainer}`);\n if (missingResourcesMessageDiv) {\n let classToRemove = showMessage ? styles.none : styles.block;\n let classToAdd = classToRemove === styles.none ? styles.block : styles.none;\n\n missingResourcesMessageDiv.classList.remove(classToRemove);\n missingResourcesMessageDiv.classList.add(classToAdd);\n }\n }\n\n groupItems(initialCollection, groupingSettings){\n let itemsGroupingMap = new Map();\n let otherGroupData = {};\n otherGroupData.Title = 'Other';\n otherGroupData.Id = 'other';\n otherGroupData.UrlName = 'other';\n\n for(let item of initialCollection){\n let isInGroup = false;\n for(let taxon of item[groupingSettings.GroupingProperty]){\n if (groupingSettings.ParentTaxonToUseId && taxon.ParentId !== groupingSettings.ParentTaxonToUseId){\n continue;\n }\n\n this.addToGroupMap(item, taxon, itemsGroupingMap);\n\n isInGroup = true;\n }\n\n if(!isInGroup){\n this.addToGroupMap(item, otherGroupData, itemsGroupingMap);\n }\n }\n\n let itemsInColumns = [];\n\n for(let column of groupingSettings.GroupsData){\n let itemsInColumn = [];\n for(let taxonId of column){\n if(itemsGroupingMap.has(taxonId)){\n itemsInColumn.push(itemsGroupingMap.get(taxonId));\n itemsGroupingMap.delete(taxonId);\n }\n }\n itemsInColumns.push(itemsInColumn);\n }\n\n if (itemsGroupingMap.size > 0){\n let otherGroup = null;\n itemsGroupingMap.forEach((value, key) => {\n if(key !== 'other'){\n itemsInColumns[itemsInColumns.length - 1].push(value);\n }\n else{\n otherGroup = value;\n }\n });\n\n if(otherGroup){\n itemsInColumns[itemsInColumns.length - 1].push(otherGroup);\n }\n }\n\n return itemsInColumns;\n }\n\n addToGroupMap(item, data, map){\n if(map.has(data.Id)){\n map.get(data.Id).items.push(item);\n }\n else{\n let itemsGroup = {};\n itemsGroup.title = data.Title;\n itemsGroup.urlName = data.UrlName\n itemsGroup.items = [item]\n map.set(data.Id, itemsGroup);\n }\n }\n}\n","import { ResourceCenterStrings } from \"./resource-center-strings.js\";\nimport { htmlDecode } from \"./resource-center-sanitize.js\";\n\nexport class ResourceCenterFilterService {\n constructor(settings) {\n this.filterSettings = settings;\n }\n\n getSelection() {\n let selectedTaxonomies = [];\n if (this.filterSettings.TaxonomySelectors && this.filterSettings.TaxonomySelectors.length > 0) {\n this.filterSettings.TaxonomySelectors.forEach(selector => {\n const currentTaxon = this.getSelectedTaxonomies(selector);\n if (Object.keys(currentTaxon).length > 0) {\n selectedTaxonomies.push(currentTaxon)\n }\n });\n }\n\n const language = this.getSelectedLanguage();\n const searchTerm = this.getSearchParams();\n\n // WUG specific\n this.toggleClearFiltersButton(selectedTaxonomies);\n\n return { selectedTaxonomies, language, searchTerm };\n }\n\n markSelectedItemsBasedOnQueryParams(queryParams) {\n let querryParamsPertainingToFilterSelection = [\n ResourceCenterStrings.languageKeyName,\n ResourceCenterStrings.searchtextKeyName\n ]\n\n const customQueryParams = this.getQueryParamsFromDom();\n querryParamsPertainingToFilterSelection = querryParamsPertainingToFilterSelection.concat(customQueryParams);\n\n for (let currentKey of querryParamsPertainingToFilterSelection) {\n if (queryParams.has(currentKey)) {\n switch (currentKey) { \n case ResourceCenterStrings.languageKeyName:\n this.setSelectedLanguage(queryParams.get(currentKey));\n break;\n case ResourceCenterStrings.searchtextKeyName:\n this.populateSearchField(htmlDecode(queryParams.get(currentKey)));\n break;\n default:\n let keyValues = queryParams.getAll(currentKey);\n for (let currentValue of keyValues) {\n this.markElementAsSelected(\"data-name\", currentValue);\n }\n break;\n }\n }\n }\n }\n\n getSelectedTaxonomies(selector) {\n let taxonomies = {};\n let selectedTaxonomies = this.getTaxonomiesDomSelection(selector);\n\n if (selectedTaxonomies.length === 0) {\n return taxonomies;\n }\n\n selectedTaxonomies.forEach(taxon => {\n const taxonomyName = taxon.getAttribute(\"taxonomy\");\n if (taxonomyName) {\n const parent = taxon.closest(\"[taxaOperator][taxonomyOperator][taxonomy='\" + taxonomyName + \"']\");\n const taxonomyOperator = parent ? parent.getAttribute(\"taxonomyOperator\") : 'and';\n const taxaOperator = parent ? parent.getAttribute(\"taxaOperator\") : 'or';\n\n let taxaId = [];\n const taxonDataSet = taxon.dataset;\n if (taxonDataSet && taxon.dataset.id) {\n taxaId = taxon.dataset.id.split(\",\");\n }\n else {\n taxaId.push(taxon.getAttribute(\"id\"));\n }\n\n if (taxonomies.hasOwnProperty(taxonomyName)) {\n taxonomies[taxonomyName].taxa = taxonomies[taxonomyName].taxa.concat(taxaId);\n }\n else {\n taxonomies[taxonomyName] = { taxonomyOperator: taxonomyOperator, taxaOperator: taxaOperator, taxa: taxaId };\n }\n }\n });\n\n return taxonomies;\n }\n\n getSearchParams() {\n let searchParams = \"\";\n let searchInputValue = \"\";\n if (document.getElementById(this.filterSettings.SearchSelectors.input)) {\n searchInputValue = document.getElementById(this.filterSettings.SearchSelectors.input).value;\n }\n\n let activeSerchMessageElement = document.querySelector(`.${this.filterSettings.SearchSelectors.activeSerchMessageElement}`);\n let activeSearchMessageTermElement = document.querySelector(`.${this.filterSettings.SearchSelectors.activeSearchMessageTermElement}`);\n\n if (searchInputValue && searchInputValue.length > 0) {\n searchParams += searchInputValue;\n }\n\n if (activeSerchMessageElement && activeSearchMessageTermElement) {\n this.toggleActiveSearchMessage(searchParams, activeSerchMessageElement, activeSearchMessageTermElement, searchInputValue);\n }\n\n return searchParams;\n }\n\n getSelectedLanguage() {\n const selector = this.filterSettings.LanguageSelector;\n if (selector) {\n const selectedLanguage = document.querySelector(`input[class=${selector}]:checked, select[class=${selector}] option:checked`);\n if (!selectedLanguage) {\n return 'en';\n }\n return selectedLanguage.id;\n }\n return '';\n }\n\n setSelectedLanguage(language) {\n let languageField = document.getElementById(language) || document.getElementById('en');\n\n if (!languageField || !language) return;\n\n const domElementType = languageField.tagName.toLowerCase();\n switch (domElementType) {\n case 'option':\n languageField.selected = true;\n break;\n case 'input':\n languageField.checked = true;\n }\n }\n\n markElementAsSelected(propertyName, propertyValue, isSelected = true) {\n try {\n const domElement = document.querySelectorAll(`[${propertyName}='${propertyValue}']`);\n if (domElement) {\n const domElementType = domElement[0].tagName.toLowerCase();\n switch (domElementType) {\n case \"option\":\n domElement[0].selected = isSelected;\n this.triggerItemChangeEvent(domElement[0]);\n case \"input\":\n domElement[0].checked = isSelected;\n this.triggerItemChangeEvent(domElement[0]);\n }\n }\n }\n catch (ex) { }\n }\n\n clearSelection(pageUrlService, clearContentType = true) {\n const defaultLanguage = pageUrlService.getPageLanguage();\n let languageElement = document.querySelector(`#${defaultLanguage}`);\n if (languageElement) {\n languageElement.checked = true;\n }\n\n this.filterSettings.TaxonomySelectors.forEach(selector => {\n let selectedTaxonomies = this.getTaxonomiesDomSelection(selector);\n selectedTaxonomies.forEach(taxon => {\n //Ipswitch and WUG do not reset their content type selection when clearing filters.\n if (taxon.name !== ResourceCenterStrings.contentTypesKeyName) {\n var taxonType = taxon.tagName.toLowerCase();\n switch (taxonType) {\n case \"input\":\n taxon.checked = false;\n this.triggerItemChangeEvent(taxon);\n break;\n case \"option\":\n taxon.selected = false;\n this.triggerItemChangeEvent(taxon);\n break;\n }\n }\n })\n });\n\n if (clearContentType) {\n const defaultContentType = document.querySelector(\"input[title='all-resources']\");\n if (defaultContentType) {\n defaultContentType.checked = true;\n }\n }\n\n this.populateSearchField(\"\");\n }\n\n triggerItemChangeEvent(item) {\n item.dispatchEvent(new Event('change'));\n }\n\n populateSearchField(value) {\n let searchField = document.getElementById(this.filterSettings.SearchSelectors.input);\n if (searchField) {\n document.getElementById(this.filterSettings.SearchSelectors.input).value = value;\n }\n }\n\n toggleActiveSearchMessage(searchParams, activeSerchMessageElement, activeSearchMessageTermElement, searchInputValue) {\n if (searchParams) {\n activeSerchMessageElement.classList.remove(\"-dn\")\n\n activeSearchMessageTermElement.innerText = searchInputValue;\n }\n else {\n activeSerchMessageElement.classList.add(\"-dn\");\n\n activeSearchMessageTermElement.innerText = \"\";\n }\n }\n\n toggleClearFiltersButton(selectedTaxonomies) {\n if (this.filterSettings.ResourceFactorySettings && this.filterSettings.ResourceFactorySettings.ResourceItemHtmlProviderName === \"WUG\" && selectedTaxonomies) {\n const attributeName = 'data-resource-filter';\n const body = document.querySelector('body');\n selectedTaxonomies.length > 0 ? body.setAttribute(attributeName, 'true') : body.removeAttribute(attributeName);\n }\n }\n\n getTaxonomiesDomSelection(selector) {\n const selectedTaxonomiesInput = Array.from(document.querySelectorAll(`.${selector}:checked`));\n const selectedTaxonomiesOption = Array.from($(`.${selector}`).find(\":selected\"));\n const selectedTaxonomies = selectedTaxonomiesInput.concat(selectedTaxonomiesOption);\n\n return selectedTaxonomies;\n }\n getQueryParamsFromDom() {\n const attributeName = \"taxonomy\";\n const domItemsMarkedWithQueryParamsAttribute = Array.from(document.querySelectorAll(`[${attributeName}]`));\n let queryParams = [];\n\n domItemsMarkedWithQueryParamsAttribute.forEach(queryParam => {\n const queryParamKey = queryParam.getAttribute(attributeName);\n // The \"new Set()\" collection is not supported by IE 11;\n if (queryParams.indexOf(queryParamKey) === -1) {\n queryParams.push(queryParamKey);\n }\n });\n\n return queryParams;\n }\n}\n","import { ResourceCenterStrings } from \"./resource-center-strings.js\";\nimport { htmlEncode } from \"./resource-center-sanitize.js\";\n\nexport class ResourceCenterApiUrlService {\n constructor(settings) {\n this.widgetSettings = settings || {};\n this.oDataSettings = settings.ODataSettings || {};\n this.defaults = settings.UrlSettings || {\n filter: '$filter=',\n containsSegment: 'contains',\n expand: '$expand=',\n culture: 'sf_culture=',\n skip: '$skip=',\n take: '$top=',\n count: '$count=true',\n joinById: ' or id eq '\n }\n }\n\n generate(pageNumber, currentSelections) {\n let filterSegments = [];\n filterSegments = filterSegments.concat(this.oDataSettings.FilterSegments);\n const excludeTaxa = this.getTaxaUrls(this.oDataSettings.ExcludedTaxonomies, 'x ne');\n if (excludeTaxa) {\n filterSegments.push(`(${excludeTaxa})`);\n }\n\n let taxonomiesExpression = [];\n currentSelections.selectedTaxonomies.forEach(selectedTaxonomy => {\n const taxaUrl = this.getTaxaUrls(selectedTaxonomy, 'x eq');\n if (taxaUrl) {\n taxonomiesExpression.push(`(${taxaUrl})`);\n }\n });\n\n if (taxonomiesExpression.length > 0) {\n filterSegments.push(taxonomiesExpression.join(' and '));\n }\n const searchUrl = this.getApiSearchData(currentSelections.searchTerm);\n if (searchUrl) {\n filterSegments.push(searchUrl)\n }\n\n let queryParams = [];\n if (filterSegments.length > 0) {\n queryParams.push(`${this.defaults.filter}${filterSegments.join(' and ')}`);\n }\n const skipCount = this.widgetSettings.DisablePaging ? 0 : `${this.defaults.skip}${(pageNumber - 1) * this.oDataSettings.PageSize}`;\n const takeCount = this.widgetSettings.DisablePaging ? 0 : `${this.defaults.take}${this.oDataSettings.PageSize}`;\n const expands = this.getExpandedFieldsQuery();\n let culture = \"\";\n if (currentSelections.language) {\n culture = `${this.defaults.culture}${currentSelections.language}`;\n }\n\n queryParams.push(culture,\n expands,\n this.oDataSettings.SelectedFields,\n this.oDataSettings.OrderBy,\n skipCount,\n takeCount,\n this.defaults.count);\n\n const defaultUrl = this.oDataSettings.Endpoint + '?' + queryParams.filter(removeEmptyEntries => removeEmptyEntries).join('&');\n let apiRequestUrl = {\n url: defaultUrl\n };\n const onOdataUrlGenerated = new CustomEvent(\"onResourceCenterOdataUrlGenerationCompleted\", { detail: apiRequestUrl });\n document.dispatchEvent(onOdataUrlGenerated);\n\n return apiRequestUrl.url;\n }\n\n getExpandedFieldsQuery() {\n let query = [];\n\n const imageQuery = this.getImageQuery();\n if (imageQuery) {\n query.push(imageQuery);\n }\n\n if (this.oDataSettings.ExpandedFields.CommonFields.length > 0) {\n query.push(this.oDataSettings.ExpandedFields.CommonFields.join(','));\n }\n\n return query.length > 0 ? `${this.defaults.expand}${query.join(',')}` : \"\";\n }\n\n getTaxaUrls(taxonomies, taxaComparer) {\n let url = \"\";\n if (!taxonomies || Object.keys(taxonomies).length === 0) {\n return url;\n }\n let count = 0;\n for (let taxonomyName in taxonomies) {\n\n if (count > 0) { url += ' ' + taxonomies[taxonomyName].taxonomyOperator + ' ' }\n let opetator = taxonomies[taxonomyName].taxaOperator || 'or';\n url += taxonomyName + (opetator == 'or' ? '/any(x:' + taxaComparer + ' ' : '/all(x:' + taxaComparer + ' ');\n url += taxonomies[taxonomyName].taxa.join(' ' + opetator + ' ' + taxaComparer + ' ') + ')';\n\n count++;\n }\n url = url.replace(ResourceCenterStrings.categoriesKeyName, 'category');\n url = url.replace(ResourceCenterStrings.contentTypesKeyName, 'contenttypes');\n return url;\n }\n\n getApiSearchData(searchTerm) {\n let search = \"\";\n if (searchTerm.length > 0) {\n let segments = []\n const sanitizedTerm = this.sanitizeValueForUrl(searchTerm);\n\n this.oDataSettings.ContainsFields.forEach(field => {\n segments.push(`${this.defaults.containsSegment}(${field},'${sanitizedTerm}')`)\n });\n\n if (segments.length > 0) {\n search += `(${segments.join(' or ')})`;\n }\n }\n\n return search;\n }\n\n sanitizeValueForUrl(value) {\n let cleanValueFromSpecialCharacters = value.replace(\"'\", \"''\");\n return encodeURIComponent(htmlEncode(cleanValueFromSpecialCharacters));\n }\n\n getImagesUrl_english(resourceIds) {\n let url = '';\n const imageQuery = this.getImageQuery();\n if (imageQuery) {\n url = `${this.oDataSettings.Endpoint}?${this.defaults.filter}(id eq ${resourceIds.join(this.defaults.joinById)})&$select=id&${this.defaults.expand}${imageQuery}`\n }\n return url;\n }\n\n getImageQuery() {\n if (this.oDataSettings.ExpandedFields.Image) {\n return Object.values(this.oDataSettings.ExpandedFields.Image)[0];\n }\n return \"\";\n }\n}\n","export class ResourceItemHtmlProvider {\n constructor(filterService) {\n this.filterService = filterService;\n }\n\n getItemHtml(item, relatedMedia) {\n return \"\";\n }\n\n setRelatedMedia(item, relatedMedia) {\n const imageFieldName = Object.keys(window.ResourceCenterSettings.ODataSettings.ExpandedFields.Image)[0];\n let imageData;\n\n if (item[imageFieldName]) {\n if (Array.isArray(item[imageFieldName])){\n imageData = item[imageFieldName][0];\n }\n else {\n imageData = item[imageFieldName];\n }\n }\n\n let fileData;\n\n let englishVersion;\n if (relatedMedia && relatedMedia.length > 0) {\n englishVersion = relatedMedia.filter(media => { return media.Id === item.Id })[0]\n }\n\n // Fallback to english version.\n if (!imageData) {\n imageData = {};\n if (englishVersion && englishVersion[imageFieldName][0]) {\n imageData = englishVersion[imageFieldName][0];\n }\n }\n\n if (item.NotGated) {\n fileData = item.File[0];\n if (!fileData && (englishVersion && englishVersion.File)) {\n fileData = englishVersion.File[0];\n }\n }\n\n return { imageData, fileData };\n }\n\n getResourceUrl(contentTypeId) {\n let selectedLanguage = this.filterService.getSelectedLanguage();\n\n if (!selectedLanguage){\n selectedLanguage = \"en\";\n }\n\n const localizedUrl = window.localizedUrls[contentTypeId];\n let resourceUrl = \"\";\n\n if (localizedUrl) {\n resourceUrl = localizedUrl.filter(e => e.CultureName == selectedLanguage)[0].UrlName;\n }\n\n return resourceUrl;\n }\n\n encodeHtml(text){\n if(!text){\n return text;\n }\n \n var p = document.createElement(\"p\");\n p.textContent = text;\n var result = p.innerHTML;\n return result;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderWug extends ResourceItemHtmlProvider {\n constructor(filterService) {\n super(filterService);\n this.cssClasses = {\n col: 'col-4 -xl-half -mb3 -m-mb3',\n resource: 'Res-wrp',\n resorceImageRatio: 'Embed Embed--16by9 -bg-black',\n resorceImage: 'Section-bg',\n resourceContent: 'Res-content',\n resourceType: 'Res-label',\n webinarStartDate: 'Res-date',\n resourceSummary: 'Res-summary',\n resourceCTA: 'Res-cta',\n }\n\n this.monthNamesMap = new Map();\n this.monthNamesMap.set(\"en\", [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"Decembеr\"]);\n this.monthNamesMap.set(\"de\", [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"]);\n this.monthNamesMap.set(\"fr\", [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"]);\n this.monthNamesMap.set(\"ja\", [\"1月\", \"2月\", \"三月\", \"4月\", \"五月\", \"六月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"]);\n this.monthNamesMap.set(\"pt\", [\"Janeiro\", \"Fevereiro\", \"Marcha\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"]);\n this.monthNamesMap.set(\"es\", [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"]);\n this.monthNamesMap.set(\"zh-TW\", [\"一月\", \"二月\", \"遊行\", \"四月\", \"可能\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十月\"]);\n this.monthNamesMap.set(\"nl\", [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"Decembre\"]);\n this.monthNamesMap.set(\"sv\", [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"]);\n }\n\n getItemHtml(item, relatedMedia) {\n const { col, resource, resorceImageRatio, resorceImage, resourceType, webinarStartDate, resourceSummary, resourceCTA, resourceContent } = this.cssClasses;\n const { imageData } = super.setRelatedMedia(item, relatedMedia);\n const { Title, CTAText, UrlName: resourcePath, Summary, StartDate, ExternalUrl, CTAUrl } = item;\n const imageFallback = 'https://d34smkdb128qfi.cloudfront.net/images/librariesprovider2/default-album/resources/resource-default-thumbnail.jpg';\n const contentType = item.resourceCategory[0];\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n const featuredLabel = Boolean(Number(item.IsFeatured)) ? '
Featured
' : '';\n let resourceUrl;\n\n if (CTAUrl) {\n resourceUrl = CTAUrl;\n } else if (ExternalUrl) {\n resourceUrl = ExternalUrl;\n }\n else {\n resourceUrl = `${pageUrl}/${resourcePath}`;\n }\n\n let html = `\n
\n \n
\n
\n \"resource\n
\n
\n
\n ${featuredLabel}\n
${contentType.Title}
`;\n if (contentType.Id === '95d3ec8e-65be-4005-bbbf-cf94764bec84' && StartDate) {\n const startDate = new Date(StartDate);\n html += `
${startDate.getDate()} ${this.getMonthName(startDate.getMonth(), this.filterService.getSelectedLanguage())}
`\n }\n\n html += `

${this.encodeHtml(Title)}

`;\n\n if (Summary) {\n html += `
${this.encodeHtml(Summary)}
`\n }\n\n html += `\n
\n `;\n\n if (CTAText) {\n html += `
${this.encodeHtml(CTAText)}
`\n }\n\n html += `\n
\n
\n `;\n\n return html;\n }\n\n getMonthName(monthNumber, language) {\n const monthNameArray = this.monthNamesMap.get(language);\n return monthNameArray[monthNumber];\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderIpswitch extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n col: 'col-4 -xl-half -mb3',\n resourceWrapper: '-full -b1',\n resourceEmbed: 'Embed Embed--16by9 -db -tint-black -h-op-8',\n resourceImage: 'Section-bg -op-6',\n floatingLabel: 'Resource-floatingLabel Tag -tint-white -ttn',\n resourceContent: '-p2 -pt3 -pb3 -full -mt0 -df',\n labelWrap: '-fs0 -mb1',\n label: 'Tag',\n resourceDate: '-fs14 -fw3 -mb2',\n resourceLink: '-fs14 -ttu -fw5 -c-red -tdn'\n }\n\n this.minLabel = { en: 'min', de: 'minuten', nl: 'minuten', es: 'minutos', pt: 'minutos', fr: 'minutes', sv: 'minuter', jp: '分', 'zh-TW': '分' };\n }\n\n getResourceCtaLabel(contentType) {\n const lang = this.filterService.getSelectedLanguage();\n\n const learnMoreLabel = { en: 'Learn more', de: 'Mehr erfahren', nl: 'Meer informatie', es: 'Más información', pt: 'Saiba mais', fr: 'En savoir plus', sv: 'Läs mer', jp: '詳細', 'zh-TW': '深入瞭解' };\n const downloadTheReportLabel = { en: 'Download the report', de: 'Bericht herunterladen', nl: 'Download het rapport', es: 'Descargar el informe', pt: 'Baixar o relatório', fr: 'Télécharger le rapport', sv: 'Ladda ner rapporten', jp: 'レポートをダウンロード', 'zh-TW': '下載報告' };\n const downloadThePdfLabel = { en: 'Download the PDF', de: 'PDF herunterladen', nl: 'Download de PDF', es: 'Descargar el PDF', pt: 'Baixe o PDF', fr: 'Télécharger le PDF', sv: 'Ladda ner PDF:n', jp: 'PDF をダウンロード', 'zh-TW': '下載 PDF' };\n const viewTheInfographicLabel = { en: 'View the infographic', de: 'Hier die Infografik ansehen', nl: 'Bekijk de infographic', es: 'Ver la infografía', pt: 'Veja o infográfico', fr: 'Voir l\\'infographie', sv: 'Visa infografiken' };\n const watchTheVideoLabel = { en: 'Watch the video', de: 'Sehen Sie sich das Video an', nl: 'Bekijk de video', es: 'Ver el vídeo', pt: 'Assista ao vídeo', fr: 'Regarder la vidéo', sv: 'Titta på videon', jp: 'ビデオを視聴', 'zh-TW': '觀看影片' };\n const registerLabel = { en: 'Register', de: 'Registrieren', nl: 'Registreer', es: 'Regístrese en', pt: 'Registre-se', fr: 'S\\'inscrire', sv: 'Registrera', jp: '登録申し込み', 'zh-TW': '註冊網絡研討會' };\n const watchTheWebinarLabel = { en: 'Watch the webinar', de: 'Webinar ansehen', nl: 'Bekijk het webinar', es: 'Ver el seminario web', pt: 'Assista ao webinar', fr: 'Regarder le webinaire', sv: 'Se webbseminariet', jp: 'ウェビナーを視聴', 'zh-TW': '觀看網絡研討會' };\n const downloadLabel = { en: 'Download', de: 'Herunterladen', nl: 'Download', es: 'Descargar', pt: 'Download', fr: 'Télécharger', sv: 'Ladda ner', jp: 'ダウンロード', 'zh-TW': '下載' };\n\n switch (contentType.Id) {\n case '95d3ec8e-65be-4005-bbbf-cf94764bec84': // Live webinar\n return registerLabel[lang];\n case 'ba3505a5-edf2-4b48-8196-3cd4ec03e8b3': // On-demand webinar\n return watchTheWebinarLabel[lang];\n case 'c5dbf402-5020-4c9f-a6e5-80fbc168e2e8': // Video\n return watchTheVideoLabel[lang];\n case 'fba60918-8c88-4d01-afc9-63a9c113f644': // Analyst report\n return downloadTheReportLabel[lang];\n case 'eeb3c6b5-1f50-4737-a2f3-717e59683ec2': // Data sheet\n return downloadThePdfLabel[lang];\n case '3db61f70-a14e-4431-8aef-2d9fd62ba222': // Infographic\n return viewTheInfographicLabel[lang];\n case '70ae4793-8040-4c66-8bdf-0a7f4e81ede7': // Best practice\n case '6e38772a-82c5-454a-b6e6-740504dce161': // Case study\n return learnMoreLabel[lang];\n case 'fd8805fa-9232-4470-892e-e2e2bb263842': // Whitepaper\n case '63a9b7cc-0814-4876-8a8f-d77bd1451ddd': // Ebook\n return downloadLabel[lang];\n default:\n return this.CTAText;\n }\n }\n\n getItemHtml(item, relatedMedia) {\n let formattedDate = null;\n\n let { col, resourceWrapper, resourceEmbed, resourceImage, floatingLabel, resourceContent, labelWrap, label, resourceDate, resourceLink} = this.cssClasses;\n const { imageData, fileData } = super.setRelatedMedia(item, relatedMedia);\n const { Title, CTAText, UrlName: resourcePath } = item;\n const contentType = item.resourceCategory[0];\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n const resourceUrl = `${pageUrl}/${resourcePath}`;\n const featuredLabel = Boolean(Number(item.IsFeatured)) ? 'Featured' : '';\n const selectedLanguage = this.filterService.getSelectedLanguage();\n\n // Live Webinar Start Date\n if (contentType.Id === '95d3ec8e-65be-4005-bbbf-cf94764bec84' && item.StartDate !== null) {\n let startDate = item.StartDate;\n let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };\n let webinarDate = new Date(startDate);\n formattedDate = webinarDate.toLocaleDateString(selectedLanguage, options);\n }\n\n // Video Play Icon\n if (contentType.Id === 'c5dbf402-5020-4c9f-a6e5-80fbc168e2e8') {\n resourceEmbed += ' -i-play-lite -i--overlay -fs70 -accent-white';\n }\n\n const html = `\n
\n
\n \n ${featuredLabel}\n
\n ${imageData && imageData.Url ? `\"${imageData.AlternativeText}\"` : ''}\n
\n ${!item.VideoLength ? '' : `
${item.VideoLength}${this.minLabel[selectedLanguage] || this.minLabel.en}
`}\n
\n
\n
\n
${contentType.Title}
\n
\n
${this.encodeHtml(Title)}
\n
${formattedDate != null ? formattedDate : ''}
\n ${this.encodeHtml(this.getResourceCtaLabel(contentType) || CTAText)}\n
\n
\n
\n `;\n\n return html;\n }\n}","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderChefPartners extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices); \n }\n\n getItemHtml(item, relatedMedia) {\n const { imageData, fileData } = super.setRelatedMedia(item, relatedMedia); \n const imageFallback = 'https://d1l5pp53ux74mz.cloudfront.net/images/default-source/resources/partner_illustration-.svg';\n\n const html = `\n
\n
\n
\n
\n \"Partner\n
\n

${this.encodeHtml(item.Title)}

\n

${item.Description ? this.encodeHtml(item.Description) : ''}

\n Visit Partner Site\n
\n
\n
\n `;\n\n return html;\n\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderChefCustomers extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n const { UrlName: resourcePath } = item;\n const imageFallback = 'https://d1l5pp53ux74mz.cloudfront.net/images/default-source/resources/customer_story-new.svg'; //<-- We can delete this if we dont need it.\n const { imageData } = super.setRelatedMedia(item, relatedMedia);\n const contentType = item.contenttype ? item.contenttype[0] : item.contenttypes[0]\n const pageUrl = super.getResourceUrl(contentType);\n const resourceUrl = `${pageUrl}/${resourcePath}`;\n\n const html = `\n
\n
\n
\n \"${imageData.AlternativeText}\"\n

${this.encodeHtml(item.Title)}

\n

${this.encodeHtml(item.Summary)}

\n ${this.encodeHtml(item.CTAText)}\n
\n
\n
\n `;\n\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderChefResources extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n\n },\n this.defaultResourceData = [\n {\n imagePath: \"/images/default-source/resources/data_sheet-new.svg\",\n cta: \"Download Now\",\n id: \"b2b0d12d-c6c0-44c9-83cf-f03965abf50c\"\n },\n {\n imagePath: \"/images/default-source/resources/webinar-new.svg\",\n cta: \"Watch the Webinar\",\n id: \"d743233e-7255-424b-ad23-32b674f698db\"\n },\n {\n imagePath: \"/images/default-source/resources/whitepaper-new.svg\",\n cta: \"Download Now\",\n id: \"32632d8b-f588-4c1d-ac53-e806eaa7b8f4\"\n },\n {\n imagePath: \"/images/default-source/resources/customer_story-new.svg\",\n cta: \"View the Customer Story\",\n id: \"35e120fe-546e-4900-a6c5-324a1ebce270\"\n },\n {\n imagePath: null,\n cta: \"Watch Video\",\n id: \"9d8ba3b3-b596-4e59-ac3a-a7df21d642fb\"\n },\n {\n imagePath: \"/images/default-source/resources/video-new.svg\",\n cta: \"Watch Video\",\n id: \"4d293c48-db34-4f40-b68e-df37d3d4b337\"\n },\n {\n imagePath: null,\n cta: \"Download Now\",\n id: \"04a0a1e9-8a4a-4570-a981-fdb196bcdf9b\"\n },\n {\n imagePath: \"/images/default-source/resources/generic-new.svg\",\n cta: \"Download Now\",\n id: \"5c0179a1-80e8-4ef2-8f71-8fb79172e700\"\n }\n ]\n }\n\n getItemHtml(item, relatedMedia) {\n let fileData = null;\n let isWebinar = item.resourceCategory[0].Id == \"d743233e-7255-424b-ad23-32b674f698db\";\n if (item.resourceCategory[0].Id != \"35e120fe-546e-4900-a6c5-324a1ebce270\") {\n fileData = !item.IsGated && item.File ? item.File : null\n } \n const { UrlName: resourcePath } = item;\n const CTATextFallback = this.defaultResourceData.find(ct => ct.id === item.resourceCategory[0].Id)?.cta;\n const imagePath = item.ListImage ? item.ListImage.Url : this.defaultResourceData.find(ct => ct.id === item.resourceCategory[0].Id)?.imagePath;\n const imageFallback = '/images/default-source/resources/generic-new.svg';\n const startDateISO = (new Date(item.StartDate)).toISOString();\n const label = `${item.IsUpcomming ? \"Upcoming\" : \"On-Demand\"}`;\n const featuredLabel = `${item.IsFeatured ? \"Featured\": ''}`;\n const summaryParagraph = `

${this.encodeHtml(item.Summary)}

`;\n const timeElement = item.IsUpcomming ? ``: '';\n const pageUrl = super.getResourceUrl(item.contenttype[0]);\n const resourceUrl = `${pageUrl}/${resourcePath}`;\n const target = fileData != null ? `target=\"_blank\"` : \"\";\n const html = `\n
\n
\n \"${item.resourceCategory[0].Title}\n \n ${featuredLabel} ${isWebinar ? label : ''}\n \n
\n

${item.resourceCategory[0].Title}

\n
${this.encodeHtml(item.Title)}
\n ${isWebinar ? timeElement : ''}\n ${item.Summary ? summaryParagraph : ''}\n ${this.encodeHtml(item.CTAText) || CTATextFallback}\n
\n
\n
\n `;\n\n return html;\n } \n\n getDate(utcDate){\n let date = new Date(utcDate);\n const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };\n return date.toLocaleDateString(undefined, options);\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderChefEvents extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices); \n }\n\n getItemHtml(item, relatedMedia) {\n const { imageData, fileData } = super.setRelatedMedia(item, relatedMedia); \n\n const html = `\n
\n
\n \"Event\n
\n \n
${this.encodeHtml(item.Title)}
\n More info\n
\n
\n
\n `;\n\n return html;\n\n }\n\n getEventDate(utcDate){\n let currentDate = new Date(utcDate);\n const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n return monthNames[currentDate.getMonth()] + \" \" + currentDate.getDate() + this.nth(currentDate.getDate()) ;\n }\n\n nth(d) {\n if (d > 3 && d < 21) return 'th';\n switch (d % 10) {\n case 1: return \"st\";\n case 2: return \"nd\";\n case 3: return \"rd\";\n default: return \"th\";\n }\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\r\n\r\nexport class ResourceItemHtmlProviderChefWebinars extends ResourceItemHtmlProvider {\r\n constructor(filterServices) {\r\n super(filterServices); \r\n }\r\n\r\n getItemHtml(item, relatedMedia) {\r\n const contentType = item.contenttype ? item.contenttype[0] : item.contenttypes[0]\r\n const { CTAUrl } = item;\r\n const pageUrl = super.getResourceUrl(contentType);\r\n let resourceUrl;\r\n\r\n if (CTAUrl) {\r\n resourceUrl = CTAUrl;\r\n }\r\n else {\r\n resourceUrl = `${pageUrl}/${item.UrlName}`;\r\n }\r\n\r\n const startDateISO = (new Date(item.StartDate)).toISOString();\r\n const timeElement = item.IsUpcomming ? ``: '';\r\n const html = `
\r\n
\r\n
\r\n ${item.IsUpcomming ? \"Upcoming\" : \"On-Demand\"}\r\n

${this.encodeHtml(item.Title)}

\r\n ${timeElement}\r\n

${this.encodeHtml(item.Summary)}

\r\n ${item.IsUpcomming ? \"Register\" : \"Watch Now\"}\r\n
\r\n
\r\n
`;\r\n\r\nreturn html;\r\n}\r\n\r\ngetDate(utcDate){\r\n let date = new Date(utcDate);\r\n const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };\r\n return date.toLocaleDateString(undefined, options);\r\n }\r\n}\r\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressDciOverview extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n const url = `/connectors/${item.UrlName}`;\n const html = `\n
\n \n
\n \n
\n
\n
\n ${this.encodeHtml(item.Title)}\n
\n
\n `;\n\n return html;\n\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressDciAccordion extends ResourceItemHtmlProvider {\n\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n let html = '';\n\n if (item.Interfaces && item.Interfaces.length){\n const interfaceOrderMap = this.orderInterfaces(item.Interfaces);\n\n html += `\n
\n
\n
\n \n
\n
${this.encodeHtml(item.Title)}
\n
\n
\n `;\n\n interfaceOrderMap.forEach((value, key) => {\n if(key === 'other'){\n for(let otherInterface of value){\n html += this.buildInterfaceHtml(otherInterface);\n }\n }\n else{\n if(value){\n html += this.buildInterfaceHtml(value);\n }\n }\n });\n html += '
';\n }\n html += '
';\n\n return html;\n\n }\n\n buildInterfaceHtml(interfaceData){\n let html = \"\";\n const hasResources = interfaceData.BlogPosts || interfaceData.Videos || interfaceData.SuccessStories\n || interfaceData.Tutorials || interfaceData.Webinars || interfaceData.Whitepapers;\n\n if(hasResources || interfaceData.Documentation){\n html += `
\n ${this.encodeHtml(interfaceData.InterfaceTitle)}\n
\n
`;\n if(interfaceData.Documentation){\n html += `
\n
Documentation
`;\n for(let docContent of interfaceData.Documentation.SectionContent){\n html += `
${docContent}
`;\n }\n }\n\n if(hasResources){\n html += `
`;\n if(interfaceData.BlogPosts){\n html += `
Blogs
`;\n for(let blogPostLink of interfaceData.BlogPosts.Links){\n html += ``;\n }\n }\n\n if(interfaceData.Videos){\n html += `
Videos
`\n for(let videoLink of interfaceData.Videos.Links){\n html += ``;\n }\n }\n\n if(interfaceData.SuccessStories){\n html += `
Success Stories
`;\n\n for(let successStoryLink of interfaceData.SuccessStories.Links){\n html += ``;\n\n }\n }\n html += '
';\n\n if(interfaceData.Tutorials){\n html += `
Tutorials
`;\n\n for(let tutorialLink of interfaceData.Tutorials.Links){\n html += ``;\n }\n }\n\n if(interfaceData.Webinars){\n html += `
Webinars
`;\n\n for(let webinarLink of interfaceData.Webinars.Links){\n html += ``;\n }\n }\n\n if(interfaceData.Whitepapers){\n html += `
Papers
`;\n\n for(let paperLink of interfaceData.Whitepapers.Links){\n html += ``;\n }\n }\n\n html += '
';\n }\n html += '
';\n }\n return html;\n }\n\n orderInterfaces(interfacesCollection) {\n const interfaceOrderMap = new Map();\n interfaceOrderMap.set('odbc', null);\n interfaceOrderMap.set('jdbc', null);\n interfaceOrderMap.set('net', null);\n interfaceOrderMap.set('odata', null);\n interfaceOrderMap.set('xml-converters', null);\n interfaceOrderMap.set('xquery', null);\n interfaceOrderMap.set('xml-editor', null);\n interfaceOrderMap.set('other', []);\n\n for(let currentInterface of interfacesCollection){\n if(interfaceOrderMap.has(currentInterface.InterfaceUrlName)){\n interfaceOrderMap.set(currentInterface.InterfaceUrlName, currentInterface);\n }\n else{\n interfaceOrderMap.get('other').push(currentInterface);\n }\n }\n\n return interfaceOrderMap;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressDciList extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n let html = '';\n\n if (item && item.length){\n html = '
';\n\n for(let group of item){\n html += `
\n ${this.encodeHtml(group.title)}\n
';\n }\n\n html += '
';\n }\n\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressUserAwardsList extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.industryTaxonParentId = '2a37d4d1-00a5-47d0-bc07-b90a9b8b2052';\n this.awardTaxonParentId = 'cbe81580-509b-42a7-85db-c2736ab49c54';\n this.countryTaxonParentId = '747f50af-d826-4b19-8eb9-3c8880a8ef1b';\n this.yearTaxonParentId = 'bcb8fbc4-83bf-463c-9c27-0ebe6d51c951';\n this.monthTaxonParentId = '44758699-4324-408a-8400-6190310374c1';\n this.projectOfTheMonthTaxonId = 'ae08dcbc-a2ed-4951-becb-5cb1ab9c9260';\n this.practitionerOfTheYearTaxonId = '17ec98a9-02e5-472e-b69e-6862e76493a4';\n this.websiteOfTheYearTaxonId = '0ed015d0-836d-453c-afec-ea03f5c4f8c3';\n }\n\n getItemHtml(item) {\n let html = '';\n if (item && item.taxonomyNavigationProperty){\n let industryTitles = item.taxonomyNavigationProperty\n .filter(taxon => taxon.ParentId == this.industryTaxonParentId)\n .map(taxon => taxon.Title)\n .join(', ');\n let awardTitle = item.taxonomyNavigationProperty.filter(taxon => taxon.ParentId == this.awardTaxonParentId)[0].Title;\n let awardId = item.taxonomyNavigationProperty.filter(taxon => taxon.ParentId == this.awardTaxonParentId)[0].Id;\n let countryTitle = item.taxonomyNavigationProperty.filter(taxon => taxon.ParentId == this.countryTaxonParentId)[0].Title;\n let year = item.taxonomyNavigationProperty.filter(taxon => taxon.ParentId == this.yearTaxonParentId)[0].Title;\n let labelText = '';\n let labelClass = '';\n\n html = '
';\n if(awardId == this.projectOfTheMonthTaxonId){\n labelClass = '10';\n labelText = `${awardTitle}`;\n }\n else if(awardId == this.practitionerOfTheYearTaxonId){\n labelClass = '4';\n labelText = `${year} ${awardTitle}`;\n }\n else if(awardId == this.websiteOfTheYearTaxonId){\n labelClass = '9';\n labelText = `${year} ${awardTitle}`;\n }\n html += `\n
\n
\n \"award\n

${labelText}

\n
\n
\n ${this.encodeHtml(item.Title)}\n
Industry: ${industryTitles}
\n
Country: ${countryTitle}
\n
Implemented by: ${this.encodeHtml(item.ImplementorName)}
\n
\n
\n
\n
`;\n }\n\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderKempPartners extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.partnerTypesTaxonId = '94bb48a6-d944-4834-9cf4-1196dbf61e77';\n this.partnerSpecializationsTaxonId = '0dda20a2-f2af-4434-947f-86773ead8524'\n }\n\n getItemHtml(item, relatedMedia) {\n const img = (item.Logo) ? item.Logo.Url : '';\n const partnerTypeData = item.partnerType.filter(type => type.ParentId === this.partnerTypesTaxonId);\n let partnerTypeStr = \"\";\n if(partnerTypeData.length > 0) {\n partnerTypeStr = \n `
Partner Type
\n
${partnerTypeData.map(u => u.Title).join(', ')}
`;\n }\n const countryData = item.countryData.map(country => country.Title).join(', ');\n const languageInput = (window.ResourceCenterSettings && window.ResourceCenterSettings.LanguageSelector) ? document.querySelector(`.${window.ResourceCenterSettings.LanguageSelector}`) : null;\n const itemUrl = languageInput ? `/${languageInput.id}/kemp-partner/${item.UrlName}` : `/kemp-partner/${item.UrlName}`;\n const html = `\n
\n
\n
\n
\n \n
\n
\n

\n ${this.encodeHtml(item.Title)}\n

\n
\n\n ${item.Email && `\n
Email
\n
${item.Email}
\n `}\n\n ${item.Phone && `\n
Phone
\n
${item.Phone}
\n `}\n\n ${item.PostalCode && `\n
Postal Code
\n
${item.PostalCode}
\n `}\n\n ${item.Locality && `\n
Locality
\n
${item.Locality}
\n `}\n\n ${item.Premise && `\n
Premise
\n
${item.Premise}
\n `}\n\n ${item.State && `\n
State
\n
${item.State}
\n `}\n\n ${item.Thoroughfare && `\n
Thoroughfare
\n
${item.Thoroughfare}
\n `}\n\n ${item.Website && `\n
Website
\n
${item.Website}
\n `}\n\n ${partnerTypeStr}\n\n ${countryData && `\n
Country
\n
${countryData}
\n `}\n
\n
\n
\n
\n
\n `;\n return html;\n\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderFlowmonPartners extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.patnerTypesTaxonId = '94bb48a6-d944-4834-9cf4-1196dbf61e77';\n }\n\n getItemHtml(item, relatedMedia) {\n\n const img = (item.Logo) ? item.Logo.Url : '';\n const countryData = item.countryData.map(country=> country.Title).join(', ');\n const partnerURL = `https://kemptechnologies.com/kemp-partner/${item.UrlName}`\n\n const data = {\n Email: item.Email,\n Address: `${item.Thoroughfare} ${item.Premise} ${item.State} ${item.PostalCode} ${item.Locality} ${countryData}`,\n Country: countryData,\n Phone: item.Phone,\n Website: `${item.Website}`,\n Type: item.partnerType.find(type=> type.ParentId === this.patnerTypesTaxonId) || 'No partner type'\n };\n\n let partnerTable = '';\n\n for (const [key, value] of Object.entries(data)) {\n if (value.length > 0) {\n partnerTable += `\n \n ${key}\n ${value}\n `;\n }\n }\n\n const html = `\n
\n
\n
\n
\n \n \n \n
\n
\n \n ${this.encodeHtml(item.Title)}\n \n \n `+ partnerTable +`\n
\n
\n
\n
\n
\n `;\n return html;\n\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderKempVideos extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n const img = 'https://kemptechnologies.com/images/kemptechnologieslibraries/banners/generic-video-thumb-woman.jpg';\n if(item.ListImage.length > 0) {\n img = item.ListImage[0].Url\n }\n\n const { Title, Summary, UrlName: resourcePath } = item;\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n const resourceUrl = `${pageUrl}/${resourcePath}`.replace('/details/', '/');\n\n const html = `\n
\n
\n \n
\n

\n ${this.encodeHtml(Title)}\n

\n

${Summary}…

\n
\n
\n
\n `;\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\r\n\r\nexport class ResourceItemHtmlProviderFlowmonResources extends ResourceItemHtmlProvider {\r\n constructor(filterServices) {\r\n super(filterServices);\r\n this.minLabel = { en: 'min', de: 'minuten', nl: 'minuten', es: 'minutos', pt: 'minutos', fr: 'minutes', sv: 'minuter', jp: '分', 'zh-TW': '分', cs: 'min' };\r\n }\r\n\r\n getResourceCtaLabel(contentType) {\r\n const lang = this.filterService.getSelectedLanguage();\r\n\r\n const learnMoreLabel = { en: 'Learn more',cs: 'Learn more'};\r\n const downloadTheReportLabel = { en: 'Download the report',cs: 'Download the repor' };\r\n const downloadThePdfLabel = { en: 'Download the PDF', cs:'Download the PDF' };\r\n const viewTheInfographicLabel = { en: 'View the infographic', cs: 'View the infographic' };\r\n const watchTheVideoLabel = { en: 'Watch the video', cs: 'Watch the video' };\r\n const registerLabel = { en: 'Register', cs: 'Register' };\r\n const watchTheWebinarLabel = { en: 'Watch the webinar', cs: 'Watch the webinar' };\r\n const downloadLabel = { en: 'Download', cs: 'Download' };\r\n\r\n switch (contentType.Id) {\r\n case '95d3ec8e-65be-4005-bbbf-cf94764bec84': // Live webinar\r\n return registerLabel[lang];\r\n case 'ba3505a5-edf2-4b48-8196-3cd4ec03e8b3': // On-demand webinar\r\n return watchTheWebinarLabel[lang];\r\n case 'c5dbf402-5020-4c9f-a6e5-80fbc168e2e8': // Video\r\n return watchTheVideoLabel[lang];\r\n case 'fba60918-8c88-4d01-afc9-63a9c113f644': // Analyst report\r\n return downloadTheReportLabel[lang];\r\n case 'eeb3c6b5-1f50-4737-a2f3-717e59683ec2': // Data sheet\r\n case '42bf0060-28dd-4c4c-a1a5-c6b74232ec40': // solution brief\r\n case '373353ab-677c-400d-807c-5c8699b8217b': // products brief\r\n case 'cf2fbb3b-dfe7-4f77-98c0-996293ee9d9e': // integrations\r\n case '8640bcb2-4c3d-4776-8140-eaba70d3bbbe': // specification\r\n return downloadThePdfLabel[lang];\r\n case '3db61f70-a14e-4431-8aef-2d9fd62ba222': // Infographic\r\n return viewTheInfographicLabel[lang];\r\n case '70ae4793-8040-4c66-8bdf-0a7f4e81ede7': // Best practice\r\n case '6e38772a-82c5-454a-b6e6-740504dce161': // Case study\r\n case '558909ec-3dd7-428e-95fe-679f8ca002e3': // Other\r\n return learnMoreLabel[lang];\r\n case 'fd8805fa-9232-4470-892e-e2e2bb263842': // Whitepaper\r\n case '63a9b7cc-0814-4876-8a8f-d77bd1451ddd': // Ebook\r\n return downloadLabel[lang];\r\n case '392a9cff-6d1f-48d2-a7b4-d5d158df3595': // Guides\r\n return learnMoreLabel[lang];\r\n default:\r\n return this.CTAText;\r\n }\r\n }\r\n\r\n getItemHtml(item, relatedMedia) {\r\n let formattedDate = null;\r\n\r\n const { imageData, fileData } = super.setRelatedMedia(item, relatedMedia);\r\n const { Title, CTAText, UrlName: resourcePath, Summary, ExternalUrl, CTAUrl } = item;\r\n const contentType = item.resourceCategory[0];\r\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\r\n const featuredLabel = Boolean(Number(item.IsFeatured)) ? 'Featured' : '';\r\n const selectedLanguage = this.filterService.getSelectedLanguage();\r\n const imageFallback = 'https://d34smkdb128qfi.cloudfront.net/images/librariesprovider2/default-album/resources/resource-default-thumbnail.jpg';\r\n const summary = Summary ? `
${this.encodeHtml(Summary)}
` : '';\r\n let resourceUrl = `${pageUrl}/${resourcePath}`;\r\n\r\n // Live Webinar Start Date\r\n if (contentType.Id === '95d3ec8e-65be-4005-bbbf-cf94764bec84' && item.StartDate !== null) {\r\n let startDate = item.StartDate;\r\n let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };\r\n let webinarDate = new Date(startDate);\r\n formattedDate = webinarDate.toLocaleDateString(selectedLanguage, options);\r\n }\r\n\r\n // Video Play Icon\r\n if (contentType.Id === 'C5DBF402-5020-4C9F-A6E5-80FBC168E2E8') {\r\n resourceEmbed += ' -i-play-lite -i--overlay -fs70 -accent-white';\r\n }\r\n\r\n if (CTAUrl) {\r\n resourceUrl = CTAUrl;\r\n } else if (ExternalUrl) {\r\n resourceUrl = ExternalUrl;\r\n }\r\n\r\n const html = `\r\n
\r\n
\r\n \r\n
${featuredLabel}
\r\n
\r\n ${imageData && imageData.Url ? `\"${imageData.AlternativeText}\"` : `\"${imageData.AlternativeText}\"`}\r\n
\r\n ${!item.VideoLength ? '' : `
${item.VideoLength}${this.minLabel[selectedLanguage] || this.minLabel.en}
`}\r\n
\r\n
\r\n
${contentType.Title}
\r\n
${this.encodeHtml(Title)}
\r\n ${summary}\r\n
${formattedDate != null ? formattedDate : ''}
\r\n \r\n \r\n ${this.encodeHtml(this.getResourceCtaLabel(contentType) || CTAText)}\r\n \r\n
\r\n
\r\n
\r\n `;\r\n\r\n return html;\r\n }\r\n}\r\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\r\n\r\nexport class ResourceItemHtmlProviderKempResources extends ResourceItemHtmlProvider {\r\n constructor(filterServices) {\r\n super(filterServices);\r\n this.minLabel = { en: 'min', de: 'minuten', nl: 'minuten', es: 'minutos', pt: 'minutos', fr: 'minutes', sv: 'minuter', jp: '分', 'zh-TW': '分', cs: 'min' };\r\n this.defaultResourceData = [\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/data-sheet-thumnail.svg\",\r\n id: \"eeb3c6b5-1f50-4737-a2f3-717e59683ec2\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/webinar-thumnail.svg\",\r\n id: \"d743233e-7255-424b-ad23-32b674f698db\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/research-papers-thumnail.svg\",\r\n id: \"331bb5f5-7884-4806-8a32-946ebe52bedb\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/case-studies-thumnail.svg\",\r\n id: \"6e38772a-82c5-454a-b6e6-740504dce161\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/video-thumnail.svg\",\r\n id: \"c5dbf402-5020-4c9f-a6e5-80fbc168e2e8\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/solution-brief-thumnail.svg\",\r\n id: \"42bf0060-28dd-4c4c-a1a5-c6b74232ec40\"\r\n },\r\n {\r\n imagePath: \"/images/kemptechnologieslibraries/resources/default-thumbnails/glossary-thumbnail.svg\",\r\n id: \"4e164743-8057-47fc-aedf-70893c4361e2\"\r\n }\r\n ]\r\n }\r\n\r\n getResourceCtaLabel(contentType) {\r\n const lang = this.filterService.getSelectedLanguage();\r\n\r\n const learnMoreLabel = { en: 'Learn more', de: 'Erfahren Sie mehr', fr: 'Learn more', es: 'Learn more', ja: 'Learn more'};\r\n const watchTheVideoLabel = { en: 'Watch the video', de: 'Watch the video', fr: 'Watch the video', es: 'Watch the video', ja: 'Watch the video' };\r\n const registerLabel = { en: 'Register', de: 'Register', fr: 'Register', es: 'Register', ja: 'Register' };\r\n const watchTheWebinarLabel = { en: 'Watch the webinar', de: 'Watch the webinar', fr: 'Watch the webinar', es: 'Watch the webinar', ja: 'Watch the webinar' };\r\n const downloadLabel = { en: 'Download', de: 'Download', fr: 'Download', es: 'Download', ja: 'Download' };\r\n const viewPdfLAbel = { en: 'View PDF', de: 'View PDF', fr: 'View PDF', es: 'View PDF', ja: 'View PDF' };\r\n const seeMoreLAbel = { en: 'See More', de: 'Erfahren Sie mehr', fr: 'See More', es: 'See More', ja: 'See More' };\r\n\r\n switch (contentType.Id) {\r\n case '95d3ec8e-65be-4005-bbbf-cf94764bec84': // Live webinar\r\n return registerLabel[lang];\r\n case 'ba3505a5-edf2-4b48-8196-3cd4ec03e8b3': // On-demand webinar\r\n return watchTheWebinarLabel[lang];\r\n case 'c5dbf402-5020-4c9f-a6e5-80fbc168e2e8': // Video\r\n return watchTheVideoLabel[lang];\r\n case 'fd8805fa-9232-4470-892e-e2e2bb263842': // Whitepaper\r\n case '63a9b7cc-0814-4876-8a8f-d77bd1451ddd': // Ebook\r\n return downloadLabel[lang];\r\n case 'd743233e-7255-424b-ad23-32b674f698db': // Webinar\r\n case '4e164743-8057-47fc-aedf-70893c4361e2': // Glossary\r\n return learnMoreLabel[lang];\r\n case '42bf0060-28dd-4c4c-a1a5-c6b74232ec40': // Solution brief\r\n case 'eeb3c6b5-1f50-4737-a2f3-717e59683ec2': // Data sheet\r\n return viewPdfLAbel[lang];\r\n case '331bb5f5-7884-4806-8a32-946ebe52bedb': // Research papers\r\n case '6e38772a-82c5-454a-b6e6-740504dce161': // Case study\r\n return seeMoreLAbel[lang];\r\n default:\r\n return this.CTAText;\r\n }\r\n }\r\n\r\n getItemHtml(item, relatedMedia) {\r\n const { imageData, fileData } = super.setRelatedMedia(item, relatedMedia);\r\n const { Title, CTAText, UrlName: resourcePath, Summary, ExternalUrl, CTAUrl } = item;\r\n const contentType = item.resourceCategory[0];\r\n let isWebinar = contentType.Id == \"d743233e-7255-424b-ad23-32b674f698db\" || contentType.Id == \"95d3ec8e-65be-4005-bbbf-cf94764bec84\"|| contentType.Id == \"ba3505a5-edf2-4b48-8196-3cd4ec03e8b3\";\r\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\r\n const featuredLabel = Boolean(Number(item.IsFeatured)) ? 'Featured' : '';\r\n const selectedLanguage = this.filterService.getSelectedLanguage();\r\n const imagePath = item.ListImage.length > 0 ? imageData.Url : this.defaultResourceData.find(ct => ct.id === item.resourceCategory[0].Id)?.imagePath;\r\n const imageFallback = 'https://d34smkdb128qfi.cloudfront.net/images/librariesprovider2/default-album/resources/resource-default-thumbnail.jpg';\r\n const imageAlt = imageData.AlternativeText || 'default thumbnail';\r\n const summary = Summary ? `
${this.encodeHtml(Summary)}
` : '';\r\n let resourceUrl = `${pageUrl}/${resourcePath}`;\r\n let upcomingOrOnDemandLabel = `${item.IsUpcomming ? \"UPCOMING\" : \"On Demand\"}`;\r\n\r\n let formattedDate = null;\r\n // Live Webinar Start Date\r\n if (isWebinar && item.StartDate !== null) {\r\n let startDate = item.StartDate;\r\n let options = { year: '2-digit', month: 'numeric', day: 'numeric' };\r\n let webinarDate = new Date(startDate);\r\n formattedDate = webinarDate.toLocaleDateString(selectedLanguage, options);\r\n upcomingOrOnDemandLabel = `${item.IsUpcomming ? \"UPCOMING ON \"+ formattedDate : \"On Demand\"}`;\r\n }\r\n\r\n // Video Play Icon\r\n if (contentType.Id === 'C5DBF402-5020-4C9F-A6E5-80FBC168E2E8') {\r\n resourceEmbed += ' -i-play-lite -i--overlay -fs70 -accent-white';\r\n }\r\n\r\n if (CTAUrl) {\r\n resourceUrl = CTAUrl;\r\n } else if (ExternalUrl) {\r\n resourceUrl = ExternalUrl;\r\n }\r\n\r\n const html = `\r\n
\r\n
\r\n \r\n
${featuredLabel} ${isWebinar ? upcomingOrOnDemandLabel : ''}
\r\n
\r\n \"${imageAlt}\"\r\n
\r\n ${!item.VideoLength ? '' : `
${item.VideoLength}${this.minLabel[selectedLanguage] || this.minLabel.en}
`}\r\n
\r\n
\r\n
${contentType.Title}
\r\n
${this.encodeHtml(Title)}
\r\n ${summary}\r\n \r\n ${this.encodeHtml(CTAText || this.getResourceCtaLabel(contentType))}\r\n \r\n
\r\n
\r\n
\r\n `;\r\n\r\n return html;\r\n }\r\n}\r\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderFlowmonResearchAndProjects extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n const html = `\n
\n
\n
\n

\n \n ${this.encodeHtml(item.Title)}\n \n

\n
${item.Summary}
\n
\n
\n
\n `;\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderChefInIpswitchResources extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n\n },\n this.defaultResourceData = [\n {\n imagePath: \"/images/cheflibraries/resources/data_sheet-new.svg\",\n cta: \"Download Now\",\n id: \"eeb3c6b5-1f50-4737-a2f3-717e59683ec2\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/webinar-new.svg\",\n cta: \"Watch the Webinar\",\n id: \"d743233e-7255-424b-ad23-32b674f698db\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/whitepaper-new.svg\",\n cta: \"Download Now\",\n id: \"fd8805fa-9232-4470-892e-e2e2bb263842\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/customer_story-new.svg\",\n cta: \"View the Customer Story\",\n id: \"35e120fe-546e-4900-a6c5-324a1ebce270\"\n },\n {\n imagePath: null,\n cta: \"Watch Video\",\n id: \"9d8ba3b3-b596-4e59-ac3a-a7df21d642fb\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/video-new.svg\",\n cta: \"Watch Video\",\n id: \"c5dbf402-5020-4c9f-a6e5-80fbc168e2e8\"\n },\n {\n imagePath: null,\n cta: \"Download Now\",\n id: \"63a9b7cc-0814-4876-8a8f-d77bd1451ddd\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/generic-new.svg\",\n cta: \"Download Now\",\n id: \"5c0179a1-80e8-4ef2-8f71-8fb79172e700\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/analyst-report.svg\",\n cta: \"Download the Report\",\n id: \"fba60918-8c88-4d01-afc9-63a9c113f644\"\n },\n {\n imagePath: \"/images/cheflibraries/resources/glossary.svg\",\n cta: \"Learn more\",\n id: \"4e164743-8057-47fc-aedf-70893c4361e2\"\n },\n {\n // Reference architecture content type\n imagePath: \"/images/chefcommunitylibraries/resources/reference-architecture.svg\",\n cta: \"Learn more\",\n id: \"0206c1cc-b28a-47bb-8f15-e85fc7e10872\"\n },\n {\n // Patterns\n imagePath: \"/images/chefcommunitylibraries/resources/patterns.svg\",\n cta: \"Learn more\",\n id: \"b3ef6d9d-3592-4a0d-8a29-53d8966ab9cc\"\n },\n {\n // Best Practice\n imagePath: \"/images/chefcommunitylibraries/resources/best-practices.svg\",\n cta: \"Learn more\",\n id: \"70ae4793-8040-4c66-8bdf-0a7f4e81ede7\"\n },\n {\n // Solutions\n imagePath: \"/images/chefcommunitylibraries/resources/solutions.svg\",\n cta: \"Learn more\",\n id: \"fc755d25-6e7b-48fc-8fa9-3fc439cc4994\"\n },\n {\n // Guidance\n imagePath: \"/images/chefcommunitylibraries/resources/guidance.svg\",\n cta: \"Learn more\",\n id: \"1dcb323e-a053-4c73-88a9-d2e55387f435\"\n }\n ]\n }\n\n getItemHtml(item, relatedMedia) { \n let fileData = null;\n let isWebinar = item.resourceCategory[0].Id == \"d743233e-7255-424b-ad23-32b674f698db\";\n if (item.resourceCategory[0].Id != \"35e120fe-546e-4900-a6c5-324a1ebce270\") {\n fileData = item.NotGated && item.File && item.File.length > 0 ? item.File[0] : null\n } \n const { UrlName: resourcePath, CTAUrl } = item;\n const CTATextFallback = this.defaultResourceData.find(ct => ct.id === item.resourceCategory[0].Id)?.cta; \n const imagePath = item.ListImage && item.ListImage.length > 0 ? item.ListImage[0].Url : this.defaultResourceData.find(ct => ct.id === item.resourceCategory[0].Id)?.imagePath;\n const imageFallback = '/images/cheflibraries/resources/generic-new.svg';\n const startDateISO = (new Date(item.StartDate)).toISOString();\n const label = `${item.IsUpcomming ? \"Upcoming\" : \"OnDemand\"}`;\n const featuredLabel = `${item.IsFeatured ? \"Featured\": ''}`;\n const summaryParagraph = `

${this.encodeHtml(item.Summary)}

`;\n const timeElement = item.IsUpcomming ? ``: '';\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n let resourceUrl;\n\n if (CTAUrl) {\n resourceUrl = CTAUrl;\n }\n else {\n resourceUrl = `${pageUrl}/${resourcePath}`;\n }\n \n const target = fileData != null ? `target=\"_blank\"` : \"\";\n const html = `\n
\n
\n \"${item.resourceCategory[0].Title}\n \n ${featuredLabel} ${isWebinar ? label : ''}\n \n
\n

${item.resourceCategory[0].Title}

\n
${this.encodeHtml(item.Title)}
\n ${isWebinar ? timeElement : ''}\n ${item.Summary ? summaryParagraph : ''}\n ${this.encodeHtml(item.CTAText) || CTATextFallback}\n
\n
\n
\n `;\n\n return html;\n } \n\n getDate(utcDate){\n let date = new Date(utcDate);\n const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };\n return date.toLocaleDateString(undefined, options);\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgress extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n col: 'col-8 -xl-half -s-full -mb4',\n resourceBox: 'Elevated -full -pr -bg-white -br2',\n resourceWrapper: 'ResourceItem',\n resourceImage: 'ResourceItem-image Section-bg',\n resourceLabel: 'ResourceLabel -mb0 -pa -l0 -b0 -z1',\n resourceContent: 'ResourceItem-info',\n resourceData: 'ResourceItem-hint -cf',\n resourceTitle: 'ResourceItem-title -mb0',\n }\n }\n\n getItemHtml(item, relatedMedia) {\n let { col, resourceBox, resourceWrapper, resourceImage, resourceLabel, resourceContent, resourceData, resourceTitle} = this.cssClasses;\n let { imageData } = super.setRelatedMedia(item, relatedMedia);\n let webinarLabel = '';\n let startDate = '';\n let startTime = '';\n let resourceUrl = '';\n const { Title, UrlName: resourcePath } = item;\n const contentType = item.resourceCategory[0];\n if(item.CTAUrl){\n resourceUrl = item.CTAUrl;\n }\n else {\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n resourceUrl = `${pageUrl}/${resourcePath}`;\n }\n\n switch(contentType.Id)\n {\n case '7504a528-711e-45b6-b299-1ec0be7d1852': // webinars\n if (item.IsUpcomming) {\n var date = new Date(item.StartDate);\n var localDate = new Date(date.getTime() - date.getTimezoneOffset() * 60000);\n startDate = localDate.toLocaleDateString('en-us', { year: 'numeric', month: 'long', day: 'numeric' });\n startTime = localDate.toLocaleTimeString('en-us', { hour: '2-digit', minute: '2-digit', hour12: true });\n startTime += ' ';\n var timeZone = /\\((.*)\\)/.exec(new Date().toString())[1];\n var timeZoneParts = timeZone.split(' ');\n for (var part of timeZoneParts) {\n startTime += part[0]\n }\n } \n else {\n webinarLabel = 'On-Demand';\n }\n resourceLabel += ' ResourceLabel--webinar';\n break;\n case 'e9a8019e-107a-45f5-bdcf-bfaab9ba7ddb': // videos\n if (!imageData || !imageData.Url) {\n imageData = { Url: \"https://img.youtube.com/vi/\" + item.YouTubeId + \"/mqdefault.jpg\", AlternativeText: \"default video thumbnail\" };\n }\n\n resourceLabel += ' ResourceLabel--video';\n break;\n case 'e1399bf0-90d5-4cee-94ff-88910fb5d017': // best practices\n resourceLabel += ' ResourceLabel--bestPractices';\n break;\n default:\n resourceLabel += ' ResourceLabel--paper';\n }\n\n if (!imageData || !imageData.Url) {\n imageData = this.getDefaultThumbnail(contentType.Id);\n }\n\n const html = `\n
\n
\n \n
\n\n
\n \"${imageData.AlternativeText}\"\n

${contentType.Title}

\n
\n
\n
\n ${webinarLabel ? webinarLabel : ''}\n ${!item.Duration ? ' ' : `${item.Duration}`}\n ${startDate || startTime ? `${startDate}${startTime}` : ' '}\n
\n

${this.encodeHtml(Title)}

\n
\n
\n
\n
\n
\n `;\n\n return html;\n }\n\n getDefaultThumbnail(contentTypeId) {\n switch(contentTypeId) {\n case '7504a528-711e-45b6-b299-1ec0be7d1852': // webinars\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/webinar/webinar-3-thumbnail.svg?v=2',\n AlternativeText: 'default webinar thumbnail'\n };\n case 'aed1dd6e-7af4-4570-8852-3547d70331e9': // whitepapers\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/paper/whitepaper-3-thumbnail.svg?v=2',\n AlternativeText: 'default whitepaper thumbnail'\n };\n case '8f53db76-b462-4053-8318-cda7745a693f': // ebooks\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/ebook/ebook-2-thumbnail.svg?v=2',\n AlternativeText: 'default ebook thumbnail'\n };\n case 'b1923938-abe4-4fca-9453-bf0ce38e5cd6': // infographics\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/infographic/infographic-1-thumbnail.svg?v=2',\n AlternativeText: 'default infographic thumbnail'\n };\n case '8d749b3c-ac2b-4f6d-b89c-beafdaff5ac0': // datasheets\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/datasheet/datasheet-3-thumbnail.svg?v=2',\n AlternativeText: 'default datasheet thumbnail'\n };\n case 'ab7b1452-1e5e-4f01-9bdf-ed2e84809561': // reports\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/report/report-2-thumbnail.svg?v=2',\n AlternativeText: 'default report thumbnail'\n };\n case 'e1399bf0-90d5-4cee-94ff-88910fb5d017': // best practices\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/best-practice/best-practices-1-thumbnail.svg?v=2',\n AlternativeText: 'default best practice thumbnail'\n };\n default:\n return {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/paper/whitepaper-3-thumbnail.svg?v=2',\n AlternativeText: 'default resource thumbnail'\n };\n }\n }\n\n getDate(utcDate){\n let date = new Date(utcDate);\n const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };\n return date.toLocaleDateString(undefined, options);\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressWebinars extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n col: 'col-8 -xl-half -s-full -mb4',\n resourceBox: 'Elevated -full -pr -bg-white -br2',\n resourceWrapper: 'ResourceItem',\n resourceImage: 'ResourceItem-image Section-bg',\n resourceLabel: 'ResourceLabel -mb0 -pa -l0 -b0 -z1',\n resourceContent: 'ResourceItem-info -ps',\n resourceData: 'ResourceItem-hint -cf',\n resourceTitle: 'ResourceItem-title h4 -mb0 -ps HoverBox HoverBox--over -accento-0',\n resourceDescription: 'ResourceItem-summary'\n }\n\n this.minLabel = { en: 'min', de: 'minuten', nl: 'minuten', es: 'minutos', pt: 'minutos', fr: 'minutes', sv: 'minuter', ja: '分', 'zh-TW': '分' };\n this.onDemandLabel = { en: 'On-Demand', de: 'On-Demand', nl: 'On-Demand', es: 'A la carta', pt: 'Sob demanda', fr: 'À la demande', ja: 'オンデマンド', 'zh-TW': '隨選' };\n this.upcomingLabel = { en: 'Upcoming', de: 'Kommende', nl: 'Upcoming', es: 'Próximos', pt: 'Próximos', fr: 'À venir', ja: 'ライブ予定', 'zh-TW': '即將到來' };\n }\n\n getItemHtml(item, relatedMedia) {\n let { col, resourceBox, resourceWrapper, resourceImage, resourceLabel, resourceContent, resourceData, resourceTitle, resourceDescription} = this.cssClasses;\n let { imageData } = super.setRelatedMedia(item, relatedMedia);\n let webinarLabel = '';\n let summary = '';\n let startDate = '';\n let startTime = '';\n let resourceUrl = '';\n const { Title, UrlName: resourcePath } = item;\n\n if (item.CTAUrl) {\n resourceUrl = item.CTAUrl;\n }\n else {\n const pageUrl = super.getResourceUrl(item.contenttypes[0]);\n resourceUrl = `${pageUrl}/${resourcePath}`;\n }\n\n const selectedLanguage = this.filterService.getSelectedLanguage();\n\n if(item.IsUpcomming) {\n webinarLabel = this.upcomingLabel[selectedLanguage];\n resourceLabel += ' ResourceLabel--upcoming';\n\n var localDate = new Date(item.StartDate);\n startDate = localDate.toLocaleDateString('en-us', { year: 'numeric', month: 'long', day: 'numeric' });\n if(localDate.getMinutes() > 0){\n startTime = localDate.toLocaleTimeString('en-us', { timeStyle: 'short', hour12: true });\n }\n else{\n startTime = localDate.toLocaleTimeString('en-us', { hour: 'numeric', hour12: true });\n }\n \n startTime = startTime.replace('AM', 'a.m.').replace('PM', 'p.m.') + ' ';\n \n var enTimezoneString = new Date().toLocaleString(\"en-US\", { hour: \"numeric\", minute: \"numeric\", second: \"numeric\", timeZoneName: \"long\" });\n const timeZone = enTimezoneString?.split(/(AM|PM)/)[2]?.trim();\n const timeZoneParts = timeZone?.split(' ');\n if (timeZoneParts && timeZoneParts.length > 0) {\n for (const part of timeZoneParts) {\n startTime += part[0]\n }\n } else {\n const timeZoneTranslatedName = /\\((.*)\\)/.exec(new Date().toString())[1];\n timeZoneParts = timeZoneTranslatedName?.split(' ');\n for (const part of timeZoneParts) {\n startTime += part[0]\n }\n }\n }\n else {\n webinarLabel = this.onDemandLabel[selectedLanguage];\n resourceLabel += ' ResourceLabel--onDemand';\n }\n\n summary = item.Summary;\n if (summary) {\n resourceWrapper += ' ResourceItem--overlay';\n resourceContent += ' ResourceItem-info--cut';\n }\n\n if (!imageData || !imageData.Url) {\n imageData = {\n Url: 'https://d117h1jjiq768j.cloudfront.net/images/default-source/resource-center/webinar/webinar-3-thumbnail.svg?v=2',\n AlternativeText: 'default webinar thumbnail'\n };\n }\n\n const html = `\n
\n
\n
\n
\n \"${imageData.AlternativeText}\"\n

${webinarLabel}

\n
\n
\n
\n ${startDate || startTime ? `${startDate}${startTime}` : ' '}\n
\n ${this.encodeHtml(Title)}\n ${summary ? `
${summary}
` : ''}\n
\n
\n
\n
\n `;\n\n return html;\n }\n\n getDate(utcDate){\n let date = new Date(utcDate);\n const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };\n return date.toLocaleDateString(undefined, options);\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderTelerikReleaseNotes extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n }\n\n getItemHtml(item, relatedMedia) {\n const { UrlName: resourcePath } = item;\n const options = { month: 'long', day: 'numeric', year: 'numeric' };\n const date = new Date(item.ReleaseDate).toLocaleString('default', options); \n const html = `\n
  • \n

    \n ${item.Title}

    \n \n \n
  • \n `;\n\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressTutorials extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.cssClasses = {\n resourceTaxa: '-fs16',\n resourceWrapper: '-mb3',\n titleWrapper: '-fs18 -mb0'\n }\n }\n\n getItemHtml(item, relatedMedia) {\n let { resourceTaxa, resourceWrapper, titleWrapper} = this.cssClasses;\n let resourceUrl = '';\n let dciInterfaces = item.prgsUniversalTaxonomy.filter(p => p.ParentId == 'b1f75384-863f-4a10-b545-3072b619ba1a');\n const { Title, UrlName: resourcePath } = item;\n let pageUrl = \"/tutorials/\";\n if(dciInterfaces.length > 0) {\n pageUrl += dciInterfaces[0].UrlName;\n }\n resourceUrl = `${pageUrl}/${resourcePath}`;\n\n let html = `\n
  • \n
    \n ${this.encodeHtml(Title)}\n
    \n `\n ;\n\n for (let i = 0; i < dciInterfaces.length; i++) {\n html += dciInterfaces[i].Title;\n if (i < dciInterfaces.length - 1) {\n html += ', ';\n }\n }\n \n html += '
  • ';\n\n return html;\n }\n}\n","import { ResourceItemHtmlProvider } from \"./resource-item-html-provider.js\";\n\nexport class ResourceItemHtmlProviderProgressSitefinityIntegrations extends ResourceItemHtmlProvider {\n constructor(filterServices) {\n super(filterServices);\n this.typeTaxonParentId = 'ec96d930-b8d3-42ad-a9a6-4d0eb3197bfa';\n this.integrationTypeTaxonId = '56de7340-9890-41da-ac65-340f47084e0f';\n }\n\n getItemHtml(item) {\n let html = '';\n if (item && item.taxonomyNavigationProperty){\n let typeTaxon = item.taxonomyNavigationProperty\n .filter(taxon => taxon.ParentId == this.typeTaxonParentId)[0];\n let typeText = typeTaxon?.Title ?? \"\";\n\n html += `\n
    \n
    \n
    \n
    \n \"integration \n
    \n
    \n
    \n ${this.encodeHtml(typeText)}\n ${this.encodeHtml(item.Title)}\n
    ${this.encodeHtml(item.Summary)}
    \n \n
    \n
    \n
    \n
    `;\n }\n\n return html;\n }\n}\n","\n\nimport { ResourceItemHtmlProviderWug } from \"./site-spicific-data/resource-item-html-provider-wug.js\";\nimport { ResourceItemHtmlProviderIpswitch } from \"./site-spicific-data/resource-item-html-provider-ipswitch.js\";\nimport { ResourceItemHtmlProviderChefPartners } from \"./site-spicific-data/resource-item-html-provider-chef-partners.js\";\nimport { ResourceItemHtmlProviderChefCustomers } from \"./site-spicific-data/resource-item-html-provider-chef-customers.js\";\nimport { ResourceItemHtmlProviderChefResources } from \"./site-spicific-data/resource-item-html-provider-chef-resources.js\";\nimport { ResourceItemHtmlProviderChefEvents } from \"./site-spicific-data/resource-item-html-provider-chef-events.js\";\nimport { ResourceItemHtmlProviderChefWebinars } from \"./site-spicific-data/resource-item-html-provider-chef-webinars.js\";\nimport { ResourceItemHtmlProviderProgressDciOverview } from \"./site-spicific-data/resource-item-html-provider-progress-dci-overview.js\";\nimport { ResourceItemHtmlProviderProgressDciAccordion } from \"./site-spicific-data/resource-item-html-provider-progress-dci-accordion.js\";\nimport { ResourceItemHtmlProviderProgressDciList } from \"./site-spicific-data/resource-center-html-provider-progress-dci-connectors-list.js\";\nimport { ResourceItemHtmlProviderProgressUserAwardsList } from \"./site-spicific-data/resource-center-html-provider-progress-user-awards-list.js\";\nimport { ResourceItemHtmlProviderKempPartners} from \"./site-spicific-data/resource-item-html-provider-kemp-partners.js\";\nimport { ResourceItemHtmlProviderFlowmonPartners} from \"./site-spicific-data/resource-item-html-provider-flowmon-partners.js\";\nimport { ResourceItemHtmlProviderKempVideos} from \"./site-spicific-data/resource-item-html-provider-kemp-videos.js\";\nimport { ResourceItemHtmlProviderFlowmonResources } from \"./site-spicific-data/resource-item-html-provider-flowmon-resources.js\";\nimport { ResourceItemHtmlProviderKempResources } from \"./site-spicific-data/resource-item-html-provider-kemp-resources.js\";\nimport{ ResourceItemHtmlProviderFlowmonResearchAndProjects } from \"./site-spicific-data/resource-item-html-provider-flowmon-research-projects.js\";\nimport{ ResourceItemHtmlProviderChefInIpswitchResources } from \"./site-spicific-data/resource-item-html-provider-chef-in-ipswitch-resources.js\";\nimport{ ResourceItemHtmlProviderProgress } from \"./site-spicific-data/resource-item-html-provider-progress.js\";\nimport{ ResourceItemHtmlProviderProgressWebinars } from \"./site-spicific-data/resource-item-html-provider-progress-webinars.js\";\nimport{ ResourceItemHtmlProviderTelerikReleaseNotes } from \"./site-spicific-data/resource-item-html-provider-progress-telerik-release-notes.js\";\nimport{ ResourceItemHtmlProviderProgressTutorials } from \"./site-spicific-data/resource-item-html-provider-progress-tutorials.js\";\nimport { ResourceItemHtmlProviderProgressSitefinityIntegrations } from \"./site-spicific-data/resource-item-html-provider-progress-sitefinity-integrations.js\";\n\n\n\nexport class ResourceCenterObjectFactory {\n constructor(settings) {\n this.factorySettings = settings;\n this.providers = {\n Ipswitch: ResourceItemHtmlProviderIpswitch,\n ChefPartners: ResourceItemHtmlProviderChefPartners,\n ChefCustomers: ResourceItemHtmlProviderChefCustomers,\n ChefEvents: ResourceItemHtmlProviderChefEvents,\n ChefWebinars: ResourceItemHtmlProviderChefWebinars,\n ChefResources: ResourceItemHtmlProviderChefResources,\n ChefInIpswitchResources: ResourceItemHtmlProviderChefInIpswitchResources,\n WUG: ResourceItemHtmlProviderWug,\n ProgressDciOverview: ResourceItemHtmlProviderProgressDciOverview,\n ProgressDciAccordion: ResourceItemHtmlProviderProgressDciAccordion,\n ProgressDciConnectorsList: ResourceItemHtmlProviderProgressDciList,\n ProgressUserAwardsList: ResourceItemHtmlProviderProgressUserAwardsList,\n ProgressSitefinityIntegrations: ResourceItemHtmlProviderProgressSitefinityIntegrations,\n KempPartners: ResourceItemHtmlProviderKempPartners,\n Kemp: ResourceItemHtmlProviderKempResources,\n FlowmonPartners: ResourceItemHtmlProviderFlowmonPartners,\n KempVideos: ResourceItemHtmlProviderKempVideos,\n FlowmonResearchAndProjects: ResourceItemHtmlProviderFlowmonResearchAndProjects,\n Flowmon: ResourceItemHtmlProviderFlowmonResources,\n Progress: ResourceItemHtmlProviderProgress,\n ProgressTutorials: ResourceItemHtmlProviderProgressTutorials,\n ProgressWebinars: ResourceItemHtmlProviderProgressWebinars,\n TelerikReleaseNotes: ResourceItemHtmlProviderTelerikReleaseNotes,\n default: ResourceItemHtmlProviderIpswitch\n }\n }\n\n getResourceItemHtmlProvider(filterService) {\n debugger; \n if (this.factorySettings.ResourceItemHtmlProviderName) {\n let prov = this.providers[this.factorySettings.ResourceItemHtmlProviderName];\n return new prov(filterService);\n }\n else {\n let prov = this.providers.default;\n return new prov(filterService);\n }\n }\n}\n","import { ResourceCenterPageUrlService } from \"./resource-center-page-url-service.js\";\nimport { ResourceCenterApiService } from \"./resource-center-api-service.js\";\nimport { ResourceCenterFilterService } from \"./resource-center-filter-service.js\"\nimport { ResourceCenterApiUrlService } from \"./resource-center-api-url-service.js\";\nimport { ResourceCenterStrings } from \"./resource-center-strings.js\";\nimport { ResourceCenterObjectFactory } from \"./object-factory.js\";\n\nexport function init() {\n\n if(!window.ResourceCenterSettings) {\n return;\n }\n\n const settings = mergeSettings();\n const pageUrlService = new ResourceCenterPageUrlService();\n\n const filterService = new ResourceCenterFilterService(settings || {});\n const apiUrlService = new ResourceCenterApiUrlService(settings || {});\n const resourceCenterFactory = new ResourceCenterObjectFactory(settings.ResourceFactorySettings || {});\n const apiService = new ResourceCenterApiService(apiUrlService, filterService, resourceCenterFactory, settings);\n let pager = null;\n const itemsContainer = document.getElementById(settings.ItemsContainer);\n\n document.addEventListener('DOMContentLoaded', () => {\n const pagerWrapper = document.querySelector(`#${settings.PagerSelector}`);\n if (pagerWrapper && !settings.DisablePaging) {\n pager = new window.biz.Pager(pagerWrapper, {\n callback: (instance, page) => {\n instance.setPage(page);\n pageUrlService.transformSelectionsToQueryParams(page, true, filterService.getSelection());\n apiService.updateGrid(page).then(updatePager);\n\n if (!pagerWrapper.classList.contains('js-no-scroll')) itemsContainer.scrollIntoView({behavior:\"smooth\"});\n }\n });\n }\n\n if(settings.StartSearchWhenThisNumberOfCharsEntered){\n const searchInput = document.querySelector(`#${settings.SearchSelectors.input}`);\n searchInput.addEventListener('keyup', event => searchOnKeyUp(event, settings.StartSearchWhenThisNumberOfCharsEntered), false);\n }\n else{\n const searchBtn = document.querySelector(`#${settings.SearchSelectors.searchButton}`);\n if (searchBtn) {\n searchBtn.addEventListener('submit', search, false);\n searchBtn.addEventListener('reset', function () {\n filterService.populateSearchField(\"\");\n updateState();\n }, false);\n }\n }\n\n const clearFilters = Array.from(document.querySelectorAll(`.${settings.SearchSelectors.clearFiltersBtn}`));\n if (clearFilters) {\n clearFilters.forEach(clearButton => {\n clearButton.addEventListener('click', onClearButtonClick, false);\n });\n }\n\n settings.TaxonomySelectors.forEach(selector => {\n const taxonomiesSelection = Array.from(document.querySelectorAll(`.${selector}`));\n if (taxonomiesSelection) {\n taxonomiesSelection.forEach(taxon => {\n taxon.addEventListener(\"change\", updateState, false);\n });\n }\n });\n\n const languageSelection = Array.from(document.querySelectorAll(`.${settings.LanguageSelector}`));\n if (languageSelection) {\n languageSelection.forEach(lang => {\n lang.addEventListener('change', updateState, false);\n });\n }\n\n window.addEventListener('popstate', (event) => {\n updateStateFromUrl(false);\n });\n\n const resourcesLanguage = pageUrlService.getResourcesLanguage();\n filterService.setSelectedLanguage(resourcesLanguage);\n\n // If url contains query params, parses them and updates grid.\n if (window.location.search.indexOf('?') > -1) {\n updateStateFromUrl(true);\n }\n else {\n updateState();\n }\n });\n\n function updatePager(newPagerState) {\n if (pager) {\n if (newPagerState.currentPage > newPagerState.totalPagesCount) {\n newPagerState.currentPage = newPagerState.totalPagesCount;\n }\n\n pager.setTotalItems(newPagerState.totalItemsCount);\n pager.setMaxPages(newPagerState.totalPagesCount);\n pager.setPage(newPagerState.currentPage);\n pager.setPageSize(settings.ODataSettings.PageSize);\n\n if (pager._maxPages <= 1) {\n pager.empty();\n }\n else {\n pager.render();\n\n // Temporary fix for the Prev button on page 1.\n if(!pager.hasPrev() && pager.options.prevWrapperClass && document.querySelector(pager.options.prevWrapperClass)){\n pager.wrapper.querySelector('.' + pager.options.prevWrapperClass + ' > a').href = '#';\n }\n }\n }\n }\n\n function updateStateFromUrl(shouldPushState) {\n filterService.clearSelection(pageUrlService);\n let currentQueryParams = pageUrlService.getCurrentQueryParams();\n filterService.markSelectedItemsBasedOnQueryParams(currentQueryParams);\n updateState(currentQueryParams.get(ResourceCenterStrings.pageKeyName), shouldPushState);\n }\n\n // Calls the API service and updates the state of all elements.\n function updateState(page = 1, shouldPushState = true) {\n let pageNumber = settings.DisablePaging ? 0 : page;\n if ((pageNumber == null || isNaN(pageNumber) || pageNumber <= 0) && !settings.DisablePaging) {\n pageNumber = 1;\n }\n const currentSelections = filterService.getSelection();\n pageUrlService.transformSelectionsToQueryParams(pageNumber, shouldPushState, currentSelections);\n apiService.updateGrid(pageNumber).then(response => {\n if (response) {\n updatePager(response);\n\n if (currentSelections.selectedTaxonomies.length || currentSelections.language || currentSelections.searchTerm) {\n const onFilterActivated = new CustomEvent(\"onFilterActivated\", { detail: currentSelections });\n document.dispatchEvent(onFilterActivated);\n }\n else{\n const onFilterDeactivated = new CustomEvent(\"onFilterDeactivated\");\n document.dispatchEvent(onFilterDeactivated);\n }\n }\n }).catch((err) => {\n if (err.message !== \"Awaiting last response.\") {\n console.log(err.message);\n }\n });\n }\n\n // Export the function in order to plug in custom functionalities on widget templates.\n window.refreshGrid = updateState;\n\n // Used for the search box.\n function search(event) {\n event.preventDefault();\n updateState();\n }\n\n // Clears the selection made by the user and updates the grid.\n function onClearButtonClick(event) {\n event.preventDefault();\n filterService.clearSelection(pageUrlService, false);\n\n updateState();\n }\n\n function mergeSettings() {\n let settings = {\n TaxonomiesToExclude: [],\n TaxasToExclude: [],\n ODataSettings: {},\n TaxonomySelectors: [\n \"js-taxon\",\n \"js-contentType\"\n ],\n LanguageSelector: \"js-resourceLanguage\",\n ItemsContainer: \"js-articles\",\n MissingItemsContainer: \"js-no-resources\",\n PagerSelector: \"js-pager\",\n SearchSelectors: {\n input: \"js-searchField\",\n searchButton: \"js-searchButton\",\n clearFiltersBtn: \"js-clearFilters\",\n activeSerchMessageElement: \"js-search-active-message\",\n activeSearchMessageTermElement: \"js-active-serch-term\"\n }\n\n }\n\n Object.keys(window.ResourceCenterSettings).forEach(function (key) {\n settings[key] = window.ResourceCenterSettings[key];\n });\n\n return settings;\n }\n\n function searchOnKeyUp(event, searchStartLengthLimit){\n let valueEntered = event.target.value;\n if(valueEntered.length >= searchStartLengthLimit || valueEntered.length === 0){\n search(event);\n }\n }\n}\n\ninit();\n"],"names":["ResourceCenterStrings","contentTypesKeyName","languageKeyName","industriesKeyName","solutionsKeyName","categoriesKeyName","productsKeyName","searchtextKeyName","pageKeyName","htmlEncode","html","document","createElement","appendChild","createTextNode","parentNode","innerHTML","htmlDecode","DOMParser","parseFromString","documentElement","textContent","languageValues","ResourceCenterPageUrlService","constructor","getCurrentQueryParams","URLSearchParams","window","location","search","getPageNumber","queryParams","this","pageNumber","has","Number","get","getResourcesLanguage","resourceLanguage","getPageLanguage","languageFromPath","pathname","split","filter","el","defaultLanguage","languageInputField","getElementById","id","transformSelectionsToQueryParams","page","shouldPushState","currentFilterSelection","parseFilterSelectionToQueryParams","url","URL","push","query","Object","keys","selectedTaxonomies","length","forEach","taxonomies","taxon","taxa","taxaDomElementById","querySelector","dataset","name","append","toLowerCase","searchTerm","language","onParseFilterToQueryParamsCompleted","CustomEvent","detail","urlSearchParams","dispatchEvent","toString","validate","Error","newUrl","hash","history","pushState","result","error","styles","ResourceCenterApiService","apiUrlService","filterService","resourceCenterfactory","settings","widgetSettings","updateGrid","bind","pageSize","ResourceCenterSettings","ODataSettings","PageSize","cachedResponses","Map","lastRequestURL","resourceCenterObjectFactory","apiRequest","generate","getSelection","resourceItems","cachedReponse","normalizeRequestUrl","response","totalItemsCount","showMissingResourcesMessage","ItemsContainer","Promise","resolve","fetch","method","then","isLastUrlResponse","ok","reject","json","data","resources","value","dataCount","pagesCount","Math","ceil","idsWithMissingRelatedMedia","item","imageFieldName","ExpandedFields","Image","File","Id","getRelatedMedia_english","images","GroupingSettings","groupItems","itemHTML","totalPagesCount","currentPage","set","urlString","absoluteUrlString","origin","encodedUrlString","href","relatedMedia","getResourceItemHtmlProvider","getItemHtml","trim","map","x","join","itemIds","apiRequestUrl","getImagesUrl_english","showMessage","missingResourcesMessageDiv","MissingItemsContainer","classToRemove","classToAdd","classList","remove","add","initialCollection","groupingSettings","itemsGroupingMap","otherGroupData","isInGroup","GroupingProperty","ParentTaxonToUseId","ParentId","addToGroupMap","itemsInColumns","column","GroupsData","itemsInColumn","taxonId","delete","size","otherGroup","key","items","itemsGroup","title","Title","urlName","UrlName","ResourceCenterFilterService","filterSettings","TaxonomySelectors","selector","currentTaxon","getSelectedTaxonomies","getSelectedLanguage","getSearchParams","toggleClearFiltersButton","markSelectedItemsBasedOnQueryParams","querryParamsPertainingToFilterSelection","customQueryParams","getQueryParamsFromDom","concat","currentKey","setSelectedLanguage","populateSearchField","keyValues","getAll","currentValue","markElementAsSelected","getTaxonomiesDomSelection","taxonomyName","getAttribute","parent","closest","taxonomyOperator","taxaOperator","taxaId","hasOwnProperty","searchParams","searchInputValue","SearchSelectors","input","activeSerchMessageElement","activeSearchMessageTermElement","toggleActiveSearchMessage","LanguageSelector","selectedLanguage","languageField","tagName","selected","checked","propertyName","propertyValue","isSelected","domElement","querySelectorAll","triggerItemChangeEvent","ex","clearSelection","pageUrlService","clearContentType","languageElement","defaultContentType","Event","innerText","ResourceFactorySettings","ResourceItemHtmlProviderName","attributeName","body","setAttribute","removeAttribute","selectedTaxonomiesInput","Array","from","selectedTaxonomiesOption","$","find","domItemsMarkedWithQueryParamsAttribute","queryParam","queryParamKey","indexOf","ResourceCenterApiUrlService","oDataSettings","defaults","UrlSettings","containsSegment","expand","culture","skip","take","count","joinById","currentSelections","filterSegments","FilterSegments","excludeTaxa","getTaxaUrls","ExcludedTaxonomies","taxonomiesExpression","selectedTaxonomy","taxaUrl","searchUrl","getApiSearchData","skipCount","DisablePaging","takeCount","expands","getExpandedFieldsQuery","SelectedFields","OrderBy","Endpoint","removeEmptyEntries","onOdataUrlGenerated","imageQuery","getImageQuery","CommonFields","taxaComparer","opetator","replace","segments","sanitizedTerm","sanitizeValueForUrl","ContainsFields","field","cleanValueFromSpecialCharacters","encodeURIComponent","resourceIds","values","ResourceItemHtmlProvider","setRelatedMedia","imageData","fileData","englishVersion","isArray","media","NotGated","getResourceUrl","contentTypeId","localizedUrl","localizedUrls","resourceUrl","e","CultureName","encodeHtml","text","p","ResourceItemHtmlProviderWug","super","cssClasses","col","resource","resorceImageRatio","resorceImage","resourceContent","resourceType","webinarStartDate","resourceSummary","resourceCTA","monthNamesMap","CTAText","resourcePath","Summary","StartDate","ExternalUrl","CTAUrl","contentType","resourceCategory","pageUrl","contenttypes","featuredLabel","Boolean","IsFeatured","Url","startDate","Date","getDate","getMonthName","getMonth","monthNumber","ResourceItemHtmlProviderIpswitch","filterServices","resourceWrapper","resourceEmbed","resourceImage","floatingLabel","labelWrap","label","resourceDate","resourceLink","minLabel","en","de","nl","es","pt","fr","sv","jp","getResourceCtaLabel","lang","learnMoreLabel","downloadTheReportLabel","downloadThePdfLabel","viewTheInfographicLabel","watchTheVideoLabel","registerLabel","watchTheWebinarLabel","downloadLabel","formattedDate","options","weekday","year","month","day","toLocaleDateString","AlternativeText","VideoLength","ResourceItemHtmlProviderChefPartners","Description","ResourceItemHtmlProviderChefCustomers","contenttype","ResourceItemHtmlProviderChefResources","defaultResourceData","imagePath","cta","isWebinar","IsGated","CTATextFallback","ct","ListImage","startDateISO","toISOString","IsUpcomming","summaryParagraph","timeElement","target","utcDate","undefined","hour","minute","ResourceItemHtmlProviderChefEvents","getEventDate","EventStart","currentDate","nth","d","ResourceItemHtmlProviderChefWebinars","ResourceItemHtmlProviderProgressDciOverview","Logo","ResourceItemHtmlProviderProgressDciAccordion","Interfaces","interfaceOrderMap","orderInterfaces","otherInterface","buildInterfaceHtml","interfaceData","hasResources","BlogPosts","Videos","SuccessStories","Tutorials","Webinars","Whitepapers","Documentation","InterfaceTitle","docContent","SectionContent","blogPostLink","Links","ItemUrl","videoLink","CustomUrl","successStoryLink","tutorialLink","webinarLink","paperLink","interfacesCollection","currentInterface","InterfaceUrlName","ResourceItemHtmlProviderProgressDciList","group","connector","ResourceItemHtmlProviderProgressUserAwardsList","industryTaxonParentId","awardTaxonParentId","countryTaxonParentId","yearTaxonParentId","monthTaxonParentId","projectOfTheMonthTaxonId","practitionerOfTheYearTaxonId","websiteOfTheYearTaxonId","taxonomyNavigationProperty","industryTitles","awardTitle","awardId","countryTitle","labelText","labelClass","Screenshot","ImplementorName","ResourceItemHtmlProviderKempPartners","partnerTypesTaxonId","partnerSpecializationsTaxonId","img","partnerTypeData","partnerType","type","partnerTypeStr","u","countryData","country","languageInput","Email","Phone","PostalCode","Locality","Premise","State","Thoroughfare","Website","ResourceItemHtmlProviderFlowmonPartners","patnerTypesTaxonId","partnerURL","Address","Country","Type","partnerTable","entries","ResourceItemHtmlProviderKempVideos","ResourceItemHtmlProviderFlowmonResources","cs","summary","ResourceItemHtmlProviderKempResources","ja","viewPdfLAbel","seeMoreLAbel","imageAlt","upcomingOrOnDemandLabel","ResourceItemHtmlProviderFlowmonResearchAndProjects","ResourceItemHtmlProviderChefInIpswitchResources","ResourceItemHtmlProviderProgress","resourceBox","resourceLabel","resourceData","resourceTitle","webinarLabel","startTime","date","localDate","getTime","getTimezoneOffset","toLocaleTimeString","hour12","timeZoneParts","exec","part","YouTubeId","getDefaultThumbnail","Duration","ResourceItemHtmlProviderProgressWebinars","resourceDescription","onDemandLabel","upcomingLabel","getMinutes","timeStyle","enTimezoneString","toLocaleString","second","timeZoneName","timeZone","timeZoneTranslatedName","ResourceItemHtmlProviderTelerikReleaseNotes","ReleaseDate","ResourceItemHtmlProviderProgressTutorials","resourceTaxa","titleWrapper","dciInterfaces","prgsUniversalTaxonomy","i","ResourceItemHtmlProviderProgressSitefinityIntegrations","typeTaxonParentId","integrationTypeTaxonId","typeTaxon","typeText","ResourceCenterObjectFactory","factorySettings","providers","Ipswitch","ChefPartners","ChefCustomers","ChefEvents","ChefWebinars","ChefResources","ChefInIpswitchResources","WUG","ProgressDciOverview","ProgressDciAccordion","ProgressDciConnectorsList","ProgressUserAwardsList","ProgressSitefinityIntegrations","KempPartners","Kemp","FlowmonPartners","KempVideos","FlowmonResearchAndProjects","Flowmon","Progress","ProgressTutorials","ProgressWebinars","TelerikReleaseNotes","default","prov","init","TaxonomiesToExclude","TaxasToExclude","PagerSelector","searchButton","clearFiltersBtn","mergeSettings","resourceCenterFactory","apiService","pager","itemsContainer","updatePager","newPagerState","setTotalItems","setMaxPages","setPage","setPageSize","_maxPages","empty","render","hasPrev","prevWrapperClass","wrapper","updateStateFromUrl","currentQueryParams","updateState","isNaN","onFilterActivated","onFilterDeactivated","catch","err","message","console","log","event","preventDefault","onClearButtonClick","addEventListener","pagerWrapper","biz","Pager","callback","instance","contains","scrollIntoView","behavior","StartSearchWhenThisNumberOfCharsEntered","searchStartLengthLimit","valueEntered","searchOnKeyUp","searchBtn","clearFilters","clearButton","taxonomiesSelection","languageSelection","resourcesLanguage","refreshGrid"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}