{"version":3,"file":"zoomv.8120.min.js?t=7fa8e2f790f8b81d218f","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/foundation/GridLandingPage/GridLandingPage.js","webpack://@hero-digital/zoom/./src/js/utilities/accordion.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-filter.js","webpack://@hero-digital/zoom/./src/js/utilities/datalayer/data-layer-search.js"],"sourcesContent":["import { AccordionWidget } from '../../../js/utilities/accordion'\r\nimport { DataLayerSearch } from '../../../js/utilities/datalayer/data-layer-search'\r\nimport { DataLayerFilter } from '../../../js/utilities/datalayer/data-layer-filter'\r\n\r\n// Grid landing page Component\r\nclass GridLandingPage {\r\n constructor(el) {\r\n this.el = el\r\n this.apiEndpoint = this.el.dataset.apiEndpoint\r\n this.isCardContentRequired = false\r\n this.filters = this.el.querySelectorAll(\r\n '.grid-landing-page__filter:not(.grid-landing-page__sort-mobile)'\r\n )\r\n this.buttonFilters = this.el.querySelectorAll('.grid-landing-page__buttonfilters button')\r\n this.checkboxes = this.el.querySelectorAll(\r\n 'input[type=\"checkbox\"]:not(.checkbox-sort)'\r\n )\r\n this.sortCheckboxes = this.el.querySelectorAll('.checkbox-sort')\r\n this.resultsDiv = this.el.querySelector('.grid-landing-page__results')\r\n this.loadMoreBtn = this.el.querySelector('.btn-load-more')\r\n this.form = this.el.querySelector('form')\r\n ;(this.choicesMenus = {}),\r\n (this.query = {}),\r\n (this.searchBox = this.el.querySelector('#q')),\r\n (this.newSearch = false)\r\n this.clearSearch = this.el.querySelector(\r\n '.grid-landing-page__text-input__search-icon--close'\r\n )\r\n this.searchField = this.el.querySelector('input[type=\"text\"]')\r\n this.libraryPageId = this.el.querySelector('#library-page-id')\r\n this.pageSize = this.el.querySelector('#page-size')\r\n\r\n //mobile collapse expand holder\r\n const filterLists = document.querySelectorAll('.grid-landing-page__wrapper')\r\n const mobileButton = document.querySelector(\r\n '.grid-landing-page__mobile-filters'\r\n )\r\n const listHeightControl = document.querySelector(\r\n '.grid-landing-page__filter-wrap'\r\n )\r\n\r\n const heightArray = new Array()\r\n filterLists.forEach((list) => {\r\n var height = list.offsetHeight\r\n heightArray.push(height)\r\n })\r\n\r\n const sumOfHeights = heightArray.reduce(\r\n (partialSum, a) => partialSum + a,\r\n 0\r\n )\r\n const maxHeight = sumOfHeights + 'px'\r\n this.el.parentNode.style.setProperty('--max-height', maxHeight)\r\n\r\n // mobile expand collapse\r\n mobileButton.addEventListener('click', collapseExpand)\r\n function collapseExpand() {\r\n if (mobileButton.getAttribute('aria-expanded') === 'false') {\r\n mobileButton.setAttribute('aria-expanded', 'true')\r\n mobileButton.classList.add('isOpen')\r\n listHeightControl.classList.add('isOpen')\r\n } else {\r\n mobileButton.setAttribute('aria-expanded', 'false')\r\n mobileButton.classList.remove('isOpen')\r\n listHeightControl.classList.remove('isOpen')\r\n }\r\n }\r\n\r\n this.searchField.addEventListener('focus', (e) => {\r\n if (!e.target.classList.contains('lift-label')) {\r\n e.target.classList.add('lift-label')\r\n }\r\n })\r\n this.clearSearch.addEventListener('click', (e) => {\r\n this.searchBox.value = ''\r\n this.searchBox.focus()\r\n this.newSearch = true\r\n this.buildQuery()\r\n })\r\n\r\n this.searchField.addEventListener('blur', (e) => {\r\n if (e.target.value === '') {\r\n e.target.classList.remove('lift-label')\r\n }\r\n })\r\n this.searchField.onkeydown = function(e) {\r\n // disable form submit on enter key press\r\n if (e.keyCode === 13) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n }\r\n\r\n //Media query vars\r\n const mobileQuery = window?.matchMedia('(max-width: 1025px)')\r\n const isMobile = mobileQuery?.matches\r\n\r\n this.checkboxes.forEach((el) => {\r\n el.addEventListener(\r\n 'change',\r\n (e) => {\r\n this.newSearch = true\r\n this.buildQuery()\r\n this.updatePills(el)\r\n },\r\n false\r\n )\r\n })\r\n this.sortCheckboxes.forEach((el) => {\r\n el.addEventListener(\r\n 'change',\r\n (e) => {\r\n if (el.checked) {\r\n this.sortCheckboxes.forEach((checkbox) => {\r\n checkbox.checked = false\r\n })\r\n el.checked = true\r\n this.newSearch = true\r\n this.buildQuery()\r\n } else {\r\n el.checked = true\r\n }\r\n },\r\n false\r\n )\r\n })\r\n\r\n this.buttonFilters.forEach((el) => {\r\n el.addEventListener('click', (e) => {\r\n this.el.querySelectorAll('.sort-button').forEach(btn => {\r\n btn.setAttribute('data-selected', 'false')\r\n })\r\n\r\n this.el.querySelectorAll('.grid-landing-page__buttonfilters button').forEach(btn => {\r\n btn.setAttribute('data-selected', 'false');\r\n })\r\n\r\n e.currentTarget.setAttribute('data-selected', 'true');\r\n this.currentStatus = e.currentTarget.id\r\n this.newSearch = true\r\n this.buildQuery()\r\n });\r\n });\r\n\r\n if (this.searchBox != null) {\r\n this.searchBox.addEventListener('keyup', () => {\r\n if (this.searchBox.value.length > 2) {\r\n var duration = 1000\r\n clearTimeout(this.searchBox._timer)\r\n this.searchBox._timer = setTimeout(() => {\r\n this.newSearch = true\r\n this.buildQuery()\r\n }, duration)\r\n }\r\n })\r\n }\r\n this.pageOnLoad()\r\n this.initAccordion()\r\n this.initDataLayer()\r\n this.insertElementAfterSecondRow()\r\n }\r\n\r\n initDataLayer() {\r\n try {\r\n document.querySelectorAll('.column-1 a.js-analytics-cta').forEach(link => {\r\n link.removeEventListener(\"click\", this.trackDownloadAsset)\r\n link.addEventListener(\"click\", this.trackDownloadAsset)\r\n }, this)\r\n }\r\n catch (e) { }\r\n }\r\n\r\n trackDownloadAsset(e) {\r\n const cardType = e.target.getAttribute('data-location') || e.currentTarget.getAttribute('data-location') || 'Image Card'\r\n const downloadURL = e.target.href || e.currentTarget.href\r\n if (downloadURL) {\r\n const extensionRegex = /\\.(doc|txt|zip|exe|pdf|ppt|mp3|mp4)/i\r\n const match = downloadURL.match(extensionRegex)\r\n const linkText = e?.currentTarget?.parentNode?.querySelector(\"span.fdn-button--button-style-textLink\").innerText || e?.target?.innerText \r\n let eventData = \"\"\r\n let eventName = \"linkClick\"\r\n eventData = {\r\n event: eventName,\r\n linkUrl: downloadURL,\r\n linkText: linkText,\r\n uiLocation: cardType\r\n };\r\n if (match) {\r\n eventData.event = \"fileDownload\"\r\n eventData.fileExtension = match[1]?.toLowerCase()\r\n }\r\n window.dataLayer.push(eventData)\r\n }\r\n }\r\n\r\n initAccordion() {\r\n new AccordionWidget(this.el)\r\n window.addEventListener('click', this.detectOutsideClick.bind(this))\r\n }\r\n\r\n detectOutsideClick(e) {\r\n if (this.el.classList.contains('has-expanded-el')) {\r\n if (\r\n !e.target.closest('.grid-landing-page__popup-button') &&\r\n !e.target.closest('.grid-landing-page__popup-container')\r\n ) {\r\n const expandedButton = this.el.querySelector(\r\n '.grid-landing-page__popup-button[aria-expanded=\"true\"]'\r\n )\r\n if (expandedButton) expandedButton.click()\r\n }\r\n if (\r\n !e.target.closest('.grid-landing-page__sort-button') &&\r\n !e.target.closest('.grid-landing-page__sort-container')\r\n ) {\r\n const expandedButton = this.el.querySelector(\r\n '.grid-landing-page__sort-button[aria-expanded=\"true\"]'\r\n )\r\n if (expandedButton) expandedButton.click()\r\n }\r\n }\r\n }\r\n\r\n pageOnLoad() {\r\n if (!this.loadMoreBtn) {\r\n this.loadMoreBtn = document.querySelector('.btn-load-more')\r\n }\r\n this.loadMoreBtn?.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n const prevPage = this.loadMoreBtn?.getAttribute('data-page') * 1\r\n this.loadMoreBtn?.setAttribute('data-page', prevPage + 1)\r\n this.newSearch = false\r\n this.buildQuery()\r\n })\r\n if (window.location.search) {\r\n //const searchParams = new URLSearchParams(window.location.search)\r\n //const queryString = searchParams.toString()\r\n //this.fetchResults(queryString)\r\n this.updateFormFromParameters()\r\n // this.updateURL(queryString)\r\n } else {\r\n this.loadMoreBtn?.classList.remove('disabled')\r\n }\r\n if (this.searchField.value !== '') {\r\n this.searchField.classList.add('lift-label')\r\n }\r\n\r\n const currentStatus = this.getUrlParameter('status');\r\n if (this.buttonFilters && this.buttonFilters.length > 0) {\r\n let statusSet = false;\r\n this.buttonFilters.forEach(btn => {\r\n const isSelected = btn.id.toLowerCase() === currentStatus?.[0]?.toLowerCase();\r\n btn.setAttribute('data-selected', isSelected.toString());\r\n if (isSelected) {\r\n this.currentStatus = btn.id;\r\n statusSet = true;\r\n }\r\n });\r\n if (!statusSet) {\r\n this.buttonFilters[0].setAttribute('data-selected', 'true');\r\n this.currentStatus = this.buttonFilters[0].id;\r\n }\r\n }\r\n }\r\n\r\n updatePills(el) {\r\n let pills = document.querySelectorAll('.grid-landing-page__pill')\r\n let pillFound = false\r\n pills.forEach((pill) => {\r\n const html= new DOMParser().parseFromString(pill.innerHTML, 'text/html').body.textContent\r\n if (html === el.getAttribute('value')) {\r\n this.removePill(pill)\r\n pillFound = true\r\n }\r\n })\r\n if (!pillFound) {\r\n this.addPill(el.getAttribute('value'))\r\n }\r\n }\r\n\r\n addPill(name) {\r\n const pillContainer = document.querySelector('.grid-landing-page__pills')\r\n let pill = document.createElement('button')\r\n pill.setAttribute('type', 'button')\r\n pill.classList.add('grid-landing-page__pill')\r\n pill.innerHTML =name\r\n pillContainer.appendChild(pill)\r\n pill.addEventListener(\r\n 'click',\r\n (e) => {\r\n this.removePill(pill)\r\n document.querySelector(\r\n \"input[type='checkbox'][value='\" + name + \"']\"\r\n ).checked = false\r\n this.newSearch = true\r\n this.buildQuery()\r\n },\r\n false\r\n )\r\n }\r\n\r\n removePill(name) {\r\n name.remove()\r\n }\r\n\r\n updateFormFromParameters() {\r\n this.filters.forEach((filter) => {\r\n const id = filter.querySelector('button').getAttribute('name')\r\n const activeFilters = this.getUrlParameter(id)\r\n activeFilters?.forEach((item) => {\r\n filter.querySelector(\r\n \"input[type='checkbox'][value='\" + item + \"']\"\r\n ).checked = true\r\n this.addPill(item)\r\n })\r\n })\r\n this.sortCheckboxes.forEach((checkbox) => {\r\n const activeSort = this.getUrlParameter('sort')\r\n if (activeSort && activeSort.length > 0) {\r\n activeSort?.forEach((item) => {\r\n if (checkbox.value === item) {\r\n checkbox.checked = true\r\n } else {\r\n checkbox.checked = false\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n getUrlParameter(sParam) {\r\n var sPageURL =window.location.search.substring(1) \r\n var array = []\r\n var sURLVariables = sPageURL.split('&')\r\n for (var i = 0; i < sURLVariables.length; i++) {\r\n var sParameterName = decodeURIComponent(sURLVariables[i]).split('=')\r\n if (sParameterName[0] == sParam) {\r\n array.push(sParameterName[1].split(','))\r\n }\r\n }\r\n return array[0]\r\n }\r\n\r\n buildQuery() {\r\n let queryString\r\n this.query = {}\r\n\r\n let pageSize = this.pageSize.value\r\n if (pageSize != '9' && pageSize != '12')\r\n {\r\n pageSize = '9'\r\n }\r\n this.query.pageSize = pageSize\r\n\r\n if (this.newSearch) {\r\n if (this.loadMoreBtn != null) {\r\n this.loadMoreBtn?.setAttribute('data-page', 1)\r\n }\r\n this.query.page = 1\r\n if (this.loadMoreBtn != null) {\r\n this.loadMoreBtn.disabled = false\r\n }\r\n } else {\r\n const page = this.loadMoreBtn?.getAttribute('data-page')\r\n this.query.page = parseInt(page)\r\n }\r\n\r\n let searchTerm = this.searchBox.value\r\n if (searchTerm) {\r\n this.query['q'] = searchTerm\r\n }\r\n this.sortCheckboxes.forEach((el) => {\r\n if (el.checked && el.name !== 'sortMobile') {\r\n this.query.sort = el.value\r\n }\r\n })\r\n\r\n this.filters.forEach((el) => {\r\n const id = el.querySelector('button').getAttribute('name')\r\n\r\n let selected = el.querySelectorAll('input[type=\"checkbox\"]:checked')\r\n var values = Array.from(selected).map(({ value }) => value)\r\n let queryValue = ''\r\n values.forEach((value) => {\r\n if (queryValue.length > 0) {\r\n queryValue += ','\r\n }\r\n queryValue += value\r\n })\r\n if (queryValue.length > 0) {\r\n this.query[id] = queryValue\r\n }\r\n })\r\n\r\n if (this.currentStatus) {\r\n this.query.status = this.currentStatus.toLowerCase()\r\n }\r\n if (this.query.status) {\r\n queryString += `&status=${encodeURIComponent(this.query.status)}`\r\n }\r\n\r\n // convert to string for AJAX call\r\n queryString = Object.keys(this.query)\r\n .map((key) => {\r\n return key + '=' + encodeURIComponent(this.query[key])\r\n })\r\n .join('&')\r\n\r\n this.updateURL(queryString)\r\n this.fetchResults(queryString)\r\n }\r\n\r\n resetResults() {\r\n let results = document.querySelector('.grid-landing-page__results')\r\n while (results?.firstChild) {\r\n results.removeChild(results.firstChild)\r\n }\r\n }\r\n\r\n findIndexfromOptionName(select, optionName) {\r\n let options = Array.from(select.options)\r\n return options.findIndex((opt) => opt.label == optionName)\r\n }\r\n\r\n fetchResults(queryString) {\r\n const fetchOpts = {\r\n method: 'GET',\r\n headers: {}\r\n }\r\n\r\n let url = ''\r\n if (queryString.length > 0) {\r\n if (!queryString.includes('lang=')) {\r\n queryString =\r\n 'lang=' + document.documentElement.lang + '&' + queryString\r\n }\r\n url = this.apiEndpoint + '?' + queryString\r\n } else {\r\n url = this.apiEndpoint\r\n }\r\n\r\n window\r\n .fetch(url, fetchOpts)\r\n .then((response) => {\r\n if (this.newSearch) {\r\n this.resetResults()\r\n }\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok')\r\n }\r\n return response.json()\r\n })\r\n .then((body) => {\r\n this.processResponse(body.result)\r\n this.initDataLayer()\r\n this.DataLayerSearch = new DataLayerSearch()\r\n this.DataLayerSearch._updateDataLayerWithCardCount(body.result[\"totalCount\"])\r\n this.DataLayerFilter = new DataLayerFilter();\r\n this.DataLayerFilter._init(body.result[\"totalCount\"]);\r\n })\r\n .catch((err) => {\r\n console.log('Request Failed', err)\r\n })\r\n }\r\n\r\n processResponse(body) {\r\n if (body.items.length == 0) {\r\n this.showNoResults()\r\n this.hideLoadMoreBtn()\r\n } else {\r\n this.showResults()\r\n this.showLoadMoreBtn()\r\n }\r\n body.items.forEach((result) => {\r\n this.addCard(result)\r\n })\r\n this.insertElementAfterSecondRow()\r\n if (!body.hasMoreItems) {\r\n this.hideLoadMoreBtn()\r\n }\r\n }\r\n\r\n showResults() {\r\n let results = document.querySelector('.grid-landing-page__has-results')\r\n let noResults = document.querySelector('.grid-landing-page__has-no-results')\r\n\r\n this.show(results)\r\n this.hide(noResults)\r\n }\r\n\r\n showNoResults() {\r\n let results = document.querySelector('.grid-landing-page__has-results')\r\n let noResults = document.querySelector('.grid-landing-page__has-no-results')\r\n\r\n this.hide(results)\r\n this.show(noResults)\r\n }\r\n\r\n show(element) {\r\n if (element) {\r\n element.style.display = 'block'\r\n }\r\n }\r\n\r\n hide(element) {\r\n if (element) {\r\n element.style.display = 'none'\r\n }\r\n }\r\n\r\n addCard(data) {\r\n this.isCardContentRequired = false\r\n let results = document.querySelector('.grid-landing-page__results')\r\n\r\n // Create the column\r\n let column = document.createElement('div')\r\n column.classList.add('column')\r\n column.classList.add('column-1')\r\n\r\n // Create the anchor - the whole card is a link\r\n let anchor = document.createElement('a')\r\n\r\n let target = '_blank'\r\n if (data.isBlog)\r\n {\r\n target = '_self'\r\n }\r\n\r\n anchor.setAttribute('target', target)\r\n anchor.setAttribute('href', data.url)\r\n anchor.classList.add('js-analytics-cta')\r\n\r\n // If its video, make a video card, otherwise its a regular card\r\n let uiLocation = ''\r\n if (data.isVideo) {\r\n uiLocation = 'Video Card'\r\n } else if (data.isBlog) {\r\n uiLocation = 'Blog Card'\r\n anchor.setAttribute('aria-label', data.title)\r\n } else {\r\n uiLocation = 'Image Card'\r\n anchor.classList.add('fdn-image-card')\r\n anchor.classList.add('medium-radius')\r\n\r\n anchor.setAttribute('id', data.id)\r\n\r\n if (data.image.url) {\r\n anchor.setAttribute('data-img', 'true')\r\n }\r\n }\r\n anchor.setAttribute('data-location', uiLocation)\r\n\r\n\r\n // Add the card accessibility text\r\n let accessibilitySpan = document.createElement('span')\r\n accessibilitySpan.classList.add('visually-hidden')\r\n accessibilitySpan.textContent = ' view: ' + data.title\r\n\r\n anchor.appendChild(accessibilitySpan)\r\n\r\n // If the card has a 'type' add the tag\r\n if (data.type) {\r\n let categoryTag = document.createElement('div')\r\n if (data.isVideo) {\r\n categoryTag.classList.add('fdn-video-card__category-tag')\r\n categoryTag.textContent = data.type\r\n } else if (data.isBlog) {\r\n categoryTag.classList.add('fdn-blog-card__category-tag')\r\n categoryTag.textContent = data.primaryCategory\r\n } else {\r\n categoryTag.classList.add('fdn-image-card__category-tag')\r\n categoryTag.textContent = data.type\r\n }\r\n anchor.appendChild(categoryTag)\r\n }\r\n\r\n // If it has an image, make it\r\n if (data.image && data.image.url) {\r\n let image = document.createElement('img')\r\n if (data.image.altText) {\r\n image.setAttribute('alt', data.image.altText)\r\n }\r\n if (data.image.title) {\r\n image.setAttribute('title', data.image.title)\r\n }\r\n image.setAttribute('src', data.image.url)\r\n image.setAttribute('srcset', data.image.lowResUrl + ' 2x')\r\n anchor.appendChild(image)\r\n }\r\n //add category if present\r\n if(data.primaryCategory){\r\n let categoryFlag = document.createElement('div')\r\n categoryFlag.classList.add('fdn-blog-card__category-tag')\r\n categoryFlag.textContent = data.primaryCategory\r\n anchor.appendChild(categoryFlag)\r\n }\r\n // Create the main container for either type of card\r\n let mainContainer = document.createElement('div')\r\n if (data.isVideo) {\r\n mainContainer.classList.add('fdn-video-card__main-container')\r\n } else if (data.isBlog) {\r\n mainContainer.classList.add('fdn-blog-card__main-container')\r\n } else {\r\n mainContainer.classList.add('fdn-image-card__main-container')\r\n }\r\n\r\n // Make a list of tags\r\n let listTags = document.createElement('ul')\r\n listTags.classList.add('fdn-hero-banner-card__tag-list')\r\n\r\n // Loop through the filters and create the tags\r\n if (!data.hideTags) {\r\n if (data.products) {\r\n this.isCardContentRequired = true\r\n data.products.forEach((product) => {\r\n let li = document.createElement('li')\r\n li.textContent = product\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.industries) {\r\n this.isCardContentRequired = true\r\n data.industries.forEach((industry) => {\r\n let li = document.createElement('li')\r\n li.textContent = industry\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.topics) {\r\n this.isCardContentRequired = true\r\n data.topics.forEach((topic) => {\r\n let li = document.createElement('li')\r\n li.textContent = topic\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.countries) {\r\n this.isCardContentRequired = true\r\n data.countries.forEach((country) => {\r\n let li = document.createElement('li')\r\n li.textContent = country\r\n listTags.appendChild(li)\r\n })\r\n }\r\n\r\n if (data.virtualBackgroundCategories) {\r\n this.isCardContentRequired = true\r\n data.virtualBackgroundCategories.forEach((background) => {\r\n let li = document.createElement('li')\r\n li.textContent = background\r\n listTags.appendChild(li)\r\n })\r\n }\r\n mainContainer.appendChild(listTags)\r\n }\r\n\r\n // Add a logo if there is one authored\r\n if (data.logo && data.logo.url) {\r\n if (data.logo.url.length > 0) {\r\n this.isCardContentRequired = true\r\n let logo = document.createElement('img')\r\n if (data.logo.altText) {\r\n logo.setAttribute('alt', data.logo.altText)\r\n }\r\n if (data.logo.title) {\r\n logo.setAttribute('title', data.logo.title)\r\n }\r\n logo.setAttribute('src', data.logo.url)\r\n logo.setAttribute('srcset', data.logo.lowResUrl + ' 2x')\r\n\r\n if (data.isVideo) {\r\n logo.classList.add('fdn-video-card__logo')\r\n } else {\r\n logo.classList.add('fdn-image-card__logo')\r\n }\r\n\r\n mainContainer.appendChild(logo)\r\n }\r\n }\r\n\r\n //Add Readtime \r\n if(data.timeRead){\r\n this.isCardContentRequired = true\r\n let readTimeWrapper = document.createElement('div')\r\n let readTimeIcon = document.createElement('img')\r\n let readTimeContent = document.createElement('span')\r\n //setup wrapper\r\n readTimeWrapper.classList.add('fdn-blog-card__readtime')\r\n //build out icon\r\n readTimeIcon.setAttribute('src', '/dist/assets/icons/read.svg')\r\n readTimeIcon.setAttribute('alt', '')\r\n readTimeIcon.setAttribute('role', 'presentation')\r\n readTimeIcon.classList.add('fdn-blog-card__readtime--icon')\r\n //append icon\r\n readTimeWrapper.appendChild(readTimeIcon)\r\n //build out content\r\n readTimeContent.classList.add('fdn-blog-card__readtime--content')\r\n readTimeContent.textContent = data.timeRead + ' ' + data.timeReadLabel\r\n //append read time content\r\n readTimeWrapper.appendChild(readTimeContent)\r\n //append readtime wrapper to card\r\n mainContainer.appendChild(readTimeWrapper)\r\n }\r\n // Add the title\r\n if (data.title) {\r\n this.isCardContentRequired = true\r\n let heading = document.createElement('h3')\r\n if (data.isVideo) {\r\n heading.classList.add('fdn-video-card__header')\r\n } else if (data.isBlog) {\r\n heading.classList.add('fdn-blog-card__header')\r\n } else {\r\n heading.classList.add('fdn-image-card__header')\r\n }\r\n heading.textContent = data.title\r\n mainContainer.appendChild(heading)\r\n }\r\n\r\n // Add the description\r\n if (data.text) {\r\n this.isCardContentRequired = true\r\n let body = document.createElement('div')\r\n if (data.isVideo) {\r\n body.classList.add('fdn-video-card__body')\r\n } else if (data.isBlog)\r\n {\r\n body.classList.add('fdn-blog-card__body')\r\n } else {\r\n body.classList.add('fdn-image-card__body')\r\n }\r\n body.innerHTML = data.text\r\n mainContainer.appendChild(body)\r\n }\r\n\r\n // Add the link text\r\n if (data.url && data.linkText) {\r\n this.isCardContentRequired = true\r\n let linkSpan = document.createElement('span')\r\n linkSpan.classList.add('fdn-button--button-style-textLink')\r\n let linkContent = document.createTextNode(data.linkText)\r\n linkSpan.appendChild(linkContent)\r\n mainContainer.appendChild(linkSpan)\r\n }\r\n\r\n if(this.isCardContentRequired) anchor.appendChild(mainContainer)\r\n\r\n // If its a video card we need this wrapper\r\n if (data.isVideo) {\r\n let videoWrapper = document.createElement('div')\r\n videoWrapper.classList.add('fdn-video-card')\r\n videoWrapper.classList.add('medium-radius')\r\n videoWrapper.setAttribute('id', data.id)\r\n\r\n if (data.image.url) {\r\n videoWrapper.setAttribute('data-img', 'true')\r\n }\r\n\r\n videoWrapper.appendChild(anchor)\r\n column.appendChild(videoWrapper)\r\n // If its a blog card we need this wrapper\r\n } else if (data.isBlog)\r\n {\r\n let article = document.createElement('article')\r\n article.classList.add(\"fdn-blog-card\")\r\n article.classList.add(\"medium-radius\")\r\n if(data.image == null || data.image.url == null || data.image.url == \"\")\r\n {\r\n article.classList.add(\"fdn-blog-card--no-image\")\r\n }\r\n\r\n if (data.image.url) {\r\n article.setAttribute('data-img', 'true')\r\n }\r\n\r\n article.setAttribute('id', data.id)\r\n article.appendChild(anchor)\r\n column.appendChild(article)\r\n }\r\n else {\r\n column.appendChild(anchor)\r\n }\r\n\r\n results.appendChild(column)\r\n }\r\n\r\n showLoadMoreBtn() {\r\n this.show(this.loadMoreBtn)\r\n }\r\n\r\n hideLoadMoreBtn() {\r\n this.hide(this.loadMoreBtn)\r\n }\r\n\r\n updateURL(queryString) {\r\n const url =\r\n window.location.origin + window.location.pathname + '?' + queryString\r\n window.history.replaceState({}, document.title, url)\r\n }\r\n\r\n insertElementAfterSecondRow() {\r\n const hiddenFieldElement = document.querySelector(\".isInsertElementAfterSecondRow\")\r\n if (!hiddenFieldElement || hiddenFieldElement.value !== \"1\") return\r\n\r\n const wrapper = document.querySelector(\".grid-landing-page__results\")\r\n if (!wrapper) return\r\n\r\n const noResults = document.querySelector(\".grid-landing-page__has-no-results\")\r\n const miniCta = hiddenFieldElement.nextElementSibling\r\n if (!miniCta) return\r\n\r\n const adjustLayout = () => {\r\n const children = wrapper.children\r\n const secondRowStartIndex = Math.min(children.length, window.innerWidth > 1024 ? 3 : 2)\r\n\r\n // Remove existing cloned elements\r\n document.querySelectorAll(\".custom-placement\").forEach(el => el.remove())\r\n\r\n // Clone and insert the MiniCta element\r\n const clonedMiniCta = miniCta.cloneNode(true)\r\n clonedMiniCta.classList.replace(\"hide\", \"custom-placement\")\r\n\r\n // Determine insert position\r\n const referenceElement = children[secondRowStartIndex] || noResults?.nextSibling\r\n referenceElement ? referenceElement.parentNode.insertBefore(clonedMiniCta, referenceElement) : wrapper.appendChild(clonedMiniCta)\r\n };\r\n\r\n adjustLayout()\r\n window.addEventListener(\"resize\", adjustLayout, { passive: true })\r\n }\r\n}\r\n\r\nexport default GridLandingPage\r\n","/* ACCESSIBLE ACCORDION COMPONENT\r\n Code modified taken from here: https://codepen.io/stowball/pen/eZKwRv\r\n Options (add to parent element that has class \"accordion-interface\"):\r\n Multiselect: aria-multiselectable=\"true\"\r\n Always expand first item: data-firstexpanded=\"true\"\r\n To have selected panel(s) expanded at start use data-open-panels attribute with panel numbers separated by commas.\r\n Example: data-open-panels=\"1,2\"\r\n To keep panels always open at tablet breakpoints and above add to class list: accordion-interface__open-panels__md\r\n and for desktop only: accordion-interface__open-panels__lg\r\n*/\r\nimport gsap from 'gsap'\r\n\r\nfunction AccordionWidget(el, props = {}) {\r\n if (!el) return\r\n this.el = el\r\n\r\n let triggerClass = 'js-accordion-trigger'\r\n let panelClass = 'js-accordion-panel'\r\n if (props.id) {\r\n triggerClass += props.id\r\n panelClass += props.id\r\n }\r\n const expandFirst = el.dataset.firstexpanded === 'true'\r\n this.multiSelectable = this.el.hasAttribute('aria-multiselectable')\r\n\r\n let selectedIndex\r\n if (Number.isInteger(props.selectedIndex)) selectedIndex = props.selectedIndex\r\n else if (expandFirst) selectedIndex = 0\r\n\r\n this.accordionTriggers = this.el.getElementsByClassName(triggerClass)\r\n this.accordionPanels = this.el.getElementsByClassName(panelClass)\r\n\r\n if (\r\n this.accordionTriggers.length === 0 ||\r\n this.accordionTriggers.length !== this.accordionPanels.length\r\n ) {\r\n return\r\n }\r\n\r\n // if we do not already have a selected index see if we have the open panels attribute\r\n if (selectedIndex === undefined && el.dataset.openPanels) {\r\n let openPanels = el.dataset.openPanels\r\n openPanels = openPanels.split(',')\r\n const panelArr = []\r\n for (const panel of openPanels) {\r\n const n = parseInt(panel)\r\n // quick test to make sure we have a positive value\r\n if ((n | 0) > 0 && n % 1 === 0 && n <= this.accordionTriggers.length) {\r\n panelArr.push(n - 1)\r\n // if this is not multiselectable then stop after first validated value\r\n if (!this.multiSelectable) break\r\n }\r\n }\r\n if (panelArr.length) selectedIndex = panelArr\r\n }\r\n\r\n this._init(selectedIndex)\r\n}\r\n\r\nAccordionWidget.prototype._init = function (selectedIndex) {\r\n this.accordionTriggersLength = this.accordionTriggers.length\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.clickListener = this._clickEvent.bind(this)\r\n this.keydownListener = this._keydownEvent.bind(this)\r\n this.focusListener = this._focusEvent.bind(this)\r\n this.keys = {\r\n prev: 38,\r\n next: 40,\r\n space: 32\r\n }\r\n\r\n let initialSelectedIndex\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].index = i\r\n this.accordionTriggers[i].addEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].addEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n this.accordionTriggers[i].classList.add('is-accordion-trigger')\r\n\r\n if (this.accordionTriggers[i].classList.contains('is-selected')) {\r\n this.expandedAccordions[i] = true\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.accordionPanels.length; i++) {\r\n this.accordionPanels[i].classList.add('is-accordion-panel')\r\n }\r\n\r\n // determine which panels need to be open\r\n if (!isNaN(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n } else if (Array.isArray(selectedIndex)) {\r\n initialSelectedIndex = selectedIndex\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (selectedIndex.includes(i)) this.expandedAccordions[i] = true\r\n }\r\n } else {\r\n initialSelectedIndex = this.expandedAccordions.lastIndexOf(true)\r\n\r\n if (!this.multiSelectable) {\r\n this.expandedAccordions = new Array(this.accordionTriggersLength)\r\n this.expandedAccordions[initialSelectedIndex] = true\r\n }\r\n }\r\n\r\n this.initialSetIndex = selectedIndex\r\n this.setSelected(initialSelectedIndex)\r\n this.setExpanded()\r\n this.setAPI()\r\n this.el.classList.add('is-accordion')\r\n this.el.classList.add('is-initialized')\r\n}\r\n\r\nAccordionWidget.prototype._clickEvent = function (e) {\r\n e.preventDefault()\r\n this.setSelected(e.target.index, true)\r\n this.setExpanded(e.target.index, true)\r\n}\r\n\r\nAccordionWidget.prototype._keydownEvent = function (e) {\r\n let targetIndex\r\n\r\n switch (e.keyCode) {\r\n case this.keys.space:\r\n case this.keys.prev:\r\n case this.keys.next:\r\n e.preventDefault()\r\n break\r\n default:\r\n return\r\n }\r\n\r\n if (e.keyCode === this.keys.space) {\r\n // this.setExpanded(e.target.index, true);\r\n e.target.click()\r\n\r\n return\r\n } else if (e.keyCode === this.keys.prev && e.target.index > 0) {\r\n targetIndex = e.target.index - 1\r\n } else if (\r\n e.keyCode === this.keys.next &&\r\n e.target.index < this.accordionTriggersLength - 1\r\n ) {\r\n targetIndex = e.target.index + 1\r\n } else {\r\n return\r\n }\r\n\r\n this.setSelected(targetIndex, true)\r\n}\r\n\r\nAccordionWidget.prototype._focusEvent = function () {\r\n if (this.accordionTriggersLength === 1) {\r\n this.setSelected(0)\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setSelected = function (index, userInvoked) {\r\n if (index === -1) {\r\n this.accordionTriggers[0].setAttribute('tabindex', 0)\r\n\r\n return\r\n }\r\n\r\n if (Array.isArray(index)) index = index[0]\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n if (i === index) {\r\n this.accordionTriggers[i].classList.add('is-selected')\r\n // this.accordionTriggers[i].setAttribute('tabindex', 0);\r\n\r\n if (userInvoked) {\r\n this.accordionTriggers[i].focus()\r\n }\r\n } else {\r\n this.accordionTriggers[i].classList.remove('is-selected')\r\n\r\n // this.accordionTriggers[i].setAttribute('tabindex', -1);\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.setExpanded = function (index, userInvoked) {\r\n let i\r\n\r\n // special case to close all\r\n if (index === -1) this.expandedAccordions = []\r\n\r\n if (userInvoked) {\r\n if (this.multiSelectable) {\r\n this.expandedAccordions[index] = !this.expandedAccordions[index]\r\n } else {\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n if (i === index) {\r\n this.expandedAccordions[i] = !this.expandedAccordions[i]\r\n } else {\r\n this.expandedAccordions[i] = false\r\n }\r\n }\r\n }\r\n }\r\n\r\n AccordionWidget.prototype.hidePanelContent = function (item) {\r\n //allows animation to finish before hiding inner content from assistive technology\r\n setTimeout(() => {\r\n item.setAttribute('aria-hidden', true)\r\n item.setAttribute('hidden', true)\r\n }, 325)\r\n }\r\n\r\n let hasExpanded = false\r\n for (i = 0; i < this.accordionTriggersLength; i++) {\r\n if (this.expandedAccordions[i]) {\r\n this.accordionPanels[i].setAttribute('aria-hidden', false)\r\n this.accordionPanels[i].removeAttribute('hidden')\r\n\r\n this.accordionTriggers[i].setAttribute('aria-expanded', true)\r\n this.accordionTriggers[i].classList.add('is-expanded')\r\n\r\n this.accordionPanels[i].classList.add('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 'auto', duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.add('is-active')\r\n\r\n hasExpanded = true\r\n } else {\r\n this.accordionTriggers[i].setAttribute('aria-expanded', false)\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].classList.remove('is-open')\r\n gsap.to(this.accordionPanels[i], { height: 0, duration: 0.3 })\r\n\r\n this.accordionTriggers[i].parentElement.classList.remove('is-active')\r\n this.hidePanelContent(this.accordionPanels[i])\r\n }\r\n }\r\n\r\n // add close to parent to indicate there is an open element\r\n if (hasExpanded) this.el.classList.add('has-expanded-el')\r\n else this.el.classList.remove('has-expanded-el')\r\n this.hasExpanded = hasExpanded\r\n}\r\n\r\nAccordionWidget.prototype.setAPI = function () {\r\n // add API functionality here\r\n this.close = function () {\r\n this.setSelected(-1)\r\n this.setExpanded(-1)\r\n }\r\n // open initial index\r\n this.openInit = function () {\r\n const index = this.initialSetIndex\r\n if (Number.isInteger(index)) {\r\n this.setSelected(index, true)\r\n this.setExpanded(index, true)\r\n }\r\n }\r\n}\r\n\r\nAccordionWidget.prototype.destroy = function () {\r\n this.el.classList.remove('is-initialized')\r\n\r\n for (let i = 0; i < this.accordionTriggersLength; i++) {\r\n this.accordionTriggers[i].removeAttribute('aria-expanded')\r\n this.accordionTriggers[i].classList.remove('is-expanded')\r\n\r\n this.accordionPanels[i].removeAttribute('aria-hidden')\r\n this.accordionPanels[i].classList.remove('is-open')\r\n this.accordionPanels[i].removeAttribute('tabindex')\r\n\r\n this.accordionTriggers[i].removeEventListener(\r\n 'click',\r\n this.clickListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'keydown',\r\n this.keydownListener,\r\n false\r\n )\r\n this.accordionTriggers[i].removeEventListener(\r\n 'focus',\r\n this.focusListener,\r\n false\r\n )\r\n\r\n delete this.accordionTriggers[i].index\r\n }\r\n}\r\n\r\nexport { AccordionWidget }\r\n","function DataLayerFilter() {\r\n this.filterInteractionEvent = 'filterInteraction';\r\n this.filterAppliedInteraction = 'filter applied';\r\n this.apiEndpoint = document.querySelector('#q')?.closest('.grid-landing-page')?.getAttribute('data-api-endpoint');\r\n this.uiLocation = this.apiEndpoint ? this.apiEndpoint.split('/')[2] : 'grid landing page';\r\n this.filterInputs = document.querySelectorAll('input[type=\"checkbox\"], input[type=\"radio\"], select');\r\n this._handleFilterChange = this._handleFilterChange.bind(this);\r\n}\r\n\r\nDataLayerFilter.prototype._init = function () {\r\n this._trackFilterInteractions();\r\n};\r\n\r\nDataLayerFilter.prototype._trackFilterInteractions = function () {\r\n this.filterInputs.forEach(filter => {\r\n if (!filter.hasEventListener) {\r\n filter.addEventListener('change', (event) => {\r\n if (event.target.checked || event.target.tagName === 'SELECT') {\r\n setTimeout(() => {\r\n this._handleFilterChange()\r\n }, 50)\r\n }\r\n });\r\n filter.hasEventListener = true;\r\n }\r\n });\r\n};\r\n\r\nDataLayerFilter.prototype._handleFilterChange = function () {\r\n let filtersApplied = this._getAppliedFilters();\r\n\r\n if (!filtersApplied || Object.keys(filtersApplied).length === 0) {\r\n return;\r\n }\r\n\r\n // Filter out unnecessary keys like \"sort\" and \"ot-group-id-C000X\"\r\n const validFilterKeys = Object.keys(filtersApplied).filter(\r\n key => !key.startsWith(\"ot-group-id\") && key !== \"sort\"\r\n );\r\n\r\n // Extract all selected values from relevant filters\r\n let selectedFilters = [];\r\n validFilterKeys.forEach(key => {\r\n selectedFilters = selectedFilters.concat(filtersApplied[key]);\r\n });\r\n\r\n // Remove duplicates if the same filter is clicked multiple times\r\n selectedFilters = [...new Set(selectedFilters)];\r\n\r\n if (selectedFilters.length === 0) {\r\n return;\r\n }\r\n\r\n window.dataLayer.push({\r\n event: this.filterInteractionEvent,\r\n filterInteraction: this.filterAppliedInteraction,\r\n filtersUsed: selectedFilters, \r\n uiLocation: this.uiLocation\r\n });\r\n};\r\n\r\nDataLayerFilter.prototype._getAppliedFilters = function () {\r\n const appliedFilters = {};\r\n document.querySelectorAll('input[type=\"checkbox\"]:checked, input[type=\"radio\"]:checked').forEach(input => {\r\n const filterType = input.name || 'unknown';\r\n if (!appliedFilters[filterType]) appliedFilters[filterType] = [];\r\n appliedFilters[filterType].push(input.value);\r\n });\r\n\r\n document.querySelectorAll('select').forEach(select => {\r\n if (select.value) {\r\n const filterType = select.name || 'unknown';\r\n if (!appliedFilters[filterType]) appliedFilters[filterType] = [];\r\n appliedFilters[filterType].push(select.value);\r\n }\r\n });\r\n\r\n return appliedFilters;\r\n};\r\n\r\nexport { DataLayerFilter };\r\n","function DataLayerSearch() {\n this.searchIntractionEvent = 'searchInteraction'\n this.searchValueEvent = 'search'\n this.searchBarClickIntraction = 'search bar clicked'\n this.clearSearchIntraction = 'clear search'\n this.coveoSearchLabel = 'coveo search'\n this.searchBox = document.querySelector('#q')\n this.apiEndpoint = document.querySelector('#q')?.closest('.grid-landing-page')?.getAttribute('data-api-endpoint')\n this.clearSearch = document.querySelector('.grid-landing-page__text-input__search-icon--close')\n this.resultCount = 0\n this.uiLocation = (this.apiEndpoint) ? this.apiEndpoint.split('/')[2] : 'grid landing page'\n this.coveoSearchBox = document.querySelector('.FlyoutButton')\n this.coveoSearchInput = document.querySelector('.magic-box-input input')\n this.coveoClearSearch = document.querySelector('.magic-box-icon')\n this.coveoSearchIcon = document.querySelector('.CoveoSearchButton')\n this.coveoSearchPageInput = document.querySelector('main .magic-box-input input')\n this.coveoPageClearSearch = document.querySelector('main .magic-box-icon')\n this.coveoPageSearchIcon = document.querySelector('main .CoveoSearchButton')\r\n}\r\nDataLayerSearch.prototype._init = function () {\n this._searchClick()\r\n}\n\nDataLayerSearch.prototype._updateDataLayerWithCardCount = function (resultCount) {\r if (resultCount && !isNaN(resultCount)) {\r this.resultCount = parseInt(resultCount)\r }\n if (this.searchBox.value) {\n let eventData = {\n event: this.searchValueEvent,\r\n searchTermUsed: this.searchBox.value,\r\n numResults: this.resultCount,\r\n uiLocation: this.uiLocation\r\n }\r\n window.dataLayer.push(eventData)\r\n }\r}\n\nDataLayerSearch.prototype._searchClickIntraction = function (searchBoxClick, searchBarClickIntraction, uiLocation) {\n if (searchBoxClick != null) {\n searchBoxClick.addEventListener('click', () => {\n let eventData = {\r\n event: this.searchIntractionEvent,\r\n searchInteraction: searchBarClickIntraction,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n })\n }\r\n}\n\nDataLayerSearch.prototype._searchValueIntraction = function (searchElementClick, searchTerm, uiLocation) {\n if (searchElementClick != null) {\n searchElementClick.addEventListener('click', () => {\n let eventData = {\r\n event: this.searchValueEvent,\r\n searchTermUsed: searchTerm?.value,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n })\n }\r\n}\n\nDataLayerSearch.prototype._searchValueIntractionByPressEnter = function (searchElementClick, searchTerm, uiLocation) {\n if (searchElementClick != null) {\n searchElementClick.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n let eventData = {\r\n event: this.searchValueEvent,\r\n searchTermUsed: searchTerm?.value,\r\n uiLocation: uiLocation\r\n }\r\n window.dataLayer.push(eventData)\n }\n })\n }\r\n}\nDataLayerSearch.prototype._searchClick = function () {\r\n try {\n \n this._searchClickIntraction(this.searchBox,this.searchBarClickIntraction,this.uiLocation)\n\n this._searchClickIntraction(this.clearSearch,this.clearSearchIntraction,this.uiLocation)\n\n this._searchClickIntraction(this.coveoSearchBox,this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoSearchInput,this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoSearchPageInput, this.searchBarClickIntraction, this.coveoSearchLabel)\n\n this._searchValueIntractionByPressEnter(this.coveoSearchInput, this.coveoSearchInput, this.coveoSearchLabel)\n\n this._searchValueIntractionByPressEnter(this.coveoSearchPageInput, this.coveoSearchPageInput, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoClearSearch,this.clearSearchIntraction, this.coveoSearchLabel)\n\n this._searchClickIntraction(this.coveoPageClearSearch,this.clearSearchIntraction, this.coveoSearchLabel)\n\n this._searchValueIntraction(this.coveoSearchIcon,this.coveoSearchInput, this.coveoSearchLabel)\n\n this._searchValueIntraction(this.coveoPageSearchIcon, this.coveoSearchPageInput, this.coveoSearchLabel)\n\n document.addEventListener(\"click\", function (e) {\n const target = e.target.closest(\".magic-box-suggestion\");\n if (target) {\n let eventData = {\r\n event: 'search',\r\n searchTermUsed: target.getAttribute('aria-label'),\r\n uiLocation: 'coveo search'\r\n }\r\n window.dataLayer.push(eventData)\n }\n });\r\n }\r\n catch (e) { }\r\n}\r\nexport { DataLayerSearch }\r\n"],"names":["GridLandingPage","el","_window","_this","_classCallCheck","this","apiEndpoint","dataset","isCardContentRequired","filters","querySelectorAll","buttonFilters","checkboxes","sortCheckboxes","resultsDiv","querySelector","loadMoreBtn","form","choicesMenus","query","searchBox","newSearch","clearSearch","searchField","libraryPageId","pageSize","filterLists","document","mobileButton","listHeightControl","heightArray","Array","forEach","list","height","offsetHeight","push","maxHeight","reduce","partialSum","a","parentNode","style","setProperty","addEventListener","getAttribute","setAttribute","classList","add","remove","e","target","contains","value","focus","buildQuery","onkeydown","keyCode","preventDefault","stopPropagation","mobileQuery","window","matchMedia","matches","updatePills","checked","checkbox","btn","currentTarget","currentStatus","id","length","clearTimeout","_timer","setTimeout","pageOnLoad","initAccordion","initDataLayer","insertElementAfterSecondRow","key","_this2","link","removeEventListener","trackDownloadAsset","cardType","downloadURL","href","_e$currentTarget","_e$target","_match$","match","eventData","event","linkUrl","linkText","innerText","uiLocation","fileExtension","toLowerCase","dataLayer","AccordionWidget","detectOutsideClick","bind","closest","expandedButton","click","_this$loadMoreBtn","_this$loadMoreBtn2","_this3","_this3$loadMoreBtn","_this3$loadMoreBtn2","prevPage","location","search","updateFormFromParameters","getUrlParameter","statusSet","_currentStatus$","isSelected","toString","_this4","pills","pillFound","pill","DOMParser","parseFromString","innerHTML","body","textContent","removePill","addPill","name","_this5","pillContainer","createElement","appendChild","_this6","filter","activeFilters","item","activeSort","sParam","array","sURLVariables","substring","split","i","sParameterName","decodeURIComponent","queryString","_this7","_this$loadMoreBtn3","page","disabled","_this$loadMoreBtn4","parseInt","searchTerm","sort","selected","values","from","map","_ref","queryValue","status","concat","encodeURIComponent","Object","keys","join","updateURL","fetchResults","results","firstChild","removeChild","select","optionName","options","findIndex","opt","label","_this8","url","includes","documentElement","lang","fetch","method","headers","then","response","resetResults","ok","Error","json","processResponse","result","DataLayerSearch","_updateDataLayerWithCardCount","DataLayerFilter","_init","err","console","log","_this9","items","showNoResults","hideLoadMoreBtn","showResults","showLoadMoreBtn","addCard","hasMoreItems","noResults","show","hide","element","display","data","column","anchor","isBlog","isVideo","title","image","accessibilitySpan","type","categoryTag","primaryCategory","altText","lowResUrl","categoryFlag","mainContainer","listTags","hideTags","products","product","li","industries","industry","topics","topic","countries","country","virtualBackgroundCategories","background","logo","timeRead","readTimeWrapper","readTimeIcon","readTimeContent","timeReadLabel","heading","text","linkSpan","linkContent","createTextNode","videoWrapper","article","origin","pathname","history","replaceState","hiddenFieldElement","wrapper","miniCta","nextElementSibling","adjustLayout","children","secondRowStartIndex","Math","min","innerWidth","clonedMiniCta","cloneNode","replace","referenceElement","nextSibling","insertBefore","passive","props","arguments","undefined","triggerClass","panelClass","selectedIndex","expandFirst","firstexpanded","multiSelectable","hasAttribute","Number","isInteger","accordionTriggers","getElementsByClassName","accordionPanels","openPanels","_step","panelArr","_iterator","_createForOfIteratorHelper","s","n","done","panel","f","prototype","initialSelectedIndex","accordionTriggersLength","expandedAccordions","clickListener","_clickEvent","keydownListener","_keydownEvent","focusListener","_focusEvent","prev","next","space","index","isNaN","isArray","lastIndexOf","initialSetIndex","setSelected","setExpanded","setAPI","targetIndex","userInvoked","hidePanelContent","hasExpanded","removeAttribute","gsap","to","duration","parentElement","close","openInit","destroy","_document$querySelect","filterInteractionEvent","filterAppliedInteraction","filterInputs","_handleFilterChange","_trackFilterInteractions","hasEventListener","tagName","filtersApplied","_getAppliedFilters","validFilterKeys","startsWith","selectedFilters","Set","filterInteraction","filtersUsed","appliedFilters","input","filterType","searchIntractionEvent","searchValueEvent","searchBarClickIntraction","clearSearchIntraction","coveoSearchLabel","resultCount","coveoSearchBox","coveoSearchInput","coveoClearSearch","coveoSearchIcon","coveoSearchPageInput","coveoPageClearSearch","coveoPageSearchIcon","_searchClick","searchTermUsed","numResults","_searchClickIntraction","searchBoxClick","searchInteraction","_searchValueIntraction","searchElementClick","_searchValueIntractionByPressEnter"],"sourceRoot":""}