{"version":3,"sources":["webpack:///./pericles/node_modules/ui-core/plugins/polyfills/js/Element/matches.js","webpack:///./pericles/node_modules/ui-core/plugins/polyfills/js/Element/closest.js","webpack:///./pericles/plugins/stickyElements/js/stickyElements.js","webpack:///./pericles/node_modules/ui-core/plugins/polyfills/js/stickyfill.es.js","webpack:///./pericles/node_modules/ui-core/plugins/stickyElements/js/stickyElements.js","webpack:///./pericles/templates/header/js/header-alt.js"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","document","documentElement","contains","parentElement","parentNode","nodeType","UX","observer","target","stickyElements","selectors","test","isIE","MutationObserver","mutations","forEach","mutationRecord","$","css","querySelector","observe","attributes","attributeFilter","seppuku","window","getComputedStyle","testNode","createElement","some","prefix","style","position","e","isInitialized","shadowRootExists","ShadowRoot","scroll","top","left","stickies","extend","targetObj","sourceObject","key","hasOwnProperty","parseNumeric","val","parseFloat","getDocOffsetTop","node","docOffsetTop","offsetTop","offsetParent","Sticky","_createClass","_classCallCheck","HTMLElement","Error","sticky","_node","_stickyMode","_active","push","refresh","value","_removed","_deactivate","nodeComputedStyle","nodeComputedProps","display","marginTop","marginBottom","marginLeft","marginRight","cssFloat","isNaN","originalPosition","referenceNode","host","nodeWinOffset","getBoundingClientRect","parentWinOffset","parentComputedStyle","_parent","styles","offsetHeight","_offsetToWindow","right","clientWidth","_offsetToParent","borderTopWidth","borderLeftWidth","borderRightWidth","_styles","bottom","width","nodeTopValue","_limits","start","pageYOffset","end","borderBottomWidth","parentPosition","_recalcPosition","clone","_clone","height","padding","border","borderSpacing","fontSize","insertBefore","stickyMode","_fastCheck","Math","abs","_this","removeChild","remove","_this2","index","splice","Stickyfill","forceSticky","init","refreshAll","addOne","length","i","add","nodeList","addedStickies","_loop","removeOne","_loop2","removeAll","fastCheckTimer","docHiddenKey","visibilityChangeEventName","checkScroll","addEventListener","startFastCheckTimer","stopFastCheckTimer","clearInterval","pageXOffset","setInterval","header","scrollThenFix","dynamicHeader","stickoParent","isHeaderSticky","dynamicHeaderHeight","vPort","isMobile","unshift","_isDynamicHeaderHeight","responsive","extra","on","concat","computeHeaderHeight","matched","querySelectorAll","join","item","isHeader","makeSticky","setTopValue","postStickyActions","_canSetTopValue","headerHeight","_has","stickoActions","scrollThenFixActions","fixedHeaderHeight","classList","scrollThenFixOffset","selector","self","skipButtons","handleSkip","targetId","currentTarget","getAttribute","skipTo","elementRect","scrollTo","scrollY","behavior","focus","button","attr","setTimeout","hasClass","institutionWrapperMobile","institutionWrapperDesktop","removeAttr","each","$item","removeBackdropEl","utils","convertToArray","modalCloseButtons","modalList","modal","modalBackdropList","indexOf","$close","trigger","fixedSwitchEl","scrollableEl","scrollableParent","paddingAmount","elTop","scrollableParentPadding","paddingTop","setScrollStatus","advertRail","hideAdsIfCorrupted","dataset","googleQueryId","showRequestResetPasswordBtn","reCaptcha","reCaptchaRoot","append","adverts","Array","from","advert","className"],"mappings":"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","file":"js/headerAlt-26e3662b43f146fdb3e9.js","sourcesContent":["/**\n * Polyfill to support matches on IE9+\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill}\n */\n\nif (!Element.prototype.matches)\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n","/**\n * Polyfill for Element.closest()\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill}\n */\n\nimport './matches';\n\nif (!Element.prototype.closest)\n Element.prototype.closest = function (s) {\n var el = this;\n if (!document.documentElement.contains(el)) return null;\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n","import 'ui-core/plugins/stickyElements/js/stickyElements';\n\n(function (UX) {\n var observer = null,\n target = null;\n\n UX.stickyElements.selectors['header'] = '.pageHeader';\n\n if (UX.test.isIE()) {\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutationRecord) {\n if ($(mutationRecord.target).css('position') === 'absolute') {\n $(mutationRecord.target).css('top', '0');\n }\n });\n });\n\n target = document.querySelector('.article-row-right');\n\n if (target) {\n observer.observe(target, {attributes: true, attributeFilter: ['style']});\n }\n }\n})(UX);\n","'use strict';\n\n/*\n * 1. Check if the browser supports `position: sticky` natively or is too old to run the polyfill.\n * If either of these is the case set `seppuku` flag. It will be checked later to disable key features\n * of the polyfill, but the API will remain functional to avoid breaking things.\n */\n/*eslint-disable*/\nlet seppuku = false;\n\nconst isWindowDefined = typeof window !== 'undefined';\n\n// The polyfill can’t function properly without `window` or `window.getComputedStyle`.\nif (!isWindowDefined || !window.getComputedStyle) seppuku = true;\n// Dont’t get in a way if the browser supports `position: sticky` natively.\nelse {\n const testNode = document.createElement('div');\n\n if (\n ['', '-webkit-', '-moz-', '-ms-'].some(prefix => {\n try {\n testNode.style.position = prefix + 'sticky';\n } catch (e) {}\n\n return testNode.style.position != '';\n })\n )\n seppuku = true;\n}\n\n/*\n * 2. “Global” vars used across the polyfill\n */\nlet isInitialized = false;\n\n// Check if Shadow Root constructor exists to make further checks simpler\nconst shadowRootExists = typeof ShadowRoot !== 'undefined';\n\n// Last saved scroll position\nconst scroll = {\n top: null,\n left: null,\n};\n\n// Array of created Sticky instances\nconst stickies = [];\n\n/*\n * 3. Utility functions\n */\nfunction extend(targetObj, sourceObject) {\n for (var key in sourceObject) {\n if (sourceObject.hasOwnProperty(key)) {\n targetObj[key] = sourceObject[key];\n }\n }\n}\n\nfunction parseNumeric(val) {\n return parseFloat(val) || 0;\n}\n\nfunction getDocOffsetTop(node) {\n let docOffsetTop = 0;\n\n while (node) {\n docOffsetTop += node.offsetTop;\n node = node.offsetParent;\n }\n\n return docOffsetTop;\n}\n\n/*\n * 4. Sticky class\n */\nclass Sticky {\n constructor(node) {\n if (!(node instanceof HTMLElement)) throw new Error('First argument must be HTMLElement');\n if (stickies.some(sticky => sticky._node === node))\n throw new Error('Stickyfill is already applied to this node');\n\n this._node = node;\n this._stickyMode = null;\n this._active = false;\n\n stickies.push(this);\n\n this.refresh();\n }\n\n refresh() {\n if (seppuku || this._removed) return;\n if (this._active) this._deactivate();\n\n const node = this._node;\n\n /*\n * 1. Save node computed props\n */\n const nodeComputedStyle = getComputedStyle(node);\n const nodeComputedProps = {\n position: nodeComputedStyle.position,\n top: nodeComputedStyle.top,\n display: nodeComputedStyle.display,\n marginTop: nodeComputedStyle.marginTop,\n marginBottom: nodeComputedStyle.marginBottom,\n marginLeft: nodeComputedStyle.marginLeft,\n marginRight: nodeComputedStyle.marginRight,\n cssFloat: nodeComputedStyle.cssFloat,\n };\n\n /*\n * 2. Check if the node can be activated\n */\n if (\n isNaN(parseFloat(nodeComputedProps.top)) ||\n nodeComputedProps.display == 'table-cell' ||\n nodeComputedProps.display == 'none'\n )\n return;\n\n this._active = true;\n\n /*\n * 3. Check if the current node position is `sticky`. If it is, it means that the browser supports sticky positioning,\n * but the polyfill was force-enabled. We set the node’s position to `static` before continuing, so that the node\n * is in it’s initial position when we gather its params.\n */\n const originalPosition = node.style.position;\n if (nodeComputedStyle.position == 'sticky' || nodeComputedStyle.position == '-webkit-sticky')\n node.style.position = 'static';\n\n /*\n * 4. Get necessary node parameters\n */\n const referenceNode = node.parentNode;\n const parentNode = shadowRootExists && referenceNode instanceof ShadowRoot ? referenceNode.host : referenceNode;\n const nodeWinOffset = node.getBoundingClientRect();\n const parentWinOffset = parentNode.getBoundingClientRect();\n const parentComputedStyle = getComputedStyle(parentNode);\n\n this._parent = {\n node: parentNode,\n styles: {\n position: parentNode.style.position,\n },\n offsetHeight: parentNode.offsetHeight,\n };\n this._offsetToWindow = {\n left: nodeWinOffset.left,\n right: document.documentElement.clientWidth - nodeWinOffset.right,\n };\n this._offsetToParent = {\n top: nodeWinOffset.top - parentWinOffset.top - parseNumeric(parentComputedStyle.borderTopWidth),\n left: nodeWinOffset.left - parentWinOffset.left - parseNumeric(parentComputedStyle.borderLeftWidth),\n right: -nodeWinOffset.right + parentWinOffset.right - parseNumeric(parentComputedStyle.borderRightWidth),\n };\n this._styles = {\n position: originalPosition,\n top: node.style.top,\n bottom: node.style.bottom,\n left: node.style.left,\n right: node.style.right,\n width: node.style.width,\n marginTop: node.style.marginTop,\n marginLeft: node.style.marginLeft,\n marginRight: node.style.marginRight,\n };\n\n const nodeTopValue = parseNumeric(nodeComputedProps.top);\n this._limits = {\n start: nodeWinOffset.top + window.pageYOffset - nodeTopValue,\n end:\n parentWinOffset.top +\n window.pageYOffset +\n parentNode.offsetHeight -\n parseNumeric(parentComputedStyle.borderBottomWidth) -\n node.offsetHeight -\n nodeTopValue -\n parseNumeric(nodeComputedProps.marginBottom),\n };\n\n /*\n * 5. Ensure that the node will be positioned relatively to the parent node\n */\n const parentPosition = parentComputedStyle.position;\n\n if (parentPosition != 'absolute' && parentPosition != 'relative') {\n parentNode.style.position = 'relative';\n }\n\n /*\n * 6. Recalc node position.\n * It’s important to do this before clone injection to avoid scrolling bug in Chrome.\n */\n this._recalcPosition();\n\n /*\n * 7. Create a clone\n */\n const clone = (this._clone = {});\n clone.node = document.createElement('div');\n\n // Apply styles to the clone\n extend(clone.node.style, {\n width: nodeWinOffset.right - nodeWinOffset.left + 'px',\n height: nodeWinOffset.bottom - nodeWinOffset.top + 'px',\n marginTop: nodeComputedProps.marginTop,\n marginBottom: nodeComputedProps.marginBottom,\n marginLeft: nodeComputedProps.marginLeft,\n marginRight: nodeComputedProps.marginRight,\n cssFloat: nodeComputedProps.cssFloat,\n padding: 0,\n border: 0,\n borderSpacing: 0,\n fontSize: '1em',\n position: 'static',\n });\n\n referenceNode.insertBefore(clone.node, node);\n clone.docOffsetTop = getDocOffsetTop(clone.node);\n }\n\n _recalcPosition() {\n if (!this._active || this._removed) return;\n\n const stickyMode =\n scroll.top <= this._limits.start ? 'start' : scroll.top >= this._limits.end ? 'end' : 'middle';\n\n if (this._stickyMode == stickyMode) return;\n\n switch (stickyMode) {\n case 'start':\n extend(this._node.style, {\n position: 'absolute',\n left: this._offsetToParent.left + 'px',\n right: this._offsetToParent.right + 'px',\n top: this._offsetToParent.top + 'px',\n bottom: 'auto',\n width: 'auto',\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n });\n break;\n\n case 'middle':\n extend(this._node.style, {\n position: 'fixed',\n left: this._offsetToWindow.left + 'px',\n right: this._offsetToWindow.right + 'px',\n top: this._styles.top,\n bottom: 'auto',\n width: 'auto',\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n });\n break;\n\n case 'end':\n extend(this._node.style, {\n position: 'absolute',\n left: this._offsetToParent.left + 'px',\n right: this._offsetToParent.right + 'px',\n top: 'auto',\n bottom: 0,\n width: 'auto',\n marginLeft: 0,\n marginRight: 0,\n });\n break;\n }\n\n this._stickyMode = stickyMode;\n }\n\n _fastCheck() {\n if (!this._active || this._removed) return;\n\n if (\n Math.abs(getDocOffsetTop(this._clone.node) - this._clone.docOffsetTop) > 1 ||\n Math.abs(this._parent.node.offsetHeight - this._parent.offsetHeight) > 1\n )\n this.refresh();\n }\n\n _deactivate() {\n if (!this._active || this._removed) return;\n\n this._clone.node.parentNode.removeChild(this._clone.node);\n delete this._clone;\n\n extend(this._node.style, this._styles);\n delete this._styles;\n\n // Check whether element’s parent node is used by other stickies.\n // If not, restore parent node’s styles.\n if (!stickies.some(sticky => sticky !== this && sticky._parent && sticky._parent.node === this._parent.node)) {\n extend(this._parent.node.style, this._parent.styles);\n }\n delete this._parent;\n\n this._stickyMode = null;\n this._active = false;\n\n delete this._offsetToWindow;\n delete this._offsetToParent;\n delete this._limits;\n }\n\n remove() {\n this._deactivate();\n\n stickies.some((sticky, index) => {\n if (sticky._node === this._node) {\n stickies.splice(index, 1);\n return true;\n }\n });\n\n this._removed = true;\n }\n}\n\n/*\n * 5. Stickyfill API\n */\nconst Stickyfill = {\n stickies,\n Sticky,\n\n forceSticky() {\n seppuku = false;\n init();\n\n this.refreshAll();\n },\n\n addOne(node) {\n // Check whether it’s a node\n if (!(node instanceof HTMLElement)) {\n // Maybe it’s a node list of some sort?\n // Take first node from the list then\n if (node.length && node[0]) node = node[0];\n else return;\n }\n\n // Check if Stickyfill is already applied to the node\n // and return existing sticky\n for (var i = 0; i < stickies.length; i++) {\n if (stickies[i]._node === node) return stickies[i];\n }\n\n // Create and return new sticky\n return new Sticky(node);\n },\n\n add(nodeList) {\n // If it’s a node make an array of one node\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\n // Check if the argument is an iterable of some sort\n if (!nodeList.length) return;\n\n // Add every element as a sticky and return an array of created Sticky instances\n const addedStickies = [];\n\n for (let i = 0; i < nodeList.length; i++) {\n const node = nodeList[i];\n\n // If it’s not an HTMLElement – create an empty element to preserve 1-to-1\n // correlation with input list\n if (!(node instanceof HTMLElement)) {\n addedStickies.push(void 0);\n continue;\n }\n\n // If Stickyfill is already applied to the node\n // add existing sticky\n if (\n stickies.some(sticky => {\n if (sticky._node === node) {\n addedStickies.push(sticky);\n return true;\n }\n })\n )\n continue;\n\n // Create and add new sticky\n addedStickies.push(new Sticky(node));\n }\n\n return addedStickies;\n },\n\n refreshAll() {\n stickies.forEach(sticky => sticky.refresh());\n },\n\n removeOne(node) {\n // Check whether it’s a node\n if (!(node instanceof HTMLElement)) {\n // Maybe it’s a node list of some sort?\n // Take first node from the list then\n if (node.length && node[0]) node = node[0];\n else return;\n }\n\n // Remove the stickies bound to the nodes in the list\n stickies.some(sticky => {\n if (sticky._node === node) {\n sticky.remove();\n return true;\n }\n });\n },\n\n remove(nodeList) {\n // If it’s a node make an array of one node\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\n // Check if the argument is an iterable of some sort\n if (!nodeList.length) return;\n\n // Remove the stickies bound to the nodes in the list\n for (let i = 0; i < nodeList.length; i++) {\n const node = nodeList[i];\n\n stickies.some(sticky => {\n if (sticky._node === node) {\n sticky.remove();\n return true;\n }\n });\n }\n },\n\n removeAll() {\n while (stickies.length) stickies[0].remove();\n },\n};\n\n/*\n * 6. Setup events (unless the polyfill was disabled)\n */\nfunction init() {\n if (isInitialized) {\n return;\n }\n\n isInitialized = true;\n\n // Watch for scroll position changes and trigger recalc/refresh if needed\n function checkScroll() {\n if (window.pageXOffset != scroll.left) {\n scroll.top = window.pageYOffset;\n scroll.left = window.pageXOffset;\n\n Stickyfill.refreshAll();\n } else if (window.pageYOffset != scroll.top) {\n scroll.top = window.pageYOffset;\n scroll.left = window.pageXOffset;\n\n // recalc position for all stickies\n stickies.forEach(sticky => sticky._recalcPosition());\n }\n }\n\n checkScroll();\n window.addEventListener('scroll', checkScroll);\n\n // Watch for window resizes and device orientation changes and trigger refresh\n window.addEventListener('resize', Stickyfill.refreshAll);\n window.addEventListener('orientationchange', Stickyfill.refreshAll);\n\n //Fast dirty check for layout changes every 500ms\n let fastCheckTimer;\n\n function startFastCheckTimer() {\n fastCheckTimer = setInterval(function () {\n stickies.forEach(sticky => sticky._fastCheck());\n }, 500);\n }\n\n function stopFastCheckTimer() {\n clearInterval(fastCheckTimer);\n }\n\n let docHiddenKey;\n let visibilityChangeEventName;\n\n if ('hidden' in document) {\n docHiddenKey = 'hidden';\n visibilityChangeEventName = 'visibilitychange';\n } else if ('webkitHidden' in document) {\n docHiddenKey = 'webkitHidden';\n visibilityChangeEventName = 'webkitvisibilitychange';\n }\n\n if (visibilityChangeEventName) {\n if (!document[docHiddenKey]) startFastCheckTimer();\n\n document.addEventListener(visibilityChangeEventName, () => {\n if (document[docHiddenKey]) {\n stopFastCheckTimer();\n } else {\n startFastCheckTimer();\n }\n });\n } else startFastCheckTimer();\n}\n\nif (!seppuku) init();\n\n/*\n * 7. Expose Stickyfill\n */\nexport default Stickyfill;\nexport {Sticky};\n","import {isIE} from '../../../utility/js/tests';\nimport {fixedHeaderHeight} from '../../../utility/js/utils';\nimport Stickyfill from '../../polyfills/js/stickyfill.es';\nimport '../../polyfills/js/NodeList/forEach';\nimport '../../polyfills/js/Element/matches';\nimport '../../polyfills/js/Element/closest';\n\n(function (UX) {\n /**\n ****************************\n ***** Sticky Elements ******\n ****************************\n *\n * Sticky Elements object is responsible for stickiness in all UX3 sites, it uses CSS3 `position: sticky;`\n * instead of `fixed`, for IE it uses `stickybits` plugin as a polyfill. Covering all sticky cases\n * in UX3 with minimum code. Also. Hooks can be used for extending its functionality. It used\n * to replace old stickiness solutions:(1) Header with position fixed. (2) CoolBar with\n * stickybar.js. (3) sticko.js plugin (4) Scroll them fix header-scroll-fix.js\n *\n */\n UX.stickyElements = {\n /**\n * Different Selectors\n */\n selectors: {\n header: '.header',\n scrollThenFix: '.scrollThenFix',\n stickyElements: ['.fixed-element'],\n // Elements can be in header cause its height to be dynamic\n dynamicHeader: ['.pb-ad', '.pb-las', '.cookiePolicy-popup', '.header__dropzone'],\n stickoParent: '.sticko__parent',\n },\n\n /**\n * Holds header object\n * @type {HTMLElement}\n */\n header: null,\n\n /**\n * Toggle header stickiness\n * @type {boolean}\n */\n isHeaderSticky: true,\n\n /**\n * Use dynamic header height computed by JS instead of CSS fixed value\n * @type {boolean}\n */\n dynamicHeaderHeight: false,\n\n // For responsive\n vPort: 'screen-sm',\n isMobile: false,\n\n init() {\n this.header = document.querySelector(this.selectors['header']);\n\n if (this.isHeaderSticky) this.selectors['stickyElements'].unshift(this.selectors['header']);\n\n this._isDynamicHeaderHeight();\n\n this.start();\n this.responsive();\n this.extra();\n },\n\n responsive() {\n // TODO: get rid of jQuery\n $(document).on('smartResize', () => this.start());\n $(document).on(`${this.vPort}-on`, () => (this.isMobile = true));\n $(document).on(`${this.vPort}-off`, () => (this.isMobile = false));\n },\n\n extra() {},\n\n start() {\n this.computeHeaderHeight();\n if (this.selectors['stickyElements'].length) {\n /** @type {NodeListOf} */\n const matched = document.querySelectorAll(this.selectors['stickyElements'].join(','));\n if (!matched || !matched.length) return;\n\n matched.forEach(item => {\n const isHeader = item.matches(this.selectors['header']);\n this.makeSticky(item, isHeader);\n });\n }\n },\n\n /**\n * Make sure stickyElements are stick correctly\n * @param {HTMLElement} item\n * @param {boolean} isHeader\n */\n makeSticky(item, isHeader) {\n this.setTopValue(item, isHeader);\n this.postStickyActions(item, isHeader);\n // if IE use polyfill\n if (isIE) {\n Stickyfill.addOne(item);\n }\n },\n\n setTopValue(item, isHeader) {\n if (this._canSetTopValue(item, isHeader)) {\n item.style.top = this.headerHeight + 'px';\n }\n },\n\n /**\n * This is a magical method to run specific actions after making items sticky based on what is the item.\n * actions are saved in groups in this._actions object and they called dynamically.\n * @param {HTMLElement} item\n * @param {boolean} isHeader\n * @protected\n */\n postStickyActions: function (item, isHeader) {\n if (this._has(item, this.selectors['stickoParent'], true)) {\n this.stickoActions(item);\n }\n if (this._has(item, this.selectors['scrollThenFix'])) {\n this.scrollThenFixActions(item, isHeader);\n }\n },\n\n /**\n * Set sticko height to fill the viewport excluding the fixed header\n * @param {HTMLElement} item\n * @protected\n */\n stickoActions(item) {\n const stickoParent = item.querySelector(this.selectors['stickoParent']) || item;\n if (this.isHeaderSticky) stickoParent.style.height = `calc(100vh - ${this.headerHeight}px)`;\n else stickoParent.style.height = '100vh';\n document.addEventListener('change:auto-hide-bar', () => {\n item.style.top = `${fixedHeaderHeight()}px`;\n });\n },\n\n /**\n * Make it sticky as soon as reach the fixed element inside it\n * @param {HTMLElement} item\n * @param {boolean} isHeader\n */\n scrollThenFixActions(item, isHeader) {\n item.classList.add('fixed-element');\n let scrollThenFixOffset = item.querySelector(this.selectors['scrollThenFix']).offsetTop;\n scrollThenFixOffset -= !isHeader ? this.headerHeight : 0;\n item.style.top = `${-1 * scrollThenFixOffset}px`;\n },\n\n /**\n * Check if to use dynamic header height\n * @return {void}\n * @private\n */\n _isDynamicHeaderHeight() {\n if (!this.dynamicHeaderHeight) {\n for (let i = 0; i < this.selectors['dynamicHeader'].length; i++) {\n this.dynamicHeaderHeight = this._has(this.header, this.selectors['dynamicHeader'][i], true);\n if (this.dynamicHeaderHeight) break;\n }\n }\n },\n\n computeHeaderHeight() {\n this.headerHeight = fixedHeaderHeight(this.selectors['header']);\n },\n\n /**\n *\n * @param {HTMLElement} item\n * @param {string} selector\n * @param {boolean} [self]\n * @return {*|boolean}\n * @private\n */\n _has(item, selector, self) {\n return (\n item &&\n (item.querySelector(selector) !== null || // if item contains element matches the selector\n (self && item.matches(selector))) // or item itself matches the selector\n );\n },\n\n _canSetTopValue(item, isHeader) {\n return !isHeader && this.dynamicHeaderHeight && item.closest(this.selectors['header']) === null;\n },\n };\n})(UX);\n","// Todo: this file need to be refactored\nimport '../../../plugins/stickyElements/js/stickyElements';\nimport 'element-closest-polyfill';\n\n$(function () {\n const skipButtons = document.querySelectorAll('.skip-links button');\n if (skipButtons.length) {\n const handleSkip = e => {\n const targetId = e.currentTarget.getAttribute('data-id');\n const skipTo = document.querySelector(targetId);\n const elementRect = skipTo?.getBoundingClientRect();\n\n window.scrollTo({\n top: elementRect.top + window.scrollY, // Add the current scroll position\n behavior: 'smooth', // Use smooth scrolling\n });\n skipTo.focus();\n };\n\n skipButtons.forEach(button => {\n button.addEventListener('click', handleSkip);\n });\n }\n\n $('.logo-container a, .logo-container-mobile a, .institution > a').attr('tabindex', '2');\n\n $('.indivLogin').on('click', function () {\n setTimeout(() => {\n $(this).attr('aria-expanded', !$('.navigation-login-dropdown-container').hasClass('hidden'));\n }, 0);\n });\n $(document).on('click', function () {\n setTimeout(() => {\n $('.indivLogin').attr('aria-expanded', !$('.navigation-login-dropdown-container').hasClass('hidden'));\n }, 0);\n });\n\n let vPort = 'screen-md',\n institutionWrapperMobile = $('.institution-wrapper-mobile'),\n institutionWrapperDesktop = $('.institution-wrapper');\n\n institutionWrapperDesktop.removeAttr('aria-hidden');\n institutionWrapperMobile.attr('aria-hidden', 'true');\n\n $(document).on(vPort + '-on', function () {\n institutionWrapperDesktop.attr('aria-hidden', 'true');\n institutionWrapperMobile.removeAttr('aria-hidden');\n });\n\n $(document).on(vPort + '-off', function () {\n institutionWrapperDesktop.removeAttr('aria-hidden');\n institutionWrapperMobile.attr('aria-hidden', 'true');\n });\n\n if ($('.pb-ui').length && $('[aria-haspop]').length) {\n $.each($('[aria-haspop]'), function (index, $item) {\n $($item).removeAttr('aria-haspop').attr('aria-haspopup', 'true');\n });\n }\n\n $(window).on('load orientationchange', function () {\n if ($('.fixed-element').length) {\n setTimeout(function () {\n UX.stickyElements.init();\n }, 150);\n }\n });\n\n $(window).on('resize', function () {\n if ($('.fixed-element').length) {\n UX.stickyElements.init();\n }\n });\n\n const removeBackdropEl = () => {\n const modalBackdropList = UX.utils.convertToArray(document.querySelectorAll('.modal-backdrop.in'));\n modalBackdropList.forEach(item => {\n const itemParent = item.parentNode;\n itemParent.removeChild(item);\n });\n };\n\n const modalCloseButtons = UX.utils.convertToArray(document.querySelectorAll('.modal__dialog .close'));\n if (modalCloseButtons.length) {\n modalCloseButtons.forEach(button => {\n button.addEventListener('click', e => {\n removeBackdropEl();\n });\n });\n }\n\n const modalList = UX.utils.convertToArray(document.querySelectorAll('.modal'));\n if (modalList.length) {\n modalList.forEach(modal => {\n modal.addEventListener('click', e => {\n if (e.target === e.currentTarget) {\n removeBackdropEl();\n }\n });\n });\n }\n\n document.addEventListener('keydown', e => {\n const modalBackdropList = UX.utils.convertToArray(document.querySelectorAll('.modal-backdrop.in'));\n if (modalBackdropList.length && e.key.indexOf('Esc') > -1) {\n modalBackdropList.forEach(item => {\n const itemParent = item.parentNode;\n itemParent.removeChild(item);\n });\n if (UX.modal.$close) UX.modal.$close.trigger('click');\n }\n });\n\n const fixedSwitchEl = document.querySelector('.js--fixed-switch'),\n scrollableEl = fixedSwitchEl && fixedSwitchEl.querySelector('.scrollable-element');\n\n if (fixedSwitchEl && scrollableEl) {\n if (UX.test.isIE()) {\n const scrollableParent = scrollableEl.parentElement,\n paddingAmount = scrollableEl.offsetHeight,\n elTop = scrollableEl.offsetTop,\n scrollableParentPadding = scrollableParent.style.paddingTop,\n setScrollStatus = () => {\n if (window.pageYOffset > elTop && !scrollableEl.classList.contains('js--fixed')) {\n scrollableEl.classList.add('js--fixed');\n scrollableParent.style.paddingTop = `${paddingAmount}px`;\n } else if (window.pageYOffset <= elTop && scrollableEl.classList.contains('js--fixed')) {\n scrollableEl.classList.remove('js--fixed');\n scrollableParent.style.paddingTop = scrollableParentPadding;\n }\n };\n\n setScrollStatus();\n window.addEventListener('scroll', setScrollStatus);\n } else {\n fixedSwitchEl.classList.add('fixed-element');\n scrollableEl.classList.add('scrollThenFix');\n UX.stickyElements.init();\n }\n }\n\n const advertRail = UX.utils.convertToArray(document.querySelectorAll('.advert-rail, .advert-leaderboard'));\n\n if (advertRail.length) {\n const hideAdsIfCorrupted = () => {\n advertRail.forEach(item => {\n setTimeout(() => {\n if (typeof item.dataset.googleQueryId === 'undefined' && item.style.display !== 'none') {\n item.style.display = 'none';\n }\n }, 1000);\n });\n };\n\n window.addEventListener('load', hideAdsIfCorrupted);\n }\n\n const showRequestResetPasswordBtn = document.querySelector('.show-request-reset-password');\n showRequestResetPasswordBtn?.addEventListener('click', () => {\n const reCaptcha = document.querySelector('.g-recaptcha');\n if (reCaptcha) {\n const reCaptchaRoot = reCaptcha.parentNode;\n reCaptcha.remove();\n setTimeout(() => {\n reCaptchaRoot?.append(reCaptcha);\n }, 5000);\n }\n });\n\n const adverts = Array.from(document.querySelectorAll('.pb-las .advert'));\n\n if (adverts) {\n setTimeout(() => {\n adverts.forEach(advert => {\n advert.className += ' advert--no-spinner';\n });\n }, 3000);\n }\n});\n"],"sourceRoot":""}