{"version":3,"sources":["webpack:///./node_modules/ui-core/plugins/polyfills/js/Element/matches.js","webpack:///./node_modules/ui-core/plugins/polyfills/js/Element/closest.js","webpack:///./node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","webpack:///./node_modules/ui-core/widgets/raa/js/registration.js","webpack:///./node_modules/ui-core/components/modal/js/modal.js","webpack:///./node_modules/ui-core/components/accordion/js/accordion.js","webpack:///./node_modules/ui-core/components/drop-block/js/drop-block.js","webpack:///./node_modules/ui-core/components/alert-popup/js/alert-popup.js","webpack:///./node_modules/ui-core/components/back-to-top/js/back-to-top.js","webpack:///./node_modules/ui-theme/widgets/raa/js/raa.js","webpack:///./node_modules/ui-core/widgets/raa/js/raa.js","webpack:///./node_modules/ui-theme/components/raa/js/raa.js","webpack:///./node_modules/ui-core/plugins/drawer/js/menu-accessability.js","webpack:///./node_modules/ui-core/plugins/drawer/js/drawer.js","webpack:///./node_modules/ui-theme/plugins/drawer/js/drawer.js","webpack:///./node_modules/ui-core/plugins/modal/js/modal.js","webpack:///./node_modules/ui-core/widgets/quick-search/js/quick-search.ts","webpack:///./node_modules/ui-theme/widgets/quick-search/js/quick-search.ts","webpack:///./node_modules/ui-core/plugins/enquireJs/js/helper.ts","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/groups/_mobile-menu.js","webpack:///./node_modules/ui-core/plugins/polyfills/js/stickyfill.es.js","webpack:///./node_modules/ui-core/plugins/stickyElements/js/stickyElements.js","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/groups/_sticky.js","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/lazy-imports.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","document","documentElement","contains","parentElement","parentNode","nodeType","t","e","n","Object","keys","getOwnPropertySymbols","r","filter","getOwnPropertyDescriptor","enumerable","push","apply","arguments","length","i","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","Symbol","_typeof","iterator","constructor","value","configurable","writable","Array","isArray","from","o","TypeError","toString","call","slice","name","test","u","querySelector","a","createElement","append","insertAdjacentElement","insertBefore","getAttribute","focus","setAttribute","c","String","toLowerCase","normalize","replace","l","innerHTML","class","outerHTML","f","input","dispatchEvent","CustomEvent","bubbles","detail","feedback","cancelable","p","mode","diacritics","highlight","map","join","d","indexOf","substring","Promise","data","cache","store","src","then","h","searchEngine","resultItem","match","key","done","next","resultsList","maxResults","query","results","m","b","y","v","selection","index","g","isOpen","wrapper","list","removeAttribute","w","O","getElementsByTagName","tag","selected","split","cursor","classList","remove","add","id","scrollTop","offsetTop","clientHeight","A","k","L","event","j","HTMLInputElement","HTMLTextAreaElement","trigger","threshold","Error","noResults","DocumentFragment","concat","role","inside","element","S","E","placeHolder","placeholder","around","dest","destination","position","hidden","T","events","debounce","clearTimeout","setTimeout","keydown","keyCode","preventDefault","submit","tabSelect","blur","mousedown","click","toUpperCase","querySelectorAll","target","nodeName","addEventListener","x","init","start","unInit","removeChild","removeEventListener","open","close","goTo","previous","select","search","options","instances","selector","exports","module","define","$","window","jcf","setOptions","wrapNativeOnMobile","width","each","$this","$taxonomy","attr","$maxTags","chosen","max_selected_options","$body","$window","modal","$toggle","$target","revers","lastItem","items","$close","accessibilityEnabled","accessibility","control","$content","after","show","hide","removeAttr","on","find","is","focusCycle","bind","UX","controller","check","$autofocus","addClass","removeClass","tab","off","tabRevers","which","isMobile","accordion","$elements","$tabbedElements","$controllers","$tabbedControllers","isStickyBody","vPort","$responsiveElements","accVport","$responsiveTarget","collapseTabs","collapseAccordion","defaultCollapsed","hideAllBoolean","openedAccordion","hideDropBlock","initResponsive","logic","additionalControls","stopImmediatePropagation","dropBlock","hasClass","toggle","single","preventAccordionBehavior","tabbed","all","elem","hideAll","parentAccordion","parent","collapseTabsByDefault","getAccordionContent","additionalAjaxSuccess","$elem","getCustomAjaxUrl","buildAjaxUrl","ajaxUrl","widgetId","dropzoneId","encodeURIComponent","$parentTab","ajax","url","success","replaceWith","error","state","$accordionContent","contentTarget","slideToggle","height","toggleClass","$wrapper","accordionExpandedSingle","Event","checkExpandAll","$parent","$opened","children","slideUp","extraCollapseAccordionCheck","slideDown","expanded","accordionExpandedTabbed","text","$lazy","$expandElem","setViewports","parents","$targets","$controller","$parents","escape","$container","switchVal","$section","initialized","direction","pop","stopPropagation","isDataSlideTarget","disableOnMobile","dimensions","icon","first","loi","recalculate","additionalOnShow","back","$parentSection","additionalOnHide","$nested","current","ifContaind","wrapInner","nHeight","outerHeight","pOffset","offset","pLeft","left","nWidth","innerWidth","styles","container_offset","container_base","parent_base","top","right","css","switch","temp","undefined","alertPopup","config","$actions","$approve","$cancel","$url","set","controls","_this","action","onClick","currentTarget","href","redirect","location","backToTop","footerBackToTop","animate","body","isfooterVisible","docViewBottom","ready","signupForm","submitButton","val","toggleQuickSearch","loadInstitutionPage","selectDom","loginIntro","loginForm","loginPopup","menubar","$id","$rootItems","$items","$allItems","$activeItem","vmenu","bChildOpen","enter","esc","space","up","down","bindHandlers","handleKeyDown","keypress","handleKeyPress","handleFocus","handleDocumentClick","parentsUntil","altKey","ctrlKey","menu","processMenuChoice","not","moveUp","moveToPrevious","moveDown","moveToNext","last","prev","eq","html","charAt","shiftKey","fromCharCode","menuHeaderMainTitle","redirectPath","displayedNestedItems","nestedMenu","listPositionVars","mainScrollingList","inTimeoutTiming","outTimeoutTiming","mainScrollingListHeight","mobileTransitionTime","bodyTransitionPropertyName","bodyTransitionElapsedTime","$header","viewPort","responsive","additionalControl","rebuild","original","nested","hideNested","get","listPosition","handleHeightSet","handleResize","tabDesktop","escDesktop","showAdditional","showNested","siblings","$menuTitle","showNestedExtra","$parenNestedMenu","shouldNavigate","$menuHeader","hideNestedExtra","reset","$parentMenu","$dropdownToggle","$firstNestedMenu","$prevMenu","$nextMenu","handle","sub","addDataOnly","menuElements","timing","timeoutTime","addDataToElem","handleScrollBarHide","lastScrollVal","getLastPosition","scrollTo","rect","getBoundingClientRect","JSON","stringify","bottom","Math","floor","scrollVal","parse","elemsArr","parentHeightVal","innerHeight","subHeightVal","utils","isSafari","duration","abs","skipCheck","elapsedTime","propertyName","mainList","overflow","NAME","EVENT_KEY","JQUERY_NO_CONFLICT","fn","Default","backdrop","keyboard","DefaultType","HIDE","HIDE_PREVENTED","HIDDEN","SHOW","SHOWN","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","CLICK_DATA_API","ClassName","Selector","Modal","_classCallCheck","_config","_getConfig","_element","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_isTransitioning","_scrollbarWidth","_createClass","relatedTarget","showEvent","isDefaultPrevented","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","one","_showBackdrop","_showElement","_this2","hideEvent","transition","transitionDuration","Util","getTransitionDurationFromElement","TRANSITION_END","_hideModal","emulateTransitionEnd","dispose","htmlElement","removeData","handleUpdate","_objectSpread","typeCheckConfig","_triggerBackdropTransition","_this3","hideEventPrevented","defaultPrevented","modalTransitionDuration","_this4","modalBody","Node","ELEMENT_NODE","appendChild","style","display","reflow","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","parseFloat","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","clientWidth","_jQueryInterface","_this11","getSelectorFromElement","tagName","Constructor","noConflict","autocompleteResultItem","citationSearchJournalField","citationSearch","hideAutoComplete","qsAutocomplete","qsForms","qsDropdowns","qsHeaderWrapper","qsSeriesKey","qsItems","autocompleteSelectedResultItem","citationSearchDoiField","citationSubmit","inputGroup","journalSearchHideAutocompleteWrapper","autoCompleteWrapper","searchType","seriesKey","_autoCompleteOptions","domUtils","getElement","activeDropdownJournal","selectors","hs","pts","ptgs","ptfs","ts","cs","pt","initialize","_URLParameters","URLParameters","setAutoCompleteOptions","setActiveJournal","isAutocompleteOn","browserUtils","isIE","initAutocomplete","addEventListeners","getElements","isSelectOnly","elementRenderer","item","ele","autoCompleteOptions","paramFormatted","innerText","record","label","getConfigs","quickSearchElm","autoCompleteObj","buildFetchURL","fetch","json","resultListConfig","defaultConfigs","handleAutoCompleteOptions","containsClasses","initAutoCompleteInstance","configs","onSelection","render","idName","ceil","random","resultListDestination","autcompleteInstances","Map","QuickSearchElm","onKeyDown","form","onFormSubmit","handleDropdownCollapse","registerCitationSearchEvents","autocompleteAnnouncer","announcerContainer","autocompleteLists","observer","MutationObserver","mutationsList","mutation","observe","childList","submitForm","submitWithoutChoosingValue","selectedItemId","reserveSearchInputOnJournalChange","activeJournalForm","changeSubmitButtonState","onCitationSearchDoiField","hasValue","dataset","journalCitationInputs","toggleClasses","disabled","allEmpty","validator","isNotEmpty","parameters","entries","reduce","acc","prop","term","trim","parseInt","autoCompleteMaxWords","autoCompleteMaxChars","QuickSearch","Elements","ClassList","Texts","HTMLElement","menuQS","opened","a11yFocus","journalSearch","quickLinksWrapper","quickLinks","toggler","quickSearchFormContainer","getter","setter","param","getCurrentAutoComplete","field","registerAutoCompleteInputEvents","registerTogglerOverlayEvents","registerAutoCompleteFocus","onAutocompleteInputKeydown","onToggleClick","onBodyClick","hasMenu","onAutoCompleteInputFocusChange","onQuickLinksFocusChange","focused","toggleFocusClasses","addClasses","autoComplete","link","removeA11yClasses","removeClasses","newVal","propertyKey","onEvent","offEvent","getPrototypeOf","main","$menu","err","console","seppuku","getComputedStyle","testNode","some","prefix","isInitialized","shadowRootExists","ShadowRoot","scroll","stickies","extend","targetObj","sourceObject","hasOwnProperty","parseNumeric","getDocOffsetTop","node","docOffsetTop","offsetParent","Sticky","sticky","_node","_stickyMode","_active","refresh","_removed","_deactivate","nodeComputedStyle","nodeComputedProps","marginTop","marginBottom","marginLeft","cssFloat","isNaN","originalPosition","referenceNode","host","nodeWinOffset","parentWinOffset","parentComputedStyle","_parent","offsetHeight","_offsetToWindow","_offsetToParent","borderTopWidth","borderLeftWidth","borderRightWidth","_styles","nodeTopValue","_limits","pageYOffset","end","borderBottomWidth","parentPosition","_recalcPosition","clone","_clone","border","borderSpacing","fontSize","stickyMode","_fastCheck","splice","Stickyfill","forceSticky","refreshAll","addOne","nodeList","addedStickies","_loop","removeOne","_loop2","removeAll","fastCheckTimer","docHiddenKey","visibilityChangeEventName","checkScroll","startFastCheckTimer","stopFastCheckTimer","clearInterval","pageXOffset","setInterval","stickyElements","header","scrollThenFix","dynamicHeader","stickoParent","isHeaderSticky","dynamicHeaderHeight","unshift","_isDynamicHeaderHeight","extra","computeHeaderHeight","matched","isHeader","makeSticky","setTopValue","postStickyActions","_canSetTopValue","headerHeight","_has","stickoActions","scrollThenFixActions","fixedHeaderHeight","scrollThenFixOffset","self","$modal","getElementsByClassName","$accordion","$dropBlock","$alertPopup","$backToTop","$quickSearch","$editorialBoard","scrollIndicator","topBanner","quickSearch","editorialBoard","mobileMenuMain","stickyMain","toPropertyKey","_defineProperty","__esModule"],"mappings":"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","file":"js/vendors~lazy-imports-1daa241f9af22daba141.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","var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?e(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u=function(e){return\"string\"==typeof e?document.querySelector(e):e()},a=function(e,t){var n=\"string\"==typeof e?document.createElement(e):e;for(var r in t){var i=t[r];if(\"inside\"===r)i.append(n);else if(\"dest\"===r)u(i[0]).insertAdjacentElement(i[1],n);else if(\"around\"===r){var o=i;o.parentNode.insertBefore(n,o),n.append(o),null!=o.getAttribute(\"autofocus\")&&o.focus()}else r in n?n[r]=i:n.setAttribute(r,i)}return n},c=function(e,t){return e=String(e).toLowerCase(),t?e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\").normalize(\"NFC\"):e},l=function(e,n){return a(\"mark\",t({innerHTML:e},\"string\"==typeof n&&{class:n})).outerHTML},f=function(e,t){t.input.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:t.feedback,cancelable:!0}))},p=function(e,t,n){var r=n||{},i=r.mode,o=r.diacritics,s=r.highlight,u=c(t,o);if(t=String(t),e=c(e,o),\"loose\"===i){var a=(e=e.replace(/ /g,\"\")).length,f=0,p=Array.from(t).map((function(t,n){return f<a&&u[n]===e[f]&&(t=s?l(t,s):t,f++),t})).join(\"\");if(f===a)return p}else{var d=u.indexOf(e);if(~d)return e=t.substring(d,d+e.length),d=s?t.replace(e,l(e,s)):t}},d=function(e,t){return new Promise((function(n,r){var i;return(i=e.data).cache&&i.store?n():new Promise((function(e,n){return\"function\"==typeof i.src?i.src(t).then(e,n):e(i.src)})).then((function(t){try{return e.feedback=i.store=t,f(\"response\",e),n()}catch(e){return r(e)}}),r)}))},h=function(e,t){var n=t.data,r=t.searchEngine,i=[];n.store.forEach((function(s,u){var a=function(n){var o=n?s[n]:s,u=\"function\"==typeof r?r(e,o):p(e,o,{mode:r,diacritics:t.diacritics,highlight:t.resultItem.highlight});if(u){var a={match:u,value:s};n&&(a.key=n),i.push(a)}};if(n.keys){var c,l=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","$(function () {\n    window.jcf.setOptions('Select', {\n        wrapNativeOnMobile: false,\n    });\n    window.jcf.replace('.literatumProfileMainWidget .select select:not([multiple=\"multiple\"])');\n    if ($(window).width() < 992) {\n        const $select = $('select[multiple=\"multiple\"]');\n        $select.each(function () {\n            var $this = $(this);\n            var $taxonomy = $this.attr('id').split('.');\n            var $taxonomyCode = $('[name=\"' + $taxonomy[0] + '.code\"]');\n            var $maxTags = $taxonomyCode.data('maxtags').split('.');\n            $maxTags = $maxTags[0];\n            $this.chosen({max_selected_options: $maxTags});\n        });\n    }\n});\n","(function () {\n    var $body = $('body'),\n        $window = $(window),\n        tabKey = 9,\n        shift = 16;\n\n    var modal = {\n        $toggle: $('[data-toggle=\"modal\"]'),\n        $target: null,\n        revers: false,\n        lastItem: null,\n        items: null,\n        $close: null,\n        accessibilityEnabled: true,\n\n        init: function () {\n            if (this.accessibilityEnabled) modal.accessibility.init();\n            modal.$target = $(modal.$toggle.data('target'));\n            modal.control();\n        },\n        accessibility: {\n            init: function () {\n                // Move every modal outside of content in order to be able hide and show page content for screen readers\n                // @note: for some reason, it is not working with tab trap correctly, when we append it to body - after(.content) works fine\n                var $content = $('main.content');\n                if ($content.length) {\n                    $content.after($('.ux-modal-container'));\n                }\n                // Text for close buttons\n                $('[data-dismiss=\"modal\"]').append('<span class=\"sr-only\">Close modal</span>');\n            },\n            show: function () {\n                $('.content, .footer, .header').attr('aria-hidden', true);\n            },\n            hide: function () {\n                $('.content, .footer, .header').removeAttr('aria-hidden');\n            },\n        },\n        control: function () {\n            $body.on('click', '[data-toggle=\"modal\"]', function (e) {\n                e.preventDefault();\n                modal.$toggle = $(this);\n                modal.$target = $(modal.$toggle.data('target'));\n                modal.$close = modal.$target.find('.close');\n                modal.items = modal.$target.find('a, button, input');\n                modal.items.each(function (index) {\n                    if (index === modal.items.length - 1) {\n                        modal.lastItem = $(this);\n                    }\n                });\n                modal.on.show();\n            });\n\n            $body.on('click', '.modal', function (e) {\n                var target = $(e.target);\n                if (!target.is('.modal__dialog') && !target.closest('.modal__dialog').length > 0) {\n                    //e.preventDefault();\n                    modal.on.hide();\n                }\n            });\n\n            $body.on('click', '[data-dismiss=\"modal\"]', function (e) {\n                modal.on.hide();\n            });\n\n            $('.modal').on('keydown', modal.focusCycle.bind(modal));\n\n            $window.on('keyup', function (e) {\n                if (e.keyCode === shift) {\n                    modal.revers = false;\n                }\n            });\n        },\n        on: {\n            show: function (e) {\n                if (typeof UX.controller !== 'undefined') {\n                    UX.controller.check();\n                }\n                setTimeout(function () {\n                    $body.attr('data-active', 'modal');\n                    modal.accessibility.show();\n                    const $autofocus = modal.$target.find('[autofocus]');\n                    if ($autofocus.length) $autofocus.focus();\n                    else modal.$close.focus();\n                }, 250);\n                modal.$target.closest(\"[class*='sticko']\").addClass('js--open');\n                $('#externalEmailDialogForm').addClass('pairing-management-modal');\n            },\n            hide: function () {\n                $body.removeAttr('data-active');\n                modal.accessibility.hide();\n                modal.$target.closest(\"[class*='sticko']\").removeClass('js--open');\n            },\n            tab: function () {\n                modal.$close.off('focusout');\n                modal.lastItem.off('focusout');\n                modal.lastItem.on('focusout', function () {\n                    modal.$close.focus();\n                });\n            },\n            tabRevers: function () {\n                modal.lastItem.off('focusout');\n                modal.$close.off('focusout');\n                modal.$close.on('focusout', function () {\n                    modal.lastItem.focus();\n                });\n            },\n        },\n        focusCycle: function (e) {\n            if (e.keyCode === shift) {\n                modal.revers = true;\n            }\n\n            if ((e.keyCode || e.which) === tabKey) {\n                if (!modal.revers) {\n                    modal.on.tab();\n                } else {\n                    modal.on.tabRevers();\n                }\n            }\n        },\n    };\n\n    UX.modal = modal; // add to global namespace\n})();\n","(function () {\n    var $body = $('body'),\n        isMobile = false;\n\n    var accordion = {\n        $elements: $('.accordion'),\n        $tabbedElements: $('.accordion-tabbed'),\n        $controllers: $('.accordion__control'), //@todo: remove ambiguous DOM searches for elements that are unused and move other into init function\n        $tabbedControllers: $('.accordion-tabbed__control'),\n        isMobile: false,\n        isStickyBody: false,\n        vPort: 'screen-sm',\n        $responsiveElements: $('[data-accordion-vport]'),\n        accVport: [],\n        $responsiveTarget: [],\n        collapseTabs: false,\n        collapseAccordion: true, // collapse accordion on open new accordion\n        defaultCollapsed: true, // collapse accordion on pageload\n        hideAllBoolean: true,\n        openedAccordion: 0,\n        hideDropBlock: true,\n\n        init: function () {\n            accordion.initResponsive();\n            accordion.logic($('.accordion-tabbed')); // collapse all accordions on page load\n            accordion.control();\n            accordion.additionalControls();\n        },\n        additionalControls: function () {},\n        control: function () {\n            $body.on('click', '.accordion__control', function (e) {\n                e.stopImmediatePropagation();\n                // This check is needed on Safari browser in order to close the dropblock if its opened\n                if ($body.attr('data-active') === 'dropBlock' && accordion.hideDropBlock) {\n                    UX.dropBlock.on.hide();\n                }\n                const attr = $(this).is('[data-slide-target]');\n                // Check if its external link or if its slide controll and mobile view port\n                if ($(this).hasClass('external') || (typeof attr !== typeof undefined && attr !== false && isMobile)) {\n                    return; // do nothing\n                } else {\n                    e.preventDefault();\n                    const $this = $(this);\n                    accordion.on.toggle.single($this);\n                }\n\n                $(this).trigger('accordion:controlClick');\n            });\n            if (config.enableAccordionTypeSingle || config.enableAccordionTypeSubsection) {\n                $body.on('click', '.accordion-tabbed__control', function (e) {\n                    const attr = $(this).is('[data-slide-target]');\n                    // Check if its external link or if its slide controll and mobile view port or prevent accordion behavior\n                    if (\n                        $(this).hasClass('external') ||\n                        (typeof attr !== typeof undefined && attr !== false && isMobile) ||\n                        accordion.preventAccordionBehavior($(this))\n                    ) {\n                        return; // do nothing\n                    } else {\n                        e.preventDefault();\n                        const $this = $(this);\n                        accordion.on.toggle.tabbed($this);\n                    }\n                });\n            }\n\n            if (config.enableAccordionExpandAll) {\n                $body.on('click', '.expand-all', function (e) {\n                    e.preventDefault();\n                    const $this = $(this);\n                    accordion.on.toggle.all($this);\n                });\n            }\n\n            $(document).on(accordion.vPort + '-on', function () {\n                // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n                isMobile = true;\n            });\n\n            $(document).on(accordion.vPort + '-off', function () {\n                // Waiting for custom event that will be triggered by controller.js to deactivate responsive effects\n                isMobile = false;\n            });\n        },\n        logic: function (elem) {\n            if (accordion.hideAllBoolean) {\n                accordion.hideAll();\n            }\n\n            accordion.$tabbedElements = elem;\n\n            accordion.$tabbedElements.each(function () {\n                var $this = $(this),\n                    parentAccordion = $this.closest('.accordion');\n\n                if (parentAccordion.parent('[data-default-collapsed]').length) {\n                    accordion.defaultCollapsed = parentAccordion.parent().data('default-collapsed');\n                }\n\n                $this.find('.accordion-tabbed__tab').each(function (index) {\n                    var $this = $(this);\n                    if (accordion.defaultCollapsed || accordion.defaultCollapsed === 'all') {\n                        if (accordion.preventAccordionBehavior($this)) {\n                            return;\n                        }\n                        if (\n                            !accordion.collapseTabsByDefault(this) &&\n                            index === accordion.openedAccordion &&\n                            !$this.hasClass('accordion__closed')\n                        ) {\n                            $this.addClass('js--open');\n                            $this.find('.accordion-tabbed__control').attr('aria-expanded', 'true');\n                            $this.find('.accordion-tabbed__content').show();\n                            if ($this.find('.accordion-lazy').length) {\n                                accordion.getAccordionContent($this.find('.accordion-lazy'));\n                            }\n                        } else {\n                            $this.removeClass('js--open');\n                            $this.find('.accordion-tabbed__control').attr('aria-expanded', 'false');\n                            $this.find('.accordion-tabbed__content').hide();\n                        }\n                    } else {\n                        $this.addClass('js--open');\n                        $this.find('.accordion-tabbed__control').attr('aria-expanded', 'true');\n                        $this.find('.accordion-tabbed__content').show();\n                    }\n                });\n            });\n        },\n        collapseTabsByDefault: function () {\n            return accordion.collapseTabs;\n        },\n        additionalAjaxSuccess: function ($elem) {},\n        getCustomAjaxUrl: function ($elem) {},\n        buildAjaxUrl: function ($elem) {\n            let ajaxUrl;\n            var hasCustomUrl =\n                typeof $elem.attr('data-custom-url') !== 'undefined' && $elem.attr('data-custom-url') === 'true';\n            if (hasCustomUrl) {\n                ajaxUrl = accordion.getCustomAjaxUrl($elem);\n            } else {\n                const widgetId = $elem.attr('data-widgetid');\n                const dropzoneId = $elem.attr('data-dropzoneid');\n                const pbContext = encodeURIComponent($('meta[name=pbContext]').attr('content'));\n                ajaxUrl =\n                    '/pb/widgets/accordion/loadTab?pbContext=' +\n                    pbContext +\n                    '&widgetId=' +\n                    widgetId +\n                    '&dropZoneId=' +\n                    dropzoneId;\n            }\n            return ajaxUrl;\n        },\n        getAccordionContent: function ($elem) {\n            var ajaxUrl = accordion.buildAjaxUrl($elem);\n            var $parentTab = $elem.parent();\n            $.ajax({\n                url: ajaxUrl,\n                success: function (data) {\n                    $elem.closest('.accordion-tabbed__tab').attr('data-ajaxLoaded', 'true');\n                    $elem.replaceWith(data);\n                    if ($parentTab.find('.accordion-tabbed').length) {\n                        accordion.logic($parentTab.find('.accordion-tabbed'));\n                    }\n                    $parentTab.find('.accordion__spinner').remove();\n                    accordion.additionalAjaxSuccess($parentTab);\n                },\n                error: function () {},\n            });\n        },\n        on: {\n            toggle: {\n                single: function ($this) {\n                    let state;\n                    var $accordionContent = $this.next('.accordion__content');\n                    if (typeof $this.attr('data-content-target') !== 'undefined') {\n                        const contentTarget = $this.attr('data-content-target');\n                        $accordionContent = $(contentTarget);\n                    }\n                    $accordionContent.slideToggle(200, function () {\n                        if ($this.parent().hasClass('article-accordion')) {\n                            $('.article-row-left').height('auto');\n                            accordion.isStickyBody = state;\n                        }\n                    });\n                    $this.toggleClass('js--open');\n\n                    const $wrapper = $this.closest('.expandable-accordion');\n\n                    state = !($this.attr('aria-expanded') === 'true');\n                    $this.attr('aria-expanded', state);\n                    const accordionExpandedSingle = $.Event('accordion:expandedSingle');\n                    $(document).trigger(accordionExpandedSingle, [$this, $accordionContent]);\n                    if ($wrapper.length) accordion.on.checkExpandAll($this, state, $wrapper);\n                },\n                tabbed: function ($this) {\n                    const $parent = $this.closest('.accordion-tabbed__tab');\n                    const $opened = $this.closest('.accordion-tabbed').children('.js--open');\n\n                    const state = !($this.attr('aria-expanded') === 'true');\n                    $this.attr('aria-expanded', state);\n                    const $wrapper = $this.closest('.expandable-accordion');\n                    if ($wrapper.length) accordion.on.checkExpandAll($this, state, $wrapper);\n                    if (!$parent.hasClass('js--open')) {\n                        if (accordion.collapseAccordion || accordion.extraCollapseAccordionCheck($parent)) {\n                            $opened.children('.accordion-tabbed__content').slideUp(200);\n                        }\n                        $parent.children('.accordion-tabbed__content').slideDown(200, function () {\n                            if (accordion.collapseAccordion || accordion.extraCollapseAccordionCheck($parent)) {\n                                $opened.removeClass('js--open');\n                            }\n\n                            $parent.addClass('js--open');\n                            if ($parent.attr('data-ajaxLoaded') !== 'true' && $parent.find('.accordion-lazy').length) {\n                                accordion.getAccordionContent($parent.find('.accordion-lazy'));\n                            }\n                            accordion.on.expanded($this);\n                            const accordionExpandedTabbed = $.Event('accordion:expandedTabbed');\n                            $(document).trigger(accordionExpandedTabbed, [$this]);\n                        });\n                    } else {\n                        $parent.children('.accordion-tabbed__content').slideUp(200, function () {\n                            $this.removeClass('js--open');\n                            $parent.removeClass('js--open');\n                            // @fixme: work with aria-expanded is missing here, so it doesn't work correct\n                        });\n                    }\n                },\n                all: function ($this) {\n                    var $wrapper = $this.closest('.expandable-accordion');\n                    var state = !($this.attr('aria-expanded') === 'true');\n\n                    $this.attr('aria-expanded', state);\n                    if (state) {\n                        $wrapper.find('.accordion-tabbed__tab').addClass('js--open');\n                        $wrapper\n                            .find('.accordion__control, .accordion-tabbed__control')\n                            .addClass('js--open')\n                            .attr('aria-expanded', state);\n                        $wrapper.find('.accordion__content, .accordion-tabbed__content').slideDown(200);\n\n                        $this.text('Hide All');\n\n                        const $lazy = $wrapper.find('[data-ajaxLoaded]');\n                        $lazy.each(function () {\n                            if ($lazy.attr('[data-ajaxLoaded]') !== 'true' && $lazy.find('.accordion-lazy').length) {\n                                accordion.getAccordionContent($lazy.find('.accordion-lazy'));\n                            }\n                        });\n                    } else {\n                        $wrapper.find('.accordion-tabbed__tab').removeClass('js--open');\n                        $wrapper\n                            .find('.accordion__control, .accordion-tabbed__control')\n                            .removeClass('js--open')\n                            .attr('aria-expanded', state);\n                        $wrapper.find('.accordion__content, .accordion-tabbed__content').slideUp(200);\n\n                        $this.text('Expand All');\n                    }\n                },\n            },\n            expanded: function ($this) {},\n            checkExpandAll: function ($this, state, $wrapper) {\n                let $expandElem;\n                if ($wrapper.length) {\n                    $expandElem = $wrapper.find('.expand-all');\n                }\n\n                if ($expandElem.length && $expandElem.attr('aria-expanded') === 'true') {\n                    $expandElem.attr('aria-expanded', state);\n                    if (state) $expandElem.text('Hide All');\n                    else $expandElem.text('Expand All');\n                }\n            },\n        },\n        hideAll: function () {\n            //Hide accordion content on load (in case of disabled JS, the accordion should be open)\n            accordion.$elements.each(function () {\n                var $this = $(this);\n                $this.find('.accordion__control').attr('aria-expanded', 'false');\n                if (!$this.find('.accordion__content').hasClass('js--open')) {\n                    $this.find('.accordion__content').hide();\n                } else if ($this.find('.accordion__content').hasClass('js--open')) {\n                    $this.find('.accordion__control').attr('aria-expanded', 'true');\n                } else {\n                    $this.find('.accordion__content').removeClass('js--open');\n                }\n            });\n        },\n        initResponsive: function () {\n            if (accordion.$responsiveElements.length) {\n                accordion.$responsiveElements.each(function (index) {\n                    accordion.$responsiveTarget[index] = $(this);\n                    accordion.accVport[index] = $(this).data('accordion-vport');\n                    accordion.setViewports(index);\n                });\n            }\n        },\n        extraCollapseAccordionCheck: function ($parent) {\n            return accordion.collapseAccordion;\n        },\n        setViewports: function (index) {\n            $(document).on(accordion.accVport[index] + '-on', function () {\n                var target = accordion.$responsiveTarget[index];\n                if (target.data('accordion-vport') === accordion.accVport[index]) {\n                    target.addClass('accordion-vport--res');\n                    if (target.data('accordion-option') === 'with-arrow') {\n                        target.addClass('accordion-with-arrow');\n                    }\n                    accordion.logic(accordion.$responsiveTarget[index].find('.accordion-tabbed'));\n                }\n            });\n\n            $(document).on(accordion.accVport[index] + '-off', function () {\n                // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n                var target = accordion.$responsiveTarget[index];\n                if (target.data('accordion-vport') === accordion.accVport[index]) {\n                    target.removeClass('accordion-vport--res accordion-with-arrow');\n                    target.find('.accordion-tabbed__content').show();\n                }\n            });\n        },\n    };\n    if (config.enableAccordionTypeSubsection || config.enableAccordionTypeSingle) {\n        accordion.on.toggle.single = function ($this) {\n            let state;\n            var $accordionContent = $this.next('.accordion__content');\n            if (typeof $this.attr('data-content-target') !== 'undefined') {\n                const contentTarget = $this.attr('data-content-target');\n                $accordionContent = $(contentTarget);\n            }\n            $accordionContent.slideToggle(200, function () {\n                if ($this.parent().hasClass('article-accordion')) {\n                    $('.article-row-left').height('auto');\n                    accordion.isStickyBody = state;\n                }\n            });\n            $this.toggleClass('js--open');\n\n            const $wrapper = $this.closest('.expandable-accordion');\n\n            state = !($this.attr('aria-expanded') === 'true');\n            $this.attr('aria-expanded', state);\n            const accordionExpandedSingle = $.Event('accordion:expandedSingle');\n            $(document).trigger(accordionExpandedSingle, [$this, $accordionContent]);\n            if ($wrapper.length) accordion.on.checkExpandAll($this, state, $wrapper);\n        };\n    }\n    if (config.enableAccordionExpandAll) {\n        accordion.on.toggle.all = function ($this) {\n            var $wrapper = $this.closest('.expandable-accordion');\n            var state = !($this.attr('aria-expanded') === 'true');\n\n            $this.attr('aria-expanded', state);\n            if (state) {\n                $wrapper.find('.accordion-tabbed__tab').addClass('js--open');\n                $wrapper\n                    .find('.accordion__control, .accordion-tabbed__control')\n                    .addClass('js--open')\n                    .attr('aria-expanded', state);\n                $wrapper.find('.accordion__content, .accordion-tabbed__content').slideDown(200);\n\n                $this.text('Hide All');\n\n                const $lazy = $wrapper.find('[data-ajaxLoaded]');\n                $lazy.each(function () {\n                    if ($lazy.attr('[data-ajaxLoaded]') !== 'true' && $lazy.find('.accordion-lazy').length) {\n                        accordion.getAccordionContent($lazy.find('.accordion-lazy'));\n                    }\n                });\n            } else {\n                $wrapper.find('.accordion-tabbed__tab').removeClass('js--open');\n                $wrapper\n                    .find('.accordion__control, .accordion-tabbed__control')\n                    .removeClass('js--open')\n                    .attr('aria-expanded', state);\n                $wrapper.find('.accordion__content, .accordion-tabbed__content').slideUp(200);\n\n                $this.text('Expand All');\n            }\n        };\n    }\n    if (config.enableAccordionBehaviorOnlyOnSpecificViewPort) {\n        accordion.preventAccordionBehavior = function ($this) {\n            return !!$this.parents('[data-accordion-vport]:not(.accordion-vport--res)').length;\n        };\n    }\n    if (!config.enableAccordionBehaviorOnlyOnSpecificViewPort) {\n        accordion.preventAccordionBehavior = () => true;\n    }\n    UX.accordion = accordion; // add to global namespace\n})();\n","// tabs.js calls UX.dropBlock.init(); on line 260\n// profile-menu.js calls UX.dropBlock.init(); on line 53\n\n(function () {\n    var $window = $(window),\n        $body = $('body');\n\n    var dropBlock = {\n        $controllers: $('[data-db-target-for]'),\n        $targets: null, // Holds all targets in Dom\n        $controller: null, // Current drop down controller\n        $target: null, // Current target down controller element\n        $parents: null, // Hodls all parents in Dom\n        $parent: null, // Current parent element\n        escape: 27,\n        $container: $('.container'),\n        switchVal: null,\n        $section: $('.dropBlock__holder'),\n        vPort: 'screen-sm',\n        isMobile: false,\n        initialized: false,\n        direction: 'left', // left , right\n        pop: 'down', // up , down\n\n        init: function () {\n            dropBlock.control();\n        },\n\n        control: function () {\n            if (dropBlock.initialized) {\n                return;\n            }\n            dropBlock.initialized = true;\n\n            $(document).on('click', '[data-db-target-for]', function (e) {\n                e.preventDefault();\n                e.stopPropagation();\n\n                const isOpen = $(this).hasClass('js--open'),\n                    isDataSlideTarget = $(this).is('[data-slide-target]'),\n                    disableOnMobile = $(this).data('db-sm-disable') || false;\n\n                dropBlock.$controller = $(this);\n                dropBlock.find.target();\n\n                if (isOpen) {\n                    dropBlock.on.hide();\n                } else {\n                    if (dropBlock.isMobile && (isDataSlideTarget !== false || disableOnMobile)) {\n                        return;\n                    } else {\n                        dropBlock.on.show(e);\n                    }\n                }\n            });\n\n            $(document).on(\n                'click',\n                '.coolBar:not(.loi__banner) [data-db-target-of] a:not([data-slide-target])',\n                function (e) {\n                    dropBlock.on.hide();\n                }\n            );\n\n            $window.on('resize', function () {\n                if (dropBlock.$parent != null) {\n                    dropBlock.find.dimensions();\n                }\n            });\n\n            $(document).on(dropBlock.vPort + '-on', function () {\n                // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n                dropBlock.isMobile = true;\n            });\n            $(document).on(dropBlock.vPort + '-off', function () {\n                // Waiting for custom event that will be triggered by controller.js to deactivate responsive effects\n                dropBlock.isMobile = false;\n            });\n        },\n        on: {\n            show: function (e) {\n                // show  target element\n\n                if (!dropBlock.$controller.closest('.dropBlock__holder').length) {\n                    if (typeof UX.controller != 'undefined') {\n                        UX.controller.check(e);\n                    }\n                }\n\n                if (dropBlock.$target) {\n                    dropBlock.$controller.trigger('dropBlock:open', [dropBlock]);\n\n                    dropBlock.$target.addClass('js--open');\n                    dropBlock.$controller.addClass('js--open');\n                    $body.attr('data-active', 'dropBlock');\n                    dropBlock.$target.closest(\"[class*='sticko']\").addClass('js--open');\n                    dropBlock.switch.icon();\n                    // Move focus to active inner component, or leave focus on control\n                    dropBlock.$target.find('.active :tabbable').first().focus();\n\n                    // Accessibility\n                    dropBlock.$controller.attr({'aria-expanded': 'true'});\n                    dropBlock.$target.removeAttr('aria-hidden');\n\n                    // @fixme - this should not be here at all - it should be moved to proper component\n                    const isLoi = dropBlock.$target.find('.loi').length > 0;\n                    if (isLoi) {\n                        dropBlock.$target.find('.loi__list').each(function () {\n                            UX.loi.on.recalculate($(this));\n                        });\n                    }\n                    dropBlock.$controller.trigger('dropBlock:opened', [dropBlock]);\n                }\n                dropBlock.additionalOnShow();\n            },\n            hide: function () {\n                // hide target element\n                if (dropBlock.$target) {\n                    dropBlock.$controller.trigger('dropBlock:close', [dropBlock]);\n\n                    // Close current target\n                    dropBlock.$controller.removeClass('js--open');\n                    dropBlock.$target.removeClass('js--open');\n                    // Play nicely with others ...\n                    // For plugins which don't use js--open class but uses .hide .show methods instead, reset them ...\n                    // For example LOA accordion\n                    if (dropBlock.$target.attr('style')) {\n                        dropBlock.$target.removeAttr('style');\n                    }\n                    // Explicitly for our accordion working as a drop-block\n                    dropBlock.$target.closest(\"[class*='accordion-tabbed__tab']\").removeClass('js--open');\n\n                    dropBlock.$target.closest(\"[class*='sticko']\").removeClass('js--open');\n\n                    dropBlock.switch.back();\n\n                    // Accessibility - Inform screen readers\n                    dropBlock.$controller.attr({'aria-expanded': 'false'});\n                    dropBlock.$target.attr({'aria-hidden': 'true'});\n\n                    // Nested dropBlocks close handling\n                    if (dropBlock.$parentSection && dropBlock.$parentSection.length) {\n                        // Nested ones - set parent after closing self - will close parent in second round\n                        dropBlock.$controller = $(\n                            '[data-db-target-for=\"' + dropBlock.$parentSection.attr('data-db-target-of') + '\"]'\n                        );\n                        dropBlock.find.target();\n                    } else {\n                        // If we want to close last drop block, than there is no more active component\n                        if ($body.attr('data-active') === 'dropBlock') {\n                            $body.removeAttr('data-active');\n                            $('body, html').removeClass('lock-screen'); // @todo investigate if this is needed for drop Blocks or was copied out of other component\n                        }\n                    }\n                    if (dropBlock.$target) {\n                        dropBlock.$target.find('input:focus').blur();\n                    }\n                    dropBlock.$controller.trigger('dropBlock:closed', [dropBlock]);\n                }\n                dropBlock.additionalOnHide();\n            },\n            escape: function () {\n                // hide target if user clicks escape key\n                // @fixme this seems unused and deprecated by controller.js\n                if (dropBlock.$target != null) {\n                    dropBlock.on.hide();\n                }\n            },\n        },\n        find: {\n            target: function () {\n                // get the target element if existed\n                if ($('[data-db-target-of]').length) {\n                    dropBlock.$targets = $('[data-db-target-of]');\n                    dropBlock.$target = $(\n                        '[data-db-target-of=' + dropBlock.$controller.attr('data-db-target-for') + ']'\n                    );\n                    dropBlock.$section = dropBlock.$target;\n                    const $nested = dropBlock.$section.parents('.dropBlock__holder');\n                    if ($nested.length) {\n                        dropBlock.$parentSection = $nested;\n                    } else {\n                        dropBlock.$parentSection = null;\n                    }\n                    dropBlock.find.parent();\n                }\n            },\n            parent: function () {\n                // get the parent element if existed\n\n                dropBlock.$parent = null;\n                dropBlock.$parents = $('[data-db-parent-of]');\n\n                if (dropBlock.$parents.length) {\n                    dropBlock.$parents.each(function () {\n                        const current = dropBlock.$controller.attr('data-db-target-for');\n                        let parentFor = $(this).data('db-parent-of').split(',');\n\n                        if (parentFor.indexOf(current) !== -1) {\n                            dropBlock.$parent = $(this);\n                            return false;\n                        }\n                    });\n\n                    if (dropBlock.$parent != null) {\n                        dropBlock.find.dimensions();\n                        dropBlock.find.ifContaind();\n                    }\n                }\n            },\n            ifContaind: function () {\n                // check if it parent or target has container element\n                if (dropBlock.$parent.find('.container').length && !dropBlock.$target.find('.container').length) {\n                    dropBlock.$target.wrapInner(\"<div class='container'></div>\");\n                }\n            },\n            dimensions: function () {\n                // count the top and left position of the target element based on teh parent element\n\n                var nHeight = dropBlock.$parent.outerHeight(),\n                    pOffset = dropBlock.$parent.offset(),\n                    pLeft = pOffset.left,\n                    nWidth = dropBlock.$parent.innerWidth(),\n                    styles = {},\n                    container_offset = pOffset;\n\n                dropBlock.$container = $('.container');\n                if (dropBlock.$container.length) {\n                    container_offset = dropBlock.$container.offset();\n                }\n\n                const container_left = container_offset.left,\n                    container_base = container_left + dropBlock.$container.width(),\n                    parent_base = nWidth + pLeft;\n\n                if (dropBlock.$parent.find('.scrollThenFix').length) {\n                    nHeight = dropBlock.$parent.find('.scrollThenFix').outerHeight();\n                }\n\n                if (dropBlock.$parent.innerWidth() === dropBlock.$controller.innerWidth()) {\n                    nWidth = dropBlock.$parent.hasClass('no-auto-width') ? '' : 'auto';\n                    if (dropBlock.isMobile) {\n                        nWidth = dropBlock.$parent.hasClass('no-auto-width') ? '' : '100%';\n                    }\n                }\n\n                if (parent_base > container_base) {\n                    styles = {\n                        top: nHeight,\n                        right: '0px',\n                        width: nWidth,\n                    };\n                } else {\n                    styles = {\n                        top: nHeight,\n                        width: nWidth,\n                    };\n                    let direction = dropBlock.$parent.data('db-direction') || dropBlock.direction;\n                    /*eslint-disable*/\n                    switch (direction) {\n                        case 'left':\n                        case 'right':\n                            styles[direction] = '0px';\n                            break;\n                        case 'center':\n                            let offset = dropBlock.$target.innerWidth() / 2 - dropBlock.$parent.innerWidth();\n                            styles['left'] = `calc(-50% - ${offset}px)`;\n                    }\n                    /*eslint-enable*/\n                }\n                dropBlock.$target.css(styles);\n            },\n        },\n        switch: {\n            icon: function () {\n                dropBlock.switchVal = dropBlock.$controller.attr('data-db-switch');\n                switch (dropBlock.switchVal) {\n                    case 'none':\n                        break;\n                    case 'rotate':\n                        dropBlock.$controller.find('i').addClass('js--rotated');\n                        break;\n                    default:\n                        dropBlock.$controller.find('i').addClass(dropBlock.switchVal);\n                }\n            },\n            back: function () {\n                dropBlock.$controllers.each(function () {\n                    var temp = $(this).attr('data-db-switch');\n                    switch (temp) {\n                        case 'none':\n                            break;\n                        case 'rotate':\n                            dropBlock.$controller.find('i').removeClass('js--rotated');\n                            break;\n                        default:\n                            if (temp !== undefined) dropBlock.$controller.find('i').removeClass(temp);\n                    }\n                });\n            },\n        },\n\n        additionalOnShow: function () {},\n\n        additionalOnHide: function () {},\n    };\n\n    UX.dropBlock = dropBlock; // add to global namespace\n})();\n","(function () {\n    const $body = $('body');\n    UX.alertPopup = {\n        config: {\n            $toggle: '[data-toggle=\"alert\"]',\n            $target: null,\n            $actions: null,\n            $approve: '[data-action=\"approve\"]',\n            $cancel: '[data-action=\"cancel\"]',\n            $url: null,\n        },\n        init: function () {\n            if (config.enableAlertPopupAccessibility) this.accessibility.init();\n            this.set();\n            this.controls();\n        },\n        accessibility: {\n            init: function () {\n                let $content = $('main.content');\n                if ($content.length) {\n                    $content.after($('.ux-modal-alert'));\n                }\n            },\n            show: function () {\n                $('.content, .footer, .header').attr('aria-hidden', true);\n            },\n            hide: function () {\n                $('.content, .footer, .header').removeAttr('aria-hidden');\n            },\n        },\n        set: function () {\n            this.config.$actions = document.querySelectorAll(this.config.$toggle);\n            this.config.$approve = document.querySelectorAll(this.config.$approve);\n            this.config.$cancel = document.querySelectorAll(this.config.$cancel);\n        },\n        controls: function () {\n            this.config.$actions.forEach(action => {\n                action.addEventListener('click', e => {\n                    this.onClick(e);\n                });\n            });\n            this.config.$approve.forEach(action => {\n                action.addEventListener('click', e => {\n                    this.action();\n                });\n            });\n            this.config.$cancel.forEach(action => {\n                action.addEventListener('click', e => {\n                    this.hide($(action).closest('.alert'));\n                });\n            });\n        },\n        onClick: function (e) {\n            e.preventDefault();\n            this.config.$target = e.currentTarget.getAttribute('data-target');\n            this.config.$url = e.currentTarget.href;\n            this.show(this.config.$target);\n        },\n        redirect: function (value) {\n            window.location.href = value;\n        },\n        show: function (target) {\n            $body.attr('data-active', 'modal');\n            this.accessibility.show();\n            $(target).addClass('js--open');\n            $(target).attr('open', true);\n        },\n        hide: function (target) {\n            this.accessibility.hide();\n            $(target).removeClass('js--open');\n            $(target).removeAttr('open');\n        },\n        action: function () {\n            this.redirect(this.config.$url);\n        },\n    };\n})();\n","(function () {\n    var $window = $(window),\n        $body = $('body');\n\n    var backToTop = {\n        element: '.back-to-top',\n        footerBackToTop: 'footer .back-to-top',\n\n        init: function () {\n            backToTop.controller();\n        },\n        controller: function () {\n            $body.on('click', backToTop.element, function (e) {\n                e.preventDefault();\n                $('html, body').animate({scrollTop: 0}, 600);\n                $(document.body).find(':focusable').first().focus();\n            });\n\n            $window.on('scroll', function () {\n                if ($(backToTop.footerBackToTop).length) {\n                    if ($(this).scrollTop() > $('header').height()) {\n                        $(backToTop.footerBackToTop).addClass('back-to-top__is-visible');\n                    } else {\n                        $(backToTop.footerBackToTop).removeClass('back-to-top__is-visible back-to-top__fade-out');\n                    }\n\n                    if ($(this).scrollTop() > 400) {\n                        $(backToTop.footerBackToTop).addClass('back-to-top__fade-out');\n                    }\n\n                    if (backToTop.check.isfooterVisible()) {\n                        $(backToTop.footerBackToTop).addClass('back-to-top__static');\n                    } else {\n                        $(backToTop.footerBackToTop).removeClass('back-to-top__static');\n                    }\n                }\n            });\n        },\n        check: {\n            isfooterVisible: function () {\n                var docViewBottom = $(window).scrollTop() + $(window).height();\n                var backToTopPos = $('footer').offset().top;\n                return backToTopPos <= docViewBottom;\n            },\n        },\n    };\n\n    UX.backToTop = backToTop;\n})();\n","import 'ui-core/widgets/raa/js/raa';\nimport 'ui-core/widgets/raa/js/registration';\nimport '../../../components/raa/js/raa';\n(function () {\n    // Photoheme has an additional popup for the loging and signup where both forms are placed in tabs.\n    // UX3 level js handler for that is unapplicable because of different markup and classes usage.\n    // The script below provides for that need.\n    $(document).ready(function () {\n        // enable sumbit btn for access token widget\n        var signupForm = $(\n            '.login-form-container form[action=\"/action/registration\"], .login-form-container .registration-form'\n        ); // form selection by action has to be removed once the second selector will be created\n        signupForm.find('input[type=submit]').attr('disabled', 'disabled');\n\n        signupForm.find('input[type=email]').on('keyup input change', function () {\n            var submitButton = signupForm.find('input[type=submit]');\n            !$(this).val().length ? submitButton.attr('disabled', 'disabled') : submitButton.removeAttr('disabled');\n        });\n    });\n})();\n","$(document).ready(function () {\n    // display user login popup - loginBar\n    $(document).on('click', '#indivLogin, #guestLogin', function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        $(this).toggleClass('active');\n        $('.navigation-login-dropdown-container:not(.login-options)').toggleClass('hidden');\n        if ($('.search-open').is(':visible')) {\n            toggleQuickSearch(); /*eslint-disable-line*/\n        }\n    });\n\n    $(document).on('click', function (e) {\n        if (\n            $(e.target).attr('id') !== 'indivLogin' &&\n            $(e.target).attr('id') !== 'guestLogin' &&\n            !$('.navigation-login-dropdown-container').hasClass('hidden')\n        ) {\n            $('.navigation-login-dropdown-container').addClass('hidden');\n        }\n    });\n\n    // enable sumbit btn for access token widget\n    $('#accessTokenForm div.input-group input[type=text]').on('keyup input change', function () {\n        !$('#accessTokenForm div.input-group #tokenAccess').val().length\n            ? $('#accessTokenForm input[type=submit]').attr('disabled', 'disabled')\n            : $('#accessTokenForm input[type=submit]').removeAttr('disabled');\n    });\n\n    // enable sumbit btn for access token widget\n    $('.registration-popup input[type=submit]').attr('disabled', 'disabled');\n\n    $('.registration-popup input[type=text]').on('keyup input change', function () {\n        !$(this).val().length\n            ? $('.registration-form input[type=submit]').attr('disabled', 'disabled')\n            : $('.registration-form input[type=submit]').removeAttr('disabled');\n    });\n\n    // display verification code hidden msg after 3m\n    if ($('#check-if-exist')) {\n        setTimeout(function () {\n            $('#hidden-message').css('visibility', 'visible');\n        }, 30000);\n    }\n\n    // enable sumbit btn for 2-step widget\n    $('#check-if-exist input[type=input]').on('keyup input change', function () {\n        !$('#check-if-exist input[type=input]').val().length\n            ? $('#check-if-exist input[type=submit]').attr('disabled', 'disabled')\n            : $('#check-if-exist input[type=submit]').removeAttr('disabled');\n    });\n});\n\n// this is not required anymore\n// $(window).on('load', function () {\n//     // recaptcha load\n//     if ($('.g-recaptcha').length) {\n//         loadRecaptcha(); /*eslint-disable-line*/\n//     }\n// });\n\nfunction loadInstitutionPage(selectDom) {\n    var href = $(selectDom).val();\n    location.href = href;\n}\nwindow.loadInstitutionPage = loadInstitutionPage; // add to global namespace\n","(function () {\n    const loginIntro = $('.login-intro-container');\n    const loginForm = $('.login-form-container');\n    const loginPopup = $('.login-popup');\n\n    if (loginIntro.length) {\n        const loginFormToggler = loginIntro.find('.intro-link');\n        loginFormToggler.on('click', function (e) {\n            if (!e.target.href || !e.target.href.length || e.target.href.replace(location.href, '') === '#') {\n                e.preventDefault();\n                loginForm.removeClass('hidden');\n                loginIntro.addClass('hidden');\n            }\n        });\n        if (!$('.login-popup').hasClass('hidden') && $('.login-form').find('.message.error').length > 0) {\n            loginForm.removeClass('hidden');\n            loginIntro.addClass('hidden');\n        }\n        const loginPopupCloseBtn = loginPopup.find('.close');\n        loginPopupCloseBtn.on('click', function () {\n            loginForm.addClass('hidden');\n            loginIntro.removeClass('hidden');\n        });\n\n        $('body').on('blur focusout', '.login-popup a:visible:last', function (e) {\n            loginPopup.find('.close').focus();\n        });\n        $('body').on('click', '.loginBar .show-login', function (e) {\n            loginIntro.removeClass('hidden');\n            setTimeout(function () {\n                loginPopup.find('.close').focus();\n            }, 250);\n        });\n    }\n})();\n","function menubar(e, t) {\n    (this.$id = $('#' + e)),\n        (this.$rootItems = this.$id.children('li')),\n        (this.$items = this.$id.find('.menu-item')),\n        (this.$parents = this.$id.find('.menu-parent')),\n        (this.$allItems = this.$parents.add(this.$items)),\n        (this.$activeItem = null),\n        (this.vmenu = t),\n        (this.bChildOpen = !1),\n        (this.keys = {\n            tab: 9,\n            enter: 13,\n            esc: 27,\n            space: 32,\n            left: 37,\n            up: 38,\n            right: 39,\n            down: 40,\n        }),\n        this.bindHandlers();\n}\nmenubar.prototype.bindHandlers = function () {\n    var e = this;\n\n    this.$allItems.keydown(function (t) {\n        return e.handleKeyDown($(this), t);\n    }),\n        this.$allItems.keypress(function (t) {\n            return e.handleKeyPress($(this), t);\n        }),\n        this.$allItems.focus(function (t) {\n            return e.handleFocus($(this), t);\n        }),\n        $(document).click(function (t) {\n            return e.handleDocumentClick(t);\n        });\n};\n\nmenubar.prototype.handleFocus = function (e, t) {\n    if (null == this.$activeItem) this.$activeItem = e;\n    else if (e[0] !== this.$activeItem[0]) return !0;\n    const i = this.$activeItem.parentsUntil('div').filter('li');\n    if (\n        (this.$allItems.removeClass('menu-focus menu-focus-checked'),\n        this.$activeItem.is('.checked')\n            ? this.$activeItem.addClass('menu-focus-checked')\n            : this.$activeItem.addClass('menu-focus'),\n        i.addClass('menu-focus'),\n        1 === this.vmenu)\n    )\n        if (1 === this.bChildOpen) {\n            const s = e.parent();\n            s.is('#menubar') &&\n                'true' === e.attr('aria-haspopup') &&\n                e.addClass('hover').children('ul').attr('aria-hidden', 'false');\n        } else this.vmenu = !1;\n    return !0;\n};\n\nmenubar.prototype.handleKeyDown = function (e, t) {\n    const i = e.parent();\n    if (t.altKey || t.ctrlKey) return !0;\n    /*eslint-disable*/\n    switch (t.keyCode) {\n        case this.keys.tab:\n            this.$id.find('ul').attr('aria-hidden', 'true'),\n                this.$allItems.removeClass('menu-focus hover'),\n                (this.$activeItem = null),\n                0 === this.bChildOpen;\n            break;\n        case this.keys.esc:\n            if (UX.menu.$toggle.length > 0) {\n                //if (e.keyCode  === escKey) {\n\n                //e.preventDefault();\n                UX.menu.on.hide();\n                UX.menu.$toggle.focus();\n                //}\n            } else {\n                return (\n                    i.is('#menubar')\n                        ? (e.removeClass('hover').children('ul').first().attr('aria-hidden', 'true'), e.focus())\n                        : ((this.$activeItem = i.parent()),\n                          e.removeClass('hover'),\n                          (this.bChildOpen = !1),\n                          this.$activeItem.focus(),\n                          i.attr('aria-hidden', 'true')),\n                    t.stopPropagation(),\n                    !1\n                );\n            }\n\n        case this.keys.enter:\n        case this.keys.space:\n            const s = e.parent();\n            return (\n                s.is('#menubar')\n                    ? (e.addClass('hover').children('ul').first().attr('aria-hidden', 'false'),\n                      (this.bChildOpen = !0),\n                      this.processMenuChoice(e),\n                      e.find('ul > li:first').find('a').focus())\n                    : (this.processMenuChoice(e),\n                      this.$allItems.removeClass('menu-hover menu-hover-checked hover'),\n                      this.$allItems.removeClass('menu-focus menu-focus-checked hover'),\n                      this.$id.find('ul').not('#menubar').attr('aria-hidden', 'true'),\n                      (this.$activeItem = null)),\n                t.stopPropagation(),\n                !1\n            );\n        case this.keys.left:\n            return (\n                1 === this.vmenu && i.is('#menubar')\n                    ? (this.$activeItem = this.moveUp(e))\n                    : (this.$activeItem = this.moveToPrevious(e)),\n                this.$activeItem.focus(),\n                t.stopPropagation(),\n                !1\n            );\n        case this.keys.right:\n            return (\n                1 === this.vmenu && i.is('#menubar')\n                    ? (this.$activeItem = this.moveDown(e))\n                    : (this.$activeItem = this.moveToNext(e)),\n                this.$activeItem.focus(),\n                t.stopPropagation(),\n                !1\n            );\n        case this.keys.up:\n            return (\n                1 === this.vmenu && i.is('#menubar')\n                    ? (this.$activeItem = this.moveToPrevious(e))\n                    : (this.$activeItem = this.moveUp(e)),\n                this.$activeItem.focus(),\n                t.stopPropagation(),\n                !1\n            );\n        case this.keys.down:\n            return (\n                1 === this.vmenu && i.is('#menubar')\n                    ? (this.$activeItem = this.moveToNext(e))\n                    : (this.$activeItem = this.moveDown(e)),\n                this.$activeItem.focus(),\n                t.stopPropagation(),\n                !1\n            );\n    }\n    /*eslint-enable*/\n    return !0;\n};\n\nmenubar.prototype.moveToNext = function (e) {\n    let a;\n    let t = e.parent(),\n        i = t.children('li'),\n        s = i.length,\n        r = i.index(e),\n        n = null;\n    if (t.is('#menubar')) {\n        if (((n = s - 1 > r ? e.next() : i.first()), 'true' === e.attr('aria-haspopup'))) {\n            e.removeClass('hover');\n            a = e.children('ul').first();\n            'false' === a.attr('aria-hidden') && (a.attr('aria-hidden', 'true'), (this.bChildOpen = !0));\n        }\n        if ((e.removeClass('menu-focus'), 'true' === n.attr('aria-haspopup') && 1 === this.bChildOpen)) {\n            n.addClass('hover');\n            a = n.children('ul').first();\n            a.attr('aria-hidden', 'false');\n        }\n    } else if ('true' === e.attr('aria-haspopup')) {\n        e.addClass('hover');\n        a = e.children('ul').first();\n        (n = a.children('li').first()), a.attr('aria-hidden', 'false'), (this.bChildOpen = !0);\n    } else {\n        if (1 === this.vmenu) return e;\n        let h = null,\n            o = null;\n        if (\n            ((h = e.parentsUntil('div').filter('ul').not('#menubar')),\n            h.attr('aria-hidden', 'true'),\n            h.find('li').removeClass('menu-focus hover'),\n            h.last().parent().removeClass('menu-focus hover'),\n            (o = h.last().parent()),\n            (r = this.$rootItems.index(o)),\n            (n = r < this.$rootItems.length - 1 ? o.next() : this.$rootItems.first()),\n            'true' === n.attr('aria-haspopup') && n.children('ul').length > 0)\n        ) {\n            n.addClass('hover');\n            a = n.children('ul').first();\n            (n = a.children('li').first()), a.attr('aria-hidden', 'false'), (this.bChildOpen = !0);\n        }\n    }\n    return n;\n};\n\nmenubar.prototype.moveToPrevious = function (e) {\n    let n;\n    let t = e.parent(),\n        i = t.children('li'),\n        s = (i.length, i.index(e)),\n        r = null;\n    if (t.is('#menubar')) {\n        if (((r = s > 0 ? e.prev() : i.last()), 'true' === e.attr('aria-haspopup'))) {\n            n = e.removeClass('hover').children('ul').first();\n            'false' === n.attr('aria-hidden') && (n.attr('aria-hidden', 'true'), (this.bChildOpen = !0));\n        }\n        if ((e.removeClass('menu-focus hover'), 'true' === r.attr('aria-haspopup') && 1 === this.bChildOpen)) {\n            r.addClass('hover');\n            n = r.children('ul').first();\n            n.attr('aria-hidden', 'false');\n        }\n    } else {\n        const a = t.parent(),\n            h = a.parent();\n\n        if (1 !== this.vmenu && h.is('#menubar')) {\n            if (\n                (t.attr('aria-hidden', 'true'),\n                e.removeClass('menu-focus hover'),\n                a.removeClass('menu-focus hover'),\n                (s = this.$rootItems.index(a)),\n                (r = s > 0 ? a.prev() : this.$rootItems.last()),\n                r.addClass('menu-focus hover'),\n                'true' === r.attr('aria-haspopup'))\n            ) {\n                n = null;\n                r.children('ul').length > 0 &&\n                    ((n = r.addClass('hover').children('ul').first()),\n                    n.attr('aria-hidden', 'false'),\n                    (this.bChildOpen = !0),\n                    (r = n.children('li').first()));\n            }\n        } else\n            (r = t.parent()),\n                t.attr('aria-hidden', 'true'),\n                e.removeClass('menu-focus hover'),\n                r.removeClass('hover'),\n                1 === this.vmenu && (this.bChildOpen = !1);\n    }\n    return r;\n};\n\nmenubar.prototype.moveDown = function (e, t) {\n    let i = e.parent(),\n        s = i.children('li').not('.separator'),\n        r = s.length,\n        n = s.index(e),\n        a = null,\n        h = null;\n    if (i.is('#menubar'))\n        return 'true' !== e.attr('aria-haspopup')\n            ? e\n            : ((h = e.addClass('hover').children('ul').first()),\n              (a = h.children('li').first()),\n              h.attr('aria-hidden', 'false'),\n              (this.bChildOpen = !0),\n              a);\n    if (t) {\n        let o = !1,\n            u = n + 1;\n        for (u === r && (u = 0); u !== n; ) {\n            const l = s.eq(u).html().charAt(0);\n            if (l.toLowerCase() === t) {\n                o = !0;\n                break;\n            }\n            (u += 1), u === r && (u = 0);\n        }\n        return 1 === o ? ((a = s.eq(u)), e.removeClass('menu-focus menu-focus-checked'), a) : e;\n    }\n    return (a = r - 1 > n ? s.eq(n + 1) : s.first()), e.removeClass('menu-focus menu-focus-checked'), a;\n};\n\nmenubar.prototype.moveUp = function (e) {\n    let t = e.parent(),\n        i = t.children('li').not('.separator'),\n        s = (i.length, i.index(e)),\n        r = null;\n    return t.is('#menubar')\n        ? e\n        : ((r = s > 0 ? i.eq(s - 1) : i.last()), e.removeClass('menu-focus menu-focus-checked'), r);\n};\n\nmenubar.prototype.handleKeyPress = function (e, t) {\n    if (t.altKey || t.ctrlKey || t.shiftKey) return !0;\n    /*eslint-disable*/\n    switch (t.keyCode) {\n        case this.keys.tab:\n            return !0;\n        case this.keys.esc:\n        case this.keys.enter:\n        case this.keys.space:\n        case this.keys.up:\n        case this.keys.down:\n        case this.keys.left:\n        case this.keys.right:\n            return t.stopPropagation(), !1;\n        default:\n            var i = String.fromCharCode(t.which);\n            return (this.$activeItem = this.moveDown(e, i)), this.$activeItem.focus(), t.stopPropagation(), !1;\n    }\n    return !0;\n    /*eslint-enable*/\n};\n\nmenubar.prototype.handleDocumentClick = function (e) {\n    var t = this.$id.find('ul').not('#menubar');\n    return (\n        t.attr('aria-hidden', 'true'),\n        this.$allItems.removeClass('menu-focus menu-focus-checked hover'),\n        (this.$activeItem = null),\n        !0\n    );\n};\n\nmenubar.prototype.processMenuChoice = function (e) {\n    var t = (e.parent().attr('id'), e.attr('id'), e.data('href'));\n    if (null != t)\n        if (t.toLowerCase().indexOf('legacy.') > 0) {\n            const i = window.open(t, '_blank');\n            i.focus();\n        } else window.location.href = t;\n    const s = e.find('a');\n    null != s && (window.location.href = s[0].href);\n};\nwindow.menubar = menubar;\n","import './menu-accessability.js';\n\n(function () {\n    //document.activeElement\n\n    var $body = $('body'),\n        $window = $(window),\n        tabKey = 9,\n        escKey = 27,\n        enterKey = 13;\n\n    var menu = {\n        $toggle: $('[data-toggle=\"nav\"]'),\n        $target: null,\n        revers: false,\n        lastItem: null,\n        items: null,\n        vPort: ['screen-sm'],\n        isMobile: false, // variable use to determine if responsive mode is on or off\n        menuHeaderMainTitle: '',\n        redirectPath: false,\n        displayedNestedItems: false,\n        nestedMenu: undefined,\n        listPositionVars: {\n            mainScrollingList: $('#menubar'),\n            inTimeoutTiming: null, // override these if you want a custom listPosition.handle in or out timeout time\n            outTimeoutTiming: null,\n            mainScrollingListHeight: false,\n            mobileTransitionTime: 400, // should usually keep it the same as the transition time for `.main-nav.menu--res li`'s that's in drawer.scss,\n            bodyTransitionPropertyName: 'transform', // this one,\n            bodyTransitionElapsedTime: 0.25, // and this one depend on the type and duration of the sidebar `show` transition (currently under `.lock-screen[data-active='menu']` in drawer.scss)\n        },\n\n        init: function () {\n            $('.main-nav').each(function (index) {\n                menu.$target = $(this);\n                const $header = menu.$target.find('.menu-header');\n                menu.menuHeaderMainTitle = $header.text();\n                menu.redirectPath = $header.data('redirect-to');\n                menu.check.viewPort(index);\n                menu.responsive(index);\n            });\n            $('.main-nav__toggle__controller').attr('aria-expanded', 'false');\n            menu.items = $('.main-nav').find('a, button, input'); //$(\".header__nav a, .header__nav button, .header__nav input\");\n            menu.control();\n            menu.additionalControl();\n        },\n\n        responsive: function (index) {\n            $(document).on(menu.vPort[index] + '-on', function () {\n                // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n                menu.isMobile = true;\n                $('.main-nav').each(function () {\n                    if ($(this).find('.drawer__nav').data('ctrl-res') === menu.vPort[index]) {\n                        $(this).addClass('menu--res'); // class will be used in our scss (to replace media queries)\n                        $('.main-nav__toggle__controller').addClass('main-nav__toggle__controller__res'); // class will be used in our scss (to replace media queries)\n                        menu.on.rebuild.responsive(); // rebuild menu to be responsive - drawer\n                    }\n                });\n            });\n\n            $(document).on(menu.vPort[index] + '-off', function () {\n                // Waiting for custom event that will be triggered by controller.js to deactivate responsive effects\n                menu.isMobile = false;\n                $('.main-nav').each(function () {\n                    if ($(this).find('.drawer__nav').data('ctrl-res') === menu.vPort[index]) {\n                        $(this).removeClass('menu--res'); // class will be used in our scss (to replace media queries)\n                        $('.main-nav__toggle__controller').removeClass('main-nav__toggle__controller__res'); // class will be used in our scss (to replace media queries)\n                        menu.on.rebuild.original(); // return menu as default\n                    }\n                });\n            });\n        },\n\n        control: function () {\n            $body.on('click', '[data-toggle=\"nav\"]', function (e) {\n                e.preventDefault();\n                menu.$toggle = $(this);\n                menu.$target = $('#' + menu.$toggle.data('target'));\n\n                menu.items = menu.$target.find('a, button, input'); //$(\".header__nav a, .header__nav button, .header__nav input\");\n                menu.items.each(function (index) {\n                    if (index === menu.items.length - 1) {\n                        menu.lastItem = $(this);\n                    }\n                });\n\n                menu.on.show(e);\n            });\n\n            $body.on('click', '.js--open[data-toggle=\"nav\"]', function (e) {\n                e.preventDefault();\n                menu.on.hide(e);\n            });\n\n            $body.on('click', function (e) {\n                if (!$(e.target).closest('.dropdown__toggle').length) {\n                    $('a.dropdown__toggle.hover').removeClass('hover');\n                }\n                if (\n                    !$(e.target).hasClass('icon-arrow_r') &&\n                    !$(e.target).parents('.main-nav__toggle__controller') &&\n                    !$(e.target).parents('.main-nav.menu--res').length &&\n                    $('.lock-screen[data-active=\"menu\"]').length\n                ) {\n                    menu.on.hide(e);\n                }\n            });\n\n            $body.on('click', '.main-nav a', function (e) {\n                if ($(this).attr('href') === '#') {\n                    e.preventDefault();\n                }\n            });\n\n            $body.on('click touchend', '[data-toggle=\"dropdown\"]', function (e) {\n                e.preventDefault();\n                menu.nestedMenu = $(this);\n                menu.on.nested(e);\n            });\n            $body.on('click', '.menu-header', function (e) {\n                e.preventDefault();\n\n                if (menu.isMobile) {\n                    menu.on.hideNested(true);\n                }\n                e.stopPropagation(); // prevent closing menu when getting back from nested menu\n            });\n            $body.on('keydown', '.drawer__nav, [data-toggle=\"nav\"]', function (e) {\n                if (menu.isMobile) {\n                    if ((e.keyCode || e.which) === tabKey) {\n                        if (!menu.revers) {\n                            menu.on.tab();\n                        } else {\n                            menu.on.tabRevers();\n                        }\n                    }\n                }\n            });\n\n            // without .get(0) e.elapsedTime and e.propertyName are undefined\n            $body.get(0).addEventListener('transitionend', menu.on.listPosition.handleHeightSet);\n            $window.on('resize', menu.on.listPosition.handleResize);\n\n            $window.on('keyup', function (e) {\n                menu.revers = !!(e.shiftKey && e.keyCode === tabKey);\n                if (!menu.isMobile) {\n                    if ((e.keyCode || e.which) === tabKey || enterKey) {\n                        menu.on.tabDesktop(e, menu.revers, e.keyCode);\n                    }\n\n                    if ((e.keyCode || e.which) === escKey) {\n                        menu.on.escDesktop(e);\n                    }\n                }\n            });\n        },\n        additionalControl: function () {},\n        on: {\n            show: function () {\n                if (typeof UX.controller != 'undefined') {\n                    UX.controller.check();\n                }\n                $body.addClass('lock-screen').attr('data-active', 'menu');\n                menu.$toggle.addClass('js--open');\n\n                menu.$target.closest('.main-nav').css('top', $window.scrollTop());\n                $('.coolBar--res')\n                    .removeClass('trans')\n                    .css('top', $window.scrollTop() + $('header').height());\n                $('.loi__banner.loi--res').css('top', $window.scrollTop() + $('header').height());\n                $('.main-nav__toggle__controller').attr('aria-expanded', 'true');\n                menu.$target.attr('style', 'display: block !important');\n                menu.$toggle.focus();\n                menu.on.showAdditional();\n            },\n            showAdditional: function () {},\n            showNested: function () {\n                menu.on.listPosition.start('in');\n                menu.nestedMenu.next('.dropdown__menu').toggleClass('sub-menu__opened');\n                menu.nestedMenu.parent().toggleClass('menu-parent__opened');\n                menu.nestedMenu.find('i').toggleClass('opposite-arrow');\n                menu.nestedMenu.parent().siblings('li').toggleClass('prev-items');\n                menu.nestedMenu.toggleClass('prev-items');\n                $(\"[data-toggle='nav']\").addClass('js--nested-open'); // replace Close button with back button after nested menu get opened\n                const $menuTitle = menu.nestedMenu.html();\n\n                if ($('.menu-header').length) {\n                    $('.menu-header').html($menuTitle);\n                }\n                menu.displayedNestedItems = true;\n\n                menu.on.showNestedExtra();\n            },\n            showNestedExtra: function () {},\n            hideNested: function (shouldNavigate = false) {\n                var $menuHeader = $('.menu-header');\n                var $parenNestedMenu;\n\n                if (typeof menu.nestedMenu != 'undefined') {\n                    menu.on.listPosition.start('out');\n                    $parenNestedMenu = menu.nestedMenu.parent().parent(); // first parent list\n                    menu.nestedMenu = $parenNestedMenu.parent().find('.dropdown__toggle'); // first parent dropdown toggle link\n\n                    $parenNestedMenu.find('.sub-menu__opened').removeClass('sub-menu__opened');\n                    $parenNestedMenu.find('.menu-parent__opened').removeClass('menu-parent__opened');\n                    $parenNestedMenu.find('.prev-items').removeClass('prev-items');\n                    $(\"[data-toggle='nav']\").removeClass('js--nested-open');\n\n                    if ($parenNestedMenu.hasClass('sub-menu__opened')) {\n                        $menuHeader.find('span').html(menu.nestedMenu.find('span').html());\n                    } else {\n                        if (menu.redirectPath && shouldNavigate && !menu.displayedNestedItems) {\n                            document.location = menu.redirectPath;\n                        } else {\n                            $menuHeader.html(menu.menuHeaderMainTitle);\n                            menu.displayedNestedItems = false;\n                        }\n                    }\n                } else {\n                    menu.nestedMenu = $menuHeader;\n                }\n\n                menu.on.hideNestedExtra();\n            },\n            hideNestedExtra: function () {},\n            hide: function () {\n                if (menu.isMobile) {\n                    // hide nested menu before closing\n                    menu.on.hideNested();\n                }\n                menu.$toggle.removeClass('js--open');\n                $('.main-nav, header').css('top', 0);\n                $('.coolBar--res').addClass('trans').css('top', $('header').height()); // The magic number contains 1px of border and\n                $('.loi__banner.loi--res').css('top', $('header').height());\n                $body.removeAttr('data-active').removeClass('lock-screen');\n                $('.main-nav__toggle__controller').attr('aria-expanded', 'false');\n                menu.on.listPosition.reset();\n            },\n            escape: function () {\n                menu.on.hide();\n                menu.$toggle.focus();\n            },\n            tab: function () {\n                menu.$toggle.off();\n                menu.lastItem.off().on('focusout', function () {\n                    menu.$toggle.focus();\n                });\n            },\n            tabRevers: function () {\n                menu.lastItem.off();\n                menu.$toggle.off().on('focusout', function () {\n                    menu.lastItem.focus();\n                });\n            },\n            tabDesktop: function (e, revers, keyCode) {\n                var $target = $(e.target);\n                var $parentMenu = $target.closest('.dropdown__menu');\n                var $dropdownToggle = $('.dropdown__toggle');\n                var dropdownMenu = '.dropdown__menu';\n\n                if (!$target.closest('ul').length) {\n                    $dropdownToggle.removeClass('hover');\n                    $('.dropdown').removeClass('js--open');\n                }\n\n                if ($target.hasClass('dropdown__toggle')) {\n                    if (\n                        $parentMenu.length === 0 ||\n                        (!$parentMenu.hasClass('js--open') && $parentMenu.find('.js--open').length === 0)\n                    ) {\n                        $dropdownToggle.removeClass('hover');\n                        $(dropdownMenu).removeClass('js--open');\n                        $target.closest('a').addClass('hover');\n                        $target.siblings(dropdownMenu).addClass('js--open');\n                    } else {\n                        $parentMenu.find('.hover').removeClass('hover');\n                        $parentMenu.find('.js--open').removeClass('js--open');\n                        $target.closest('a').addClass('hover');\n                        $target.siblings(dropdownMenu).addClass('js--open');\n                    }\n                    if (keyCode == enterKey) {\n                        $(e.target).closest('a').addClass('hover');\n                    }\n                } else {\n                    $target.closest('ul').find('.hover').removeClass('hover');\n                }\n            },\n            escDesktop: function (e) {\n                $(e.target).closest('.dropdown__toggle').removeClass('hover');\n            },\n            rebuild: {\n                responsive: function () {\n                    menu.on.hide();\n                },\n                original: function () {\n                    menu.on.hide();\n                    menu.$target.show();\n                },\n            },\n            nested: function (e) {\n                //e.preventDefault();\n                if (menu.isMobile) {\n                    menu.on.showNested();\n                }\n            },\n            listPosition: {\n                start: function (direction) {\n                    if (!menu.nestedMenu || !direction || !menu.isMobile) return;\n                    let $firstNestedMenu = menu.nestedMenu.first();\n                    if (!$firstNestedMenu.closest('#menubar').length) return; // this function should only work inside #menubar\n\n                    switch (direction) {\n                        case 'in': {\n                            let $prevMenu = $firstNestedMenu.closest('.dropdown__menu, #menubar'),\n                                $nextMenu = $firstNestedMenu.next('.dropdown__menu');\n                            menu.on.listPosition.handle(\n                                {prev: $prevMenu, next: $nextMenu, parent: $prevMenu, sub: $nextMenu},\n                                'in'\n                            );\n\n                            break;\n                        }\n                        case 'out': {\n                            let addDataOnly = $firstNestedMenu.hasClass('menu-header'),\n                                $prevMenu = $firstNestedMenu.next('.dropdown__menu'),\n                                $nextMenu = $firstNestedMenu.closest('.dropdown__menu, #menubar');\n                            menu.on.listPosition.handle(\n                                {prev: $prevMenu, next: $nextMenu, parent: $nextMenu, sub: $prevMenu},\n                                'out',\n                                addDataOnly\n                            );\n\n                            break;\n                        }\n                    }\n                },\n                handle: function (menuElements, direction = {}, addDataOnly) {\n                    let timing = direction === 'in' ? 0 : menu.listPositionVars.mobileTransitionTime / 3, // 0 timing is good for in direction, looks bad for out\n                        timeoutTime =\n                            direction === 'in' && menu.listPositionVars.inTimeoutTiming\n                                ? menu.listPositionVars.inTimeoutTiming\n                                : direction === 'out' && menu.listPositionVars.outTimeoutTiming\n                                ? menu.listPositionVars.outTimeoutTiming\n                                : menu.listPositionVars.mobileTransitionTime / 3;\n\n                    menu.on.listPosition.addDataToElem(menuElements.prev);\n                    if (addDataOnly === true) return;\n\n                    menu.on.listPosition.handleScrollBarHide([menuElements.prev, menuElements.next]);\n\n                    if (menuElements.next.length) {\n                        let lastScrollVal = menu.on.listPosition.getLastPosition(menuElements.next);\n\n                        setTimeout(() => {\n                            menu.on.listPosition.scrollTo(\n                                menuElements,\n                                direction,\n                                lastScrollVal ? lastScrollVal : 0,\n                                timing\n                            );\n                        }, timeoutTime); // a timeout so the transition happens just before the next list enters the viewport\n                    }\n                },\n                addDataToElem: function ($elem) {\n                    if ($elem.length) {\n                        let rect = $elem.get(0).getBoundingClientRect();\n\n                        $elem.attr(\n                            'data-last-pos',\n                            JSON.stringify({\n                                bottom: Math.floor(rect.bottom),\n                                scrollVal: Math.floor($elem.first().scrollTop()),\n                            })\n                        );\n                    }\n                },\n                getLastPosition: function ($elem) {\n                    return $elem.attr('data-last-pos') && JSON.parse($elem.attr('data-last-pos')).scrollVal;\n                },\n                handleScrollBarHide: function (elemsArr) {\n                    elemsArr.forEach($elem => {\n                        $elem.addClass('scrollbar-hidden');\n\n                        if (!$elem.attr('data-transitionend-listener-added')) {\n                            $elem.attr('data-transitionend-listener-added', 'true');\n                            $elem.on('transitionend', e => {\n                                $elem.removeClass('scrollbar-hidden');\n                            });\n                        }\n                    });\n                },\n                scrollTo: function (menuElements, direction, value, timing = 0) {\n                    let parentHeightVal =\n                            menu.listPositionVars.mainScrollingListHeight -\n                            (menuElements.parent.innerHeight() - menuElements.parent.height()), // height minus padding\n                        subHeightVal =\n                            menu.listPositionVars.mainScrollingListHeight -\n                            (menuElements.sub.innerHeight() - menuElements.sub.height()); // height minus padding\n\n                    if (UX.utils.isSafari()) {\n                        subHeightVal = subHeightVal - 180;\n                    }\n\n                    if (direction === 'in') {\n                        menuElements.parent\n                            .css({'max-height': parentHeightVal, height: parentHeightVal, 'overflow-y': 'hidden'})\n                            .attr('data-list-pos-corrected', 'true');\n                        menuElements.sub\n                            .css({'max-height': subHeightVal, height: subHeightVal, 'overflow-y': 'auto'})\n                            .attr('data-list-pos-corrected', 'true');\n\n                        menuElements.parent.length &&\n                            menuElements.parent.animate(\n                                {\n                                    scrollTop: 0, // if we don't scroll the parent to the top, the sub will sometimes be cut off\n                                },\n                                {\n                                    duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                                }\n                            );\n\n                        menuElements.sub.animate(\n                            {\n                                scrollTop: value,\n                            },\n                            {\n                                duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                            }\n                        );\n                    } else if (direction === 'out') {\n                        menuElements.parent.css({\n                            'max-height': parentHeightVal,\n                            height: parentHeightVal,\n                            'overflow-y': 'auto',\n                        });\n                        menuElements.sub\n                            .css({'max-height': '', height: '', 'overflow-y': ''})\n                            .removeAttr('data-list-pos-corrected');\n\n                        menuElements.parent.length &&\n                            menuElements.parent.animate(\n                                {\n                                    scrollTop: value,\n                                },\n                                {\n                                    duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                                }\n                            );\n                    }\n                },\n                handleResize: function (e) {\n                    if (menu.$toggle.hasClass('js--open')) {\n                        menu.on.listPosition.handleHeightSet({}, {skipCheck: true});\n                    }\n                },\n                handleHeightSet: function (e = {}, options = {}) {\n                    if (\n                        (menu.$toggle.hasClass('js--open') &&\n                            e.elapsedTime === menu.listPositionVars.bodyTransitionElapsedTime &&\n                            e.propertyName === menu.listPositionVars.bodyTransitionPropertyName) ||\n                        options.skipCheck === true\n                    ) {\n                        // not using $window.outerHeight() because it's return value doesn't change with the resize event\n                        menu.listPositionVars.mainScrollingListHeight =\n                            window.outerHeight - menu.listPositionVars.mainScrollingList[0].getBoundingClientRect().top;\n                        menu.listPositionVars.mainScrollingList\n                            .find('[data-list-pos-corrected=\"true\"]')\n                            .add(menu.listPositionVars.mainScrollingList)\n                            .css({\n                                height: menu.listPositionVars.mainScrollingListHeight,\n                                'max-height': menu.listPositionVars.mainScrollingListHeight,\n                            });\n                    }\n                },\n                reset: function () {\n                    menu.listPositionVars.mainScrollingList\n                        .find('[data-last-pos], [data-list-pos-corrected]')\n                        .add(menu.listPositionVars.mainScrollingList)\n                        .removeAttr('data-last-pos data-list-pos-corrected')\n                        .css({'max-height': '', height: '', 'overflow-y': ''})\n                        .animate(\n                            {\n                                scrollTop: 0,\n                            },\n                            0\n                        );\n                },\n            },\n        },\n        check: {\n            viewPort: function (index) {\n                if (menu.$target.find('.drawer__nav').attr('data-ctrl-res')) {\n                    menu.vPort[index] = menu.$target.find('.drawer__nav').attr('data-ctrl-res');\n                }\n            },\n        },\n    };\n\n    UX.menu = menu; // add to global namespace\n})();\n","import 'ui-core/plugins/drawer/js/drawer';\n\n(function (UX) {\n    var menu = UX.menu,\n        $window = $(window),\n        $body = $('body'),\n        $header = $('header.header'),\n        tabKey = 9,\n        escKey = 27,\n        enterKey = 13;\n\n    menu.listPositionVars.mainScrollingList = $('.drawer__nav');\n    menu.listPositionVars.bodyTransitionPropertyName = 'width';\n    menu.listPositionVars.bodyTransitionElapsedTime = 0.2;\n    menu.listPositionVars.inTimeoutTiming = 100;\n    menu.listPositionVars.outTimeoutTiming = 50;\n\n    menu.on.show = function (e) {\n        if (typeof UX.controller !== 'undefined') {\n            UX.controller.check();\n        }\n        if (e) {\n            $(e.target).closest('.main-nav').addClass('js--open');\n        }\n        $body.addClass('lock-screen').attr('data-active', 'menu');\n\n        menu.$toggle.addClass('js--open');\n        menu.$target.attr('style', 'display: block !important');\n        $('.main-nav__toggle__controller').attr('aria-expanded', 'true');\n    };\n    menu.on.hide = function (e) {\n        menu.on.listPosition.reset();\n        $header.find('.header--first-row').css('transform', '');\n        menu.$toggle.removeClass('js--open');\n        $body.removeAttr('data-active').removeClass('lock-screen');\n        menu.$target.attr('style', '');\n        $('.main-nav__toggle__controller').attr('aria-expanded', 'false');\n        if (e) {\n            $(e.target).closest($header).find('.main-nav').removeClass('js--open');\n        }\n    };\n    menu.on.showNestedExtra = function () {\n        menu.$target.addClass('sub-menu__opened');\n    };\n    menu.on.hideNestedExtra = function () {\n        if (!$('.menu-parent__opened').length) {\n            menu.$target.removeClass('sub-menu__opened');\n        }\n    };\n    menu.control = function () {\n        $body.on('click', '[data-toggle=\"nav\"]', function (e) {\n            e.preventDefault();\n            menu.$toggle = $(this);\n            menu.$target = $('#' + menu.$toggle.data('target'));\n\n            menu.items = menu.$target.find('a, button, input'); //$(\".header__nav a, .header__nav button, .header__nav input\");\n            menu.items.each(function (index) {\n                if (index === menu.items.length - 1) {\n                    menu.lastItem = $(this);\n                }\n            });\n\n            menu.on.show(e);\n        });\n\n        $body.on('click', '.js--open[data-toggle=\"nav\"]', function (e) {\n            e.preventDefault();\n            menu.on.hide(e);\n        });\n\n        $body.on('click', function (e) {\n            if (!$(e.target).closest('.dropdown__toggle').length) {\n                $('a.dropdown__toggle.hover').removeClass('hover');\n            }\n            if (\n                !$(e.target).hasClass('icon-arrow_r') &&\n                !$(e.target).parents('.main-nav__toggle__controller') &&\n                !$(e.target).parents('.main-nav.menu--res').length &&\n                $('.lock-screen[data-active=\"menu\"]').length\n            ) {\n                menu.on.hide(e);\n            }\n        });\n\n        $body.on('click', '.main-nav a', function (e) {\n            if ($(this).attr('href') === '#') {\n                e.preventDefault();\n            }\n        });\n\n        $body.on('click', '[data-toggle=\"dropdown\"]', function (e) {\n            e.preventDefault();\n            menu.nestedMenu = $(this);\n            menu.on.nested(e);\n        });\n        $body.on('click', '.menu-header', function (e) {\n            e.preventDefault();\n\n            if (menu.isMobile) {\n                menu.on.hideNested(true);\n            }\n            e.stopPropagation(); // prevent closing menu when getting back from nested menu\n        });\n        $body.on('keydown', '.drawer__nav, [data-toggle=\"nav\"]', function (e) {\n            if (menu.isMobile) {\n                if ((e.keyCode || e.which) === tabKey) {\n                    if (!menu.revers) {\n                        menu.on.tab();\n                    } else {\n                        menu.on.tabRevers();\n                    }\n                }\n            }\n        });\n\n        $('.main-nav').each((i, $elem) =>\n            $elem.addEventListener('transitionend', menu.on.listPosition.handleHeightSet)\n        ); // <-- this is the difference between photo and core\n        $window.on('resize', menu.on.listPosition.handleResize);\n\n        $window.on('keyup', function (e) {\n            menu.revers = !!(e.shiftKey && e.keyCode === tabKey);\n            if (!menu.isMobile) {\n                if ((e.keyCode || e.which) === tabKey || enterKey) {\n                    menu.on.tabDesktop(e, menu.revers, e.keyCode);\n                }\n\n                if ((e.keyCode || e.which) === escKey) {\n                    menu.on.escDesktop(e);\n                }\n            }\n        });\n    };\n\n    menu.on.listPosition.start = function (direction) {\n        if (!menu.nestedMenu || !direction || !menu.isMobile) return;\n        let $firstNestedMenu = menu.nestedMenu.first();\n        if (!$firstNestedMenu.closest('#menubar').length) return; // this function should only work inside #menubar\n\n        switch (direction) {\n            case 'in': {\n                let $prevMenu = $firstNestedMenu.closest('.dropdown__menu, #menubar'),\n                    $nextMenu = $firstNestedMenu.next('.dropdown__menu');\n\n                if ($prevMenu.is('#menubar')) $prevMenu = $prevMenu.closest('.drawer__nav');\n                if ($nextMenu.is('#menubar')) $nextMenu = $nextMenu.closest('.drawer__nav');\n\n                menu.on.listPosition.handle(\n                    {prev: $prevMenu, next: $nextMenu, parent: $prevMenu, sub: $nextMenu},\n                    'in'\n                );\n\n                break;\n            }\n            case 'out': {\n                let addDataOnly = $firstNestedMenu.hasClass('menu-header'),\n                    $prevMenu = $firstNestedMenu.next('.dropdown__menu'),\n                    $nextMenu = $firstNestedMenu.closest('.dropdown__menu, #menubar');\n\n                if ($prevMenu.is('#menubar')) $prevMenu = $prevMenu.closest('.drawer__nav');\n                if ($nextMenu.is('#menubar')) $nextMenu = $nextMenu.closest('.drawer__nav');\n\n                menu.on.listPosition.handle(\n                    {prev: $prevMenu, next: $nextMenu, parent: $nextMenu, sub: $prevMenu},\n                    'out',\n                    addDataOnly\n                );\n\n                break;\n            }\n        }\n    };\n    menu.on.listPosition.handle = function (menuElements, direction = {}, addDataOnly) {\n        let timing = menu.mobileTransitionTime / 2,\n            timeoutTime =\n                direction === 'in' && menu.listPositionVars.inTimeoutTiming\n                    ? menu.listPositionVars.inTimeoutTiming\n                    : direction === 'out' && menu.listPositionVars.outTimeoutTiming\n                    ? menu.listPositionVars.outTimeoutTiming\n                    : menu.listPositionVars.mobileTransitionTime / 2;\n\n        menu.on.listPosition.addDataToElem(menuElements.prev);\n        if (addDataOnly === true) return;\n\n        menu.on.listPosition.handleScrollBarHide([menuElements.prev, menuElements.next]);\n\n        if (menuElements.next.length) {\n            let lastScrollVal = menu.on.listPosition.getLastPosition(menuElements.next);\n\n            setTimeout(() => {\n                menu.on.listPosition.scrollTo(menuElements, direction, lastScrollVal ? lastScrollVal : 0, timing);\n            }, timeoutTime); // a timeout so the transition happens just before the next list enters the viewport\n        }\n    };\n    menu.on.listPosition.handleScrollBarHide = function (elemsArr) {\n        elemsArr.forEach($elem => {\n            $elem.attr('data-scrollbar-should-be-hidden', 'true');\n            $elem.addClass('scrollbar-hidden');\n        });\n        if (elemsArr.length > 0) {\n            let mainList = elemsArr[0].closest('.drawer__nav').attr('data-transitionend-listener-added', 'true');\n            setTimeout(() => {\n                mainList.find('[data-scrollbar-should-be-hidden=\"true\"]').add(mainList).removeClass('scrollbar-hidden');\n            }, menu.listPositionVars.mobileTransitionTime);\n        }\n    };\n    menu.on.listPosition.scrollTo = function (menuElements, direction, value, timing = 0) {\n        let parentHeightVal =\n                menu.listPositionVars.mainScrollingListHeight -\n                (menuElements.parent.innerHeight() - menuElements.parent.height()), // height minus padding\n            subHeightVal =\n                menu.listPositionVars.mainScrollingListHeight -\n                (menuElements.sub.innerHeight() - menuElements.sub.height()); // height minus padding\n        if (direction === 'in') {\n            menuElements.parent\n                .css({'max-height': parentHeightVal, height: parentHeightVal, 'overflow-y': 'hidden'})\n                .attr('data-list-pos-corrected', 'true');\n            menuElements.sub\n                .css({'max-height': subHeightVal, height: subHeightVal, 'overflow-y': 'auto'})\n                .attr('data-list-pos-corrected', 'true');\n            menuElements.sub\n                .closest('.menu-parent')\n                .css('overflow', 'visible')\n                .attr('[data-list-pos-corrected-menu-parent=\"true\"]');\n\n            menuElements.parent.length &&\n                menuElements.parent.animate(\n                    {\n                        scrollTop: 0, // if we don't scroll the parent to the top, the sub will sometimes be cut off\n                    },\n                    {\n                        duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                    }\n                );\n\n            menuElements.sub.length &&\n                menuElements.sub.animate(\n                    {\n                        scrollTop: value,\n                    },\n                    {\n                        duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                    }\n                );\n        } else if (direction === 'out') {\n            menuElements.parent.css({'max-height': parentHeightVal, height: parentHeightVal, 'overflow-y': 'auto'});\n            menuElements.sub\n                .css({'max-height': '', height: '', 'overflow-y': ''})\n                .removeAttr('data-list-pos-corrected');\n            menuElements.sub\n                .closest('.menu-parent')\n                .css({overflow: ''})\n                .removeAttr('data-list-pos-corrected-menu-parent');\n\n            menuElements.parent.length &&\n                menuElements.parent.animate(\n                    {\n                        scrollTop: value,\n                    },\n                    {\n                        duration: Math.abs(value - menuElements.parent.scrollTop()) > 125 ? 0 : timing,\n                    }\n                );\n        }\n    };\n    menu.on.listPosition.reset = function () {\n        menu.listPositionVars.mainScrollingList\n            .find('[data-last-pos], [data-list-pos-corrected], [data-list-pos-corrected-menu-parent]')\n            .add(menu.listPositionVars.mainScrollingList)\n            .removeAttr('data-last-pos data-list-pos-corrected data-list-pos-corrected-menu-parent')\n            .css({'max-height': '', height: '', 'overflow-y': ''})\n            .animate(\n                {\n                    scrollTop: 0,\n                },\n                0\n            );\n    };\n    menu.on.listPosition.handleResize = function (e) {\n        if (menu.$toggle.hasClass('js--open')) {\n            menu.on.listPosition.handleHeightSet({}, {skipCheck: true});\n        }\n    };\n    menu.on.listPosition.handleHeightSet = function (e = {}, options = {}) {\n        if (!menu.isMobile) return;\n        if (\n            (menu.$toggle.hasClass('js--open') &&\n                e.elapsedTime === menu.listPositionVars.bodyTransitionElapsedTime &&\n                e.propertyName === menu.listPositionVars.bodyTransitionPropertyName) ||\n            options.skipCheck === true\n        ) {\n            // not using $window.outerHeight() because it's return value doesn't change with the resize event\n            menu.listPositionVars.mainScrollingListHeight =\n                window.outerHeight - menu.listPositionVars.mainScrollingList[0].getBoundingClientRect().top;\n            menu.listPositionVars.mainScrollingList\n                .find('[data-list-pos-corrected=\"true\"]')\n                .add(menu.listPositionVars.mainScrollingList)\n                .css({\n                    height: menu.listPositionVars.mainScrollingListHeight,\n                    'max-height': menu.listPositionVars.mainScrollingListHeight,\n                });\n        }\n    };\n})(UX);\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n/*eslint-disable*/\nimport $ from 'jquery';\nimport Util from '../../../utility/js/bootstrap-utils';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal';\nconst VERSION = '4.4.1';\nconst DATA_KEY = 'bs.modal';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst JQUERY_NO_CONFLICT = $.fn[NAME];\nconst ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true,\n};\n\nconst DefaultType = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean',\n};\n\nconst Event = {\n    HIDE: `hide${EVENT_KEY}`,\n    HIDE_PREVENTED: `hidePrevented${EVENT_KEY}`,\n    HIDDEN: `hidden${EVENT_KEY}`,\n    SHOW: `show${EVENT_KEY}`,\n    SHOWN: `shown${EVENT_KEY}`,\n    FOCUSIN: `focusin${EVENT_KEY}`,\n    RESIZE: `resize${EVENT_KEY}`,\n    CLICK_DISMISS: `click.dismiss${EVENT_KEY}`,\n    KEYDOWN_DISMISS: `keydown.dismiss${EVENT_KEY}`,\n    MOUSEUP_DISMISS: `mouseup.dismiss${EVENT_KEY}`,\n    MOUSEDOWN_DISMISS: `mousedown.dismiss${EVENT_KEY}`,\n    CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n};\n\nconst ClassName = {\n    SCROLLABLE: 'modal-dialog-scrollable',\n    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n    BACKDROP: 'modal-backdrop',\n    OPEN: 'modal-open',\n    FADE: 'fade',\n    SHOW: 'in',\n    STATIC: 'modal-static',\n};\n\nconst Selector = {\n    DIALOG: '.modal-dialog',\n    MODAL_BODY: '.modal-body',\n    DATA_TOGGLE: '[data-toggle=\"modal\"]',\n    DATA_DISMISS: '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT: '.sticky-top',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n    constructor(element, config) {\n        this._config = this._getConfig(config);\n        this._element = element;\n        this._dialog = element.querySelector(Selector.DIALOG);\n        this._backdrop = null;\n        this._isShown = false;\n        this._isBodyOverflowing = false;\n        this._ignoreBackdropClick = false;\n        this._isTransitioning = false;\n        this._scrollbarWidth = 0;\n    }\n\n    // Getters\n\n    static get VERSION() {\n        return VERSION;\n    }\n\n    static get Default() {\n        return Default;\n    }\n\n    // Public\n\n    toggle(relatedTarget) {\n        return this._isShown ? this.hide() : this.show(relatedTarget);\n    }\n\n    show(relatedTarget) {\n        if (this._isShown || this._isTransitioning) {\n            return;\n        }\n\n        if ($(this._element).hasClass(ClassName.FADE)) {\n            this._isTransitioning = true;\n        }\n\n        const showEvent = $.Event(Event.SHOW, {\n            relatedTarget,\n        });\n\n        $(this._element).trigger(showEvent);\n\n        if (this._isShown || showEvent.isDefaultPrevented()) {\n            return;\n        }\n\n        this._isShown = true;\n\n        this._checkScrollbar();\n        this._setScrollbar();\n\n        this._adjustDialog();\n\n        this._setEscapeEvent();\n        this._setResizeEvent();\n\n        $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, event => this.hide(event));\n\n        $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n            $(this._element).one(Event.MOUSEUP_DISMISS, event => {\n                if ($(event.target).is(this._element)) {\n                    this._ignoreBackdropClick = true;\n                }\n            });\n        });\n\n        this._showBackdrop(() => this._showElement(relatedTarget));\n    }\n\n    hide(event) {\n        if (event) {\n            event.preventDefault();\n        }\n\n        if (!this._isShown || this._isTransitioning) {\n            return;\n        }\n\n        const hideEvent = $.Event(Event.HIDE);\n\n        $(this._element).trigger(hideEvent);\n\n        if (!this._isShown || hideEvent.isDefaultPrevented()) {\n            return;\n        }\n\n        this._isShown = false;\n        const transition = $(this._element).hasClass(ClassName.FADE);\n\n        if (transition) {\n            this._isTransitioning = true;\n        }\n\n        this._setEscapeEvent();\n        this._setResizeEvent();\n\n        $(document).off(Event.FOCUSIN);\n\n        $(this._element).removeClass(ClassName.SHOW);\n\n        $(this._element).off(Event.CLICK_DISMISS);\n        $(this._dialog).off(Event.MOUSEDOWN_DISMISS);\n\n        if (transition) {\n            const transitionDuration = Util.getTransitionDurationFromElement(this._element);\n\n            $(this._element)\n                .one(Util.TRANSITION_END, event => this._hideModal(event))\n                .emulateTransitionEnd(transitionDuration);\n        } else {\n            this._hideModal();\n        }\n    }\n\n    dispose() {\n        [window, this._element, this._dialog].forEach(htmlElement => $(htmlElement).off(EVENT_KEY));\n\n        /**\n         * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n         * Do not move `document` in `htmlElements` array\n         * It will remove `Event.CLICK_DATA_API` event that should remain\n         */\n        $(document).off(Event.FOCUSIN);\n\n        $.removeData(this._element, DATA_KEY);\n\n        this._config = null;\n        this._element = null;\n        this._dialog = null;\n        this._backdrop = null;\n        this._isShown = null;\n        this._isBodyOverflowing = null;\n        this._ignoreBackdropClick = null;\n        this._isTransitioning = null;\n        this._scrollbarWidth = null;\n    }\n\n    handleUpdate() {\n        this._adjustDialog();\n    }\n\n    // Private\n\n    _getConfig(config) {\n        config = {\n            ...Default,\n            ...config,\n        };\n        Util.typeCheckConfig(NAME, config, DefaultType);\n        return config;\n    }\n\n    _triggerBackdropTransition() {\n        if (this._config.backdrop === 'static') {\n            const hideEventPrevented = $.Event(Event.HIDE_PREVENTED);\n\n            $(this._element).trigger(hideEventPrevented);\n            if (hideEventPrevented.defaultPrevented) {\n                return;\n            }\n\n            this._element.classList.add(ClassName.STATIC);\n\n            const modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);\n\n            $(this._element)\n                .one(Util.TRANSITION_END, () => {\n                    this._element.classList.remove(ClassName.STATIC);\n                })\n                .emulateTransitionEnd(modalTransitionDuration);\n            this._element.focus();\n        } else {\n            this.hide();\n        }\n    }\n\n    _showElement(relatedTarget) {\n        const transition = $(this._element).hasClass(ClassName.FADE);\n        const modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null;\n\n        if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n            // Don't move modal's DOM position\n            document.body.appendChild(this._element);\n        }\n\n        this._element.style.display = 'block';\n        this._element.removeAttribute('aria-hidden');\n        this._element.setAttribute('aria-modal', true);\n\n        if ($(this._dialog).hasClass(ClassName.SCROLLABLE) && modalBody) {\n            modalBody.scrollTop = 0;\n        } else {\n            this._element.scrollTop = 0;\n        }\n\n        if (transition) {\n            Util.reflow(this._element);\n        }\n\n        $(this._element).addClass(ClassName.SHOW);\n\n        if (this._config.focus) {\n            this._enforceFocus();\n        }\n\n        const shownEvent = $.Event(Event.SHOWN, {\n            relatedTarget,\n        });\n\n        const transitionComplete = () => {\n            if (this._config.focus) {\n                this._element.focus();\n            }\n            this._isTransitioning = false;\n            $(this._element).trigger(shownEvent);\n        };\n\n        if (transition) {\n            const transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n\n            $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n        } else {\n            transitionComplete();\n        }\n    }\n\n    _enforceFocus() {\n        $(document)\n            .off(Event.FOCUSIN) // Guard against infinite focus loop\n            .on(Event.FOCUSIN, event => {\n                if (\n                    document !== event.target &&\n                    this._element !== event.target &&\n                    $(this._element).has(event.target).length === 0\n                ) {\n                    this._element.focus();\n                }\n            });\n    }\n\n    _setEscapeEvent() {\n        if (this._isShown && this._config.keyboard) {\n            $(this._element).on(Event.KEYDOWN_DISMISS, event => {\n                if (event.which === ESCAPE_KEYCODE) {\n                    this._triggerBackdropTransition();\n                }\n            });\n        } else if (!this._isShown) {\n            $(this._element).off(Event.KEYDOWN_DISMISS);\n        }\n    }\n\n    _setResizeEvent() {\n        if (this._isShown) {\n            $(window).on(Event.RESIZE, event => this.handleUpdate(event));\n        } else {\n            $(window).off(Event.RESIZE);\n        }\n    }\n\n    _hideModal() {\n        this._element.style.display = 'none';\n        this._element.setAttribute('aria-hidden', true);\n        this._element.removeAttribute('aria-modal');\n        this._isTransitioning = false;\n        this._showBackdrop(() => {\n            $(document.body).removeClass(ClassName.OPEN);\n            this._resetAdjustments();\n            this._resetScrollbar();\n            $(this._element).trigger(Event.HIDDEN);\n        });\n    }\n\n    _removeBackdrop() {\n        if (this._backdrop) {\n            $(this._backdrop).remove();\n            this._backdrop = null;\n        }\n    }\n\n    _showBackdrop(callback) {\n        const animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';\n\n        if (this._isShown && this._config.backdrop) {\n            this._backdrop = document.createElement('div');\n            this._backdrop.className = ClassName.BACKDROP;\n\n            if (animate) {\n                this._backdrop.classList.add(animate);\n            }\n\n            $(this._backdrop).appendTo(document.body);\n\n            $(this._element).on(Event.CLICK_DISMISS, event => {\n                if (this._ignoreBackdropClick) {\n                    this._ignoreBackdropClick = false;\n                    return;\n                }\n                if (event.target !== event.currentTarget) {\n                    return;\n                }\n\n                this._triggerBackdropTransition();\n            });\n\n            if (animate) {\n                Util.reflow(this._backdrop);\n            }\n\n            $(this._backdrop).addClass(ClassName.SHOW);\n\n            if (!callback) {\n                return;\n            }\n\n            if (!animate) {\n                callback();\n                return;\n            }\n\n            const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n            $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n        } else if (!this._isShown && this._backdrop) {\n            $(this._backdrop).removeClass(ClassName.SHOW);\n\n            const callbackRemove = () => {\n                this._removeBackdrop();\n                if (callback) {\n                    callback();\n                }\n            };\n\n            if ($(this._element).hasClass(ClassName.FADE)) {\n                const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n                $(this._backdrop)\n                    .one(Util.TRANSITION_END, callbackRemove)\n                    .emulateTransitionEnd(backdropTransitionDuration);\n            } else {\n                callbackRemove();\n            }\n        } else if (callback) {\n            callback();\n        }\n    }\n\n    // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n\n    _adjustDialog() {\n        const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n        if (!this._isBodyOverflowing && isModalOverflowing) {\n            this._element.style.paddingLeft = `${this._scrollbarWidth}px`;\n        }\n\n        if (this._isBodyOverflowing && !isModalOverflowing) {\n            this._element.style.paddingRight = `${this._scrollbarWidth}px`;\n        }\n    }\n\n    _resetAdjustments() {\n        this._element.style.paddingLeft = '';\n        this._element.style.paddingRight = '';\n    }\n\n    _checkScrollbar() {\n        const rect = document.body.getBoundingClientRect();\n        this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n        this._scrollbarWidth = this._getScrollbarWidth();\n    }\n\n    _setScrollbar() {\n        if (this._isBodyOverflowing) {\n            // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n            //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n            const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));\n            const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT));\n\n            // Adjust fixed content padding\n            $(fixedContent).each((index, element) => {\n                const actualPadding = element.style.paddingRight;\n                const calculatedPadding = $(element).css('padding-right');\n                $(element)\n                    .data('padding-right', actualPadding)\n                    .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`);\n            });\n\n            // Adjust sticky content margin\n            $(stickyContent).each((index, element) => {\n                const actualMargin = element.style.marginRight;\n                const calculatedMargin = $(element).css('margin-right');\n                $(element)\n                    .data('margin-right', actualMargin)\n                    .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`);\n            });\n\n            // Adjust body padding\n            const actualPadding = document.body.style.paddingRight;\n            const calculatedPadding = $(document.body).css('padding-right');\n            $(document.body)\n                .data('padding-right', actualPadding)\n                .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`);\n        }\n\n        $(document.body).addClass(ClassName.OPEN);\n    }\n\n    _resetScrollbar() {\n        // Restore fixed content padding\n        const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));\n        $(fixedContent).each((index, element) => {\n            const padding = $(element).data('padding-right');\n            $(element).removeData('padding-right');\n            element.style.paddingRight = padding ? padding : '';\n        });\n\n        // Restore sticky content\n        const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`));\n        $(elements).each((index, element) => {\n            const margin = $(element).data('margin-right');\n            if (typeof margin !== 'undefined') {\n                $(element).css('margin-right', margin).removeData('margin-right');\n            }\n        });\n\n        // Restore body padding\n        const padding = $(document.body).data('padding-right');\n        $(document.body).removeData('padding-right');\n        document.body.style.paddingRight = padding ? padding : '';\n    }\n\n    _getScrollbarWidth() {\n        // thx d.walsh\n        const scrollDiv = document.createElement('div');\n        scrollDiv.className = ClassName.SCROLLBAR_MEASURER;\n        document.body.appendChild(scrollDiv);\n        const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n        document.body.removeChild(scrollDiv);\n        return scrollbarWidth;\n    }\n\n    // Static\n\n    static _jQueryInterface(config, relatedTarget) {\n        return this.each(function () {\n            let data = $(this).data(DATA_KEY);\n            const _config = {\n                ...Default,\n                ...$(this).data(),\n                ...(typeof config === 'object' && config ? config : {}),\n            };\n\n            if (!data) {\n                data = new Modal(this, _config);\n                $(this).data(DATA_KEY, data);\n            }\n\n            if (typeof config === 'string') {\n                if (typeof data[config] === 'undefined') {\n                    throw new TypeError(`No method named \"${config}\"`);\n                }\n                data[config](relatedTarget);\n            } else if (_config.show) {\n                data.show(relatedTarget);\n            }\n        });\n    }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n    let target;\n    const selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n        target = document.querySelector(selector);\n    }\n\n    const config = $(target).data(DATA_KEY)\n        ? 'toggle'\n        : {\n              ...$(target).data(),\n              ...$(this).data(),\n          };\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n        event.preventDefault();\n    }\n\n    const $target = $(target).one(Event.SHOW, showEvent => {\n        if (showEvent.isDefaultPrevented()) {\n            // Only register focus restorer if modal will actually get shown\n            return;\n        }\n\n        $target.one(Event.HIDDEN, () => {\n            if ($(this).is(':visible')) {\n                this.focus();\n            }\n        });\n    });\n\n    Modal._jQueryInterface.call($(target), config, this);\n});\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface;\n$.fn[NAME].Constructor = Modal;\n$.fn[NAME].noConflict = () => {\n    $.fn[NAME] = JQUERY_NO_CONFLICT;\n    return Modal._jQueryInterface;\n};\n\nexport default Modal;\n","import AutoComplete from '@tarekraafat/autocomplete.js';\nimport {\n    ComponentObject,\n    ComponentSelectors,\n    ComponentElements,\n    ComponentService,\n    ComponentInjector,\n    ComponentSelector,\n    UIComponent,\n    Inject,\n    BrowserUtils,\n    Validator\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n    autocompleteResultItem = 'autoComplete__item';\n    citationSearchJournalField = 'quick-search--citation__journal-search__input';\n    citationSearch = 'quick-search--citation';\n    hideAutoComplete = 'hide-auto-complete';\n}\n\nclass Selectors extends ComponentSelectors {\n    qsAutocomplete = new ComponentSelector('input.auto-complete');\n    qsForms = new ComponentSelector('[name=\"defaultQuickSearch\"],[name=\"thisJournalQuickSearch\"], [name=\"thisBookQuickSearch\"]');\n    qsDropdowns = new ComponentSelector('.tab__nav__item__link');\n    qsHeaderWrapper = new ComponentSelector('.quick-qsHeaderWrapper', 'document');\n    qsSeriesKey = '[name=SeriesKey]';\n    qsItems = '.quick-search__search-items';\n    citationSearch = '.quick-search-pane__citation';\n    autocompleteSelectedResultItem = '.autoComplete__item[aria-selected=\"true\"]';\n    citationSearchJournalField = new ComponentSelector('.quick-search--citation__journal-search__input')\n    citationSearchDoiField = new ComponentSelector('.quick-search--citation__journal-search__input__doi')\n    citationSubmit = new ComponentSelector('.citation-search__submit');\n    inputGroup = '.input-group'\n    journalSearchHideAutocompleteWrapper = '.quick-search--citation__journal-search'\n    autoCompleteWrapper = '.autoComplete_wrapper'\n}\n\nclass Elements extends ComponentElements<Selectors> {\n    qsForms: Array<HTMLElement> = [];\n    qsDropdowns: Array<HTMLElement> = [];\n    qsAutocomplete: Array<HTMLInputElement> = [];\n    qsHeaderWrapper: HTMLElement;\n    citationSubmit: HTMLElement;\n    citationSearchJournalField: HTMLInputElement;\n    citationSearchDoiField: HTMLInputElement;\n}\n\n\ninterface QuickSearch extends ComponentService<Selectors, Elements, ClassList, Texts> { }\n\ninterface QuickSearchURLParams {\n    hs: string;\n    pts: string;\n    ptgs: string;\n    ptfs: string;\n    ts: string;\n    cs: string;\n    pt: string;\n}\n\ninterface AutoCompleteOptions {\n    isSelectOnly: boolean\n}\n\nclass QuickSearchElm {\n    constructor(public el: HTMLInputElement, public searchType: string, public seriesKey: string) { }\n}\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass QuickSearch implements UIComponent {\n    @Inject()\n    protected browserUtils: BrowserUtils;\n    @Inject()\n    protected validator: Validator;\n\n    activeDropdownJournal: string;\n    autcompleteInstances: Map<QuickSearchElm, AutoComplete>;\n    _URLParameters: QuickSearchURLParams;\n    _autoCompleteOptions: AutoCompleteOptions;\n\n    protected get autoCompleteOptions(): AutoCompleteOptions {\n        return this._autoCompleteOptions;\n    }\n\n    // On/Off Autocomplete\n    protected get isAutocompleteOn(): boolean {\n        return true;\n    }\n\n    // Submit quick search if user pressed Enter without choosing an autocomplete value\n    protected get submitWithoutChoosingValue(): boolean {\n        return true;\n    }\n\n    // Reserve the user input when changing between different journals\n    protected get reserveSearchInputOnJournalChange(): boolean {\n        return false;\n    }\n\n    protected get activeJournalForm(): HTMLElement {\n        return this.domUtils.getElement(`[aria-labelledby=\"#${this.activeDropdownJournal}\"] form`, this.elements.qsHeaderWrapper)\n    }\n\n    protected get journalCitationInputs(): NodeListOf<HTMLInputElement>{\n        return this.domUtils.closest(this.selectors.inputGroup, this.elements.citationSearchDoiField).querySelectorAll('input')\n    }\n\n    protected get URLParameters(): QuickSearchURLParams {\n        return {\n            hs: 'historyItemsConf',\n            pts: 'publicationTitlesConf',\n            ptgs: 'groupTitlesConf',\n            ptfs: 'publicationItemsConf',\n            ts: 'topicsConf',\n            cs: 'contributorsConf',\n            pt: 'publicationTypesConf'\n        }\n    }\n\n    constructor(readonly wrapper: HTMLElement) { }\n\n    initialize(): void {\n        this._URLParameters = this.URLParameters;\n        this.setAutoCompleteOptions();\n        this.setActiveJournal();\n        this.elements.initialize(this.wrapper);\n        if (this.elements.qsAutocomplete.length && this.isAutocompleteOn && !this.browserUtils.isIE) {\n            this.initAutocomplete();\n        }\n        this.addEventListeners();\n        this.domUtils.getElements(this.selectors.autoCompleteWrapper).forEach((element, i) => {\n            element.setAttribute('aria-label', 'Enter a text or select an option');\n        })\n    }\n\n    /**\n     * Set activeDropdownJournal to default \"Anywhere\"\n     *\n     */\n    setActiveJournal() {\n        this.activeDropdownJournal = this.domUtils.getElement(`${this.selectors.qsItems} > div`)\n            ?.getAttribute('aria-labelledby')\n            ?.replace(/[#]/, '');\n    }\n\n    setAutoCompleteOptions() {\n        this._autoCompleteOptions = { isSelectOnly: false };\n    }\n\n    protected elementRenderer(item, data) {\n        let ele;\n\n        if (this.autoCompleteOptions.isSelectOnly === true) {\n            ele = document.createElement('div');\n        } else {\n            ele = document.createElement('a');\n            ele.href = data.value.url;\n        }\n\n        ele.className = \"autoComplete__link--grid\";\n        ele.innerHTML = `<span class=\"autoComplete__text\">${data.value.highlight}</span>`;\n        // TODO, fix the global var declaration.\n        // @ts-ignore\n        if (data.value.paramFormatted && config.enableAutoCompleteCategory) {\n            ele.innerHTML = `<span class='autoComplete__category'>${data.value.paramFormatted}</span> ${ele.innerHTML}`;\n        }\n        item.setAttribute('aria-label', ele.innerText);\n        item.innerHTML = '';\n        item.appendChild(ele);\n    }\n\n    protected get defaultConfigs() {\n        return {\n            threshold: 2,\n            debounce: 300,\n            resultItem: {\n                element: this.elementRenderer.bind(this),\n                class: `${this.classList.autocompleteResultItem} my-2`\n            },\n            searchEngine: (query, record) => {\n                return record.highlight || record.label;\n            },\n        }\n    }\n\n    protected getConfigs(quickSearchElm: QuickSearchElm, autoCompleteObj: AutoComplete) {\n        return {\n            data: {\n                src: async () => {\n                    const url = this.buildFetchURL(quickSearchElm);\n                    if (url) {\n                        const data = await fetch(url);\n                        return await data.json();\n                    } else {\n                        return [];\n                    }\n                },\n                cache: false\n            },\n            selector: () => quickSearchElm.el,\n            resultsList: this.resultListConfig(quickSearchElm),\n            ...this.defaultConfigs\n        }\n    }\n\n    protected handleAutoCompleteOptions(ele: HTMLElement) {\n        // check if it's a citation field, if yes, then autoCompleteOptions.isSelectOnly should be true\n        // meaning clicking on autocomplete items will just copy the text\n        this.autoCompleteOptions.isSelectOnly = this.domUtils.containsClasses(ele, this.classList.citationSearchJournalField)\n    }\n\n    protected initAutoCompleteInstance(quickSearchElm: QuickSearchElm): AutoComplete {\n        this.handleAutoCompleteOptions(quickSearchElm.el);\n        let autoCompleteObj: AutoComplete = {};\n        const configs = this.getConfigs(quickSearchElm, autoCompleteObj);\n        autoCompleteObj = new AutoComplete(configs);\n        this.domUtils.addEventListener(quickSearchElm.el, 'selection', this.onSelection.bind(this));\n        return autoCompleteObj;\n    }\n\n\n    protected resultListConfig(quickSearchElm: QuickSearchElm) {\n        return {\n            maxResults: 10,\n            render: true,\n            idName: 'autoComplete-' + Math.ceil(Math.random() * 10000),\n            class: 'autoComplete rlist',\n            destination: () => this.resultListDestination(quickSearchElm)\n        }\n    }\n\n    protected resultListDestination(quickSearchElm: QuickSearchElm) {\n        if (this.domUtils.closest(this.selectors.citationSearch, quickSearchElm.el)) {\n            return quickSearchElm.el.parentElement;\n        }\n        return quickSearchElm.el.parentElement.parentElement;\n    }\n\n\n    protected initAutocomplete() {\n        this.autcompleteInstances = new Map();\n        this.elements.qsAutocomplete.forEach((element, i) => {\n            element.setAttribute('type', 'search');\n            let quickSearchElm = new QuickSearchElm(element, null, null);\n\n            // check if the search element is in a specific journal or anywhere and update it accordingly\n            if (element.parentElement.classList.contains('option-journal')) {\n                quickSearchElm.seriesKey = this.domUtils.getElement<HTMLInputElement>(this.selectors.qsSeriesKey, element.parentElement)?.value;\n                quickSearchElm.searchType = 'journal';\n            }\n\n            this.autcompleteInstances.set(\n                quickSearchElm,\n                this.initAutoCompleteInstance(quickSearchElm)\n            );\n        });\n    }\n\n    addEventListeners(): void {\n        if (this.isAutocompleteOn && !this.browserUtils.isIE) {\n            this.elements.qsAutocomplete.forEach(input => {\n                input.addEventListener('keydown', this.onKeyDown.bind(this, input));\n            });\n        }\n\n        this.elements.qsForms.forEach(form => {\n            form.addEventListener('submit', this.onFormSubmit.bind(this, form));\n        })\n\n        if (this.elements.qsDropdowns && this.elements.qsDropdowns.length > 0) {\n            this.elements.qsDropdowns.forEach(item => {\n                item.addEventListener('click', this.handleDropdownCollapse.bind(this, item));\n            })\n        }\n\n        this.registerCitationSearchEvents();\n        this.autocompleteAnnouncer();\n    }\n\n    protected autocompleteAnnouncer(): void {\n        const announcerContainer = document.querySelector('.advanced-search__autocomplete__announcer');\n        const autocompleteLists = document.querySelectorAll('[id^=\"autoComplete_list_\"]');\n        const mutationCallback = function(mutationsList) {\n            mutationsList.forEach(mutation => {\n                if(mutation.target.children.length){\n                    announcerContainer.innerHTML = `${mutation.target.children.length} results are available, use up and down arrow keys to navigate.`\n                } else {\n                    announcerContainer.innerHTML = `No results are available.`\n                }\n            });\n        };\n        const observer = new MutationObserver(mutationCallback);\n        autocompleteLists.forEach(element => {\n            observer.observe(element, { childList: true });\n        });\n    }\n\n\n    protected onFormSubmit(form: HTMLFormElement, e: Event) {\n        const inputValue = this.domUtils.getElement<HTMLInputElement>(this.selectors.qsAutocomplete.selector, form)?.value;\n        if (inputValue === '') {\n            window.location.href = '/search/advanced';\n            e.preventDefault();\n        } else {\n            form.submit()\n        }\n    }\n\n    protected onSelection(event: CustomEvent & { target: HTMLInputElement }) {\n        if (this.autoCompleteOptions.isSelectOnly === true) {\n            // set input field value to the label of the clicked autocomplete item\n            event.target.value = event.detail.selection.value.label;\n        } else {\n            window.location.href = event.detail.selection.value.url;\n        }\n    }\n\n\n    protected onKeyDown(input: HTMLInputElement, e: KeyboardEvent,) {\n        if (e.keyCode === 13) {\n            // this is necessary since the autocomplete plugin prevents default on Enter\n            const submitForm = () => this.domUtils.closest('form', input).dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));\n            if (this.submitWithoutChoosingValue) {\n                if (this.domUtils.getElement(this.selectors.autocompleteSelectedResultItem, this.wrapper)) {\n                    return\n                }\n                return submitForm()\n            } else if (input.value !== '') {\n                return\n            }\n            submitForm()\n        }\n    }\n\n    protected handleDropdownCollapse(item: HTMLElement, e: Event) {\n        const selectedItemId = item.id;\n        if (this.activeDropdownJournal === selectedItemId) {\n            // prevent collapse default behavior of collapsing the menu when pressing on it again\n            item.removeAttribute('data-toggle');\n            setTimeout(() => {\n                item.setAttribute('data-toggle', 'collapse');\n            }, 0);\n        } else {\n            if (this.reserveSearchInputOnJournalChange) {\n                if (this.activeJournalForm) {\n                    const input = this.domUtils.getElement<HTMLInputElement>(this.selectors.qsAutocomplete.selector, this.activeJournalForm);\n                    this.activeDropdownJournal = selectedItemId;\n                    input.value = input.value; // huh?\n                }\n            } else {\n                this.activeDropdownJournal = selectedItemId;\n            }\n        }\n    }\n\n    protected registerCitationSearchEvents() {\n        if (!this.domUtils.containsClasses(this.wrapper, this.classList.citationSearch)) {\n            return\n        }\n\n        this.domUtils.addEventListener(this.elements.qsAutocomplete, 'input', this.changeSubmitButtonState.bind(this));\n\n        this.domUtils.addEventListener(this.elements.citationSearchDoiField, 'input', this.changeSubmitButtonState.bind(this));\n        this.domUtils.addEventListener(this.elements.citationSearchDoiField, 'input', this.onCitationSearchDoiField.bind(this));\n\n        this.changeSubmitButtonState(); // initial check to enable submit button if the fields have a valid value from the JSON\n    }\n\n    protected onCitationSearchDoiField() {\n        let ele = this.elements.citationSearchDoiField,\n            hasValue = ele.value !== \"\";\n\n        ele.setAttribute('name', hasValue ? ele.dataset.name : \"\"); // remove DOI field name/value from submit payload unless it has a valid value\n\n        this.journalCitationInputs.forEach((input) => {\n            if (\n                input.getAttribute('name') === \"quickLinkDoi\" ||\n                input.getAttribute('data-name') === \"quickLinkDoi\" ||\n                input.getAttribute('name') === \"quickLink\"\n            ) {\n                return;\n            }\n            if (input.getAttribute('name') === \"quickLinkJournal\") {\n                this.domUtils.toggleClasses(\n                    this.domUtils.closest(this.selectors.journalSearchHideAutocompleteWrapper, input),\n                    this.classList.hideAutoComplete,\n                    hasValue\n                ) // this is to hide autocomplete suggestions, as they sometimes render after you've already written something\n                // in the DOI field, and you can't hide them unless you **select journal field > click somewhere else to\n                // blur it**, and you can't do this as that field is disabled\n            }\n            input.disabled = hasValue; // disabled all other fields if the DOI one has a valid value\n        })\n    }\n\n    protected changeSubmitButtonState() {\n        let allEmpty = true;\n\n        if (\n            this.validator.isNotEmpty(this.elements.citationSearchJournalField) ||\n            this.validator.isNotEmpty(this.elements.citationSearchDoiField)\n        ) {\n            allEmpty = false;\n        }\n\n        // enable if at least one main field has a valid value\n        if (allEmpty) {\n            this.elements.citationSubmit.setAttribute('disabled', 'true');\n        } else {\n            this.elements.citationSubmit.removeAttribute('disabled');\n        }\n    }\n\n    protected buildFetchURL(element: QuickSearchElm) {\n        const parameters = Object.entries(this.URLParameters).reduce((acc, [key, prop]) => {\n            const value = element.el.dataset[prop];\n            if (value) {\n                acc.push(`${key}=${value}`);\n            }\n            return acc;\n        }, []);\n        const term = element.el.value.trim().replace(/\\s\\s+/g, ' ');\n        if (\n            term.split(' ').length >= parseInt(element.el.dataset.autoCompleteMaxWords) ||\n            term.length >= parseInt(element.el.dataset.autoCompleteMaxChars)\n        ) {\n            return '';\n        }\n        // title-auto-complete maybe should be used for citation but it hasn't been used in literatum for quite a while\n        return `/action/doSuggest?target=auto-complete&query=${encodeURIComponent(term)}&${parameters.join(\n            '&'\n        )}&fl=PubID${element.searchType === 'journal' ? '&within=' + element.seriesKey : ''}`;\n    }\n}\n\nexport default QuickSearch;\n\nexport {\n    Elements as QuickSearchElements,\n    Selectors as QuickSearchSelectors,\n    ClassList as QuickSearchClassList,\n    Texts as QuickSearchTexts,\n    AutoCompleteOptions as QuickSearchAutoCompleteOptions,\n    QuickSearchElm\n}","import AutoComplete from '@tarekraafat/autocomplete.js';\nimport { ComponentSelector, ComponentInjector } from '@atypon/ui-utils';\nimport CoreQuickSearch, {\n    QuickSearchElements,\n    QuickSearchElm,\n    QuickSearchSelectors,\n    QuickSearchTexts,\n    QuickSearchClassList\n} from 'ui-core/widgets/quick-search/js/quick-search';\n\nimport { VPortListener } from 'ui-core/plugins/enquireJs/js/helper';\n\nclass Texts extends QuickSearchTexts { }\n\nclass ClassList extends QuickSearchClassList {\n    focus = 'js--focus';\n    menuQS = 'menu-qs';\n    opened = 'quick-search--opened';\n    a11yFocus = 'quick-search__links-wrapper--focused';\n    journalSearch = 'quick-search--journal';\n}\n\nclass Selectors extends QuickSearchSelectors {\n    quickLinksWrapper = new ComponentSelector('.quick-search__links-wrapper');\n    quickLinks = new ComponentSelector(\"[class^=quick-search]\", 'quickLinksWrapper');\n    submit = '.quick-search__button';\n    citationSubmit = new ComponentSelector('.citation-search__submit');\n    toggler = new ComponentSelector('.quick-search__toggler');\n    quickSearchFormContainer = new ComponentSelector('.quickSearchFormContainer');\n    journalSearchHideAutocompleteWrapper = '.journal-search__wrapper';\n}\n\nclass Elements extends QuickSearchElements {\n    quickLinksWrapper: HTMLElement;\n    quickLinks: HTMLElement[] = [];\n    citationSubmit: HTMLElement;\n    toggler: HTMLElement;\n    quickSearchFormContainer: HTMLElement;\n}\n\ninterface QuickSearch {\n    get elements(): Elements;\n    get texts(): Texts;\n    get classList(): ClassList;\n    get selectors(): Selectors;\n}\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass QuickSearch extends CoreQuickSearch {\n\n    @VPortListener('md')\n    protected isMobile = false;\n\n    protected getConfigs(quickSearchElm: QuickSearchElm, autoCompleteObj: AutoComplete) {\n        return {\n            data: {\n                src: async () => {\n                    const url = this.buildFetchURL(quickSearchElm);\n                    if (url) {\n                        const data = await fetch(url),\n                            parsed = await data.json();\n                        return parsed.map((item) => {\n                            if (item.param === 'SeriesKey') {\n                                item.paramFormatted = 'Journal';\n                            } else if (item.param === 'ContentGroupKey') {\n                                if (item.seriesKey === 'mrwseries') {\n                                    item.paramFormatted = 'Reference Work';\n                                } else {\n                                    item.paramFormatted = 'Book';\n                                }\n                            }\n                            return item;\n                        });\n                    } else {\n                        return [];\n                    }\n                },\n                cache: false\n            },\n            selector: () => quickSearchElm.el,\n            resultsList: this.resultListConfig(quickSearchElm),\n            events: {\n                input: {\n                    blur: (event) => {\n                        setTimeout(() => {\n                            autoCompleteObj.close(autoCompleteObj.input);\n                        }, 200);\n                    }\n                }\n            },\n            ...this.defaultConfigs\n        };\n    }\n    protected resultListConfig(quickSearchElm: QuickSearchElm) {\n        return { ...super.resultListConfig(quickSearchElm), position: 'afterbegin' };\n    }\n\n    protected resultListDestination(quickSearchElm: QuickSearchElm) {\n        if (this.domUtils.containsClasses(this.wrapper, this.classList.journalSearch)) {\n            return this.wrapper;\n        }\n        return this.elements.quickLinksWrapper ?? super.resultListDestination(quickSearchElm);\n    }\n\n    protected get hasMenu() {\n        return this.domUtils.containsClasses(this.wrapper, this.classList.menuQS);\n    }\n\n    protected getCurrentAutoComplete(field: HTMLElement): [QuickSearchElm, any] {\n        return Array.from(this.autcompleteInstances).find(item => item[0].el === field);\n    }\n\n    addEventListeners(): void {\n        super.addEventListeners();\n        this.registerAutoCompleteInputEvents();\n        this.registerCitationSearchEvents();\n        this.registerTogglerOverlayEvents();\n    }\n\n    protected registerAutoCompleteInputEvents() {\n        this.registerAutoCompleteFocus();\n        this.domUtils.addEventListener(this.elements.qsAutocomplete, 'keydown', this.onAutocompleteInputKeydown.bind(this))\n    }\n\n    protected registerTogglerOverlayEvents() {\n        this.domUtils.addEventListener(this.elements.toggler, 'click', this.onToggleClick.bind(this));\n        this.domUtils.addEventListener(document.body, 'click', this.onBodyClick.bind(this));\n    }\n\n    protected onToggleClick() {\n        this.domUtils.toggleClasses(document.body, this.classList.opened);\n    }\n\n    protected onBodyClick(e) {\n        const target = e.target as HTMLElement;\n        const body = document.body;\n        if (\n            this.domUtils.containsClasses(body, this.classList.opened) &&\n            !(target === this.elements.toggler) &&\n            !this.domUtils.closest(this.selectors.toggler.selector, e.target) &&\n            !(target === this.elements.quickSearchFormContainer) &&\n            !this.domUtils.closest(this.selectors.quickSearchFormContainer.selector, e.target)\n        ) {\n            this.domUtils.toggleClasses(document.body, this.classList.opened, false);\n        }\n    }\n\n    protected registerAutoCompleteFocus() {\n        if (!this.hasMenu) {\n            return;\n        }\n        this.domUtils.addEventListener(this.elements.qsAutocomplete, 'focus', this.onAutoCompleteInputFocusChange.bind(this, true));\n        this.domUtils.addEventListener(this.elements.qsAutocomplete, 'focusout', this.onAutoCompleteInputFocusChange.bind(this, false));\n        this.domUtils.addEventListener(this.elements.quickLinks, 'focusout', this.onQuickLinksFocusChange.bind(this))\n    }\n\n    protected onAutoCompleteInputFocusChange(focused: boolean, event: FocusEvent) {\n        if (this.isMobile) {\n            return;\n        }\n        if (this.domUtils.containsClasses(this.elements.quickLinksWrapper, this.classList.a11yFocus)) {\n            return;\n        }\n        this.toggleFocusClasses(focused);\n    }\n\n    protected toggleFocusClasses(show: boolean) {\n        this.domUtils.toggleClasses(this.elements.qsAutocomplete, this.classList.focus, show);\n        this.domUtils.toggleClasses(document.body, this.classList.opened, show);\n        setTimeout(()=>{\n            if (this.elements.quickLinksWrapper) {\n                this.domUtils.animate(show ? 'slideIn' : 'slideOut', this.elements.quickLinksWrapper);\n            }\n        }, 200)\n    }\n\n\n    protected onAutocompleteInputKeydown(event: KeyboardEvent) {\n        if (!this.elements.quickLinksWrapper || event.shiftKey || event.key !== 'Tab') {\n            this.removeA11yClasses();\n            return;\n        }\n        event.preventDefault();\n        this.domUtils.addClasses(this.elements.quickLinksWrapper, this.classList.a11yFocus);\n        const autoComplete = this.getCurrentAutoComplete(event.target as HTMLElement);\n        const link = this.elements.quickLinks[0];\n        if (autoComplete && autoComplete[1].isOpen && autoComplete[1].cursor !== autoComplete[1].feedback.results.length - 1) {\n            autoComplete[1].next();\n        } else {\n            link?.focus();\n        }\n    }\n\n    protected onQuickLinksFocusChange(event: FocusEvent) {\n        if (this.isMobile) {\n            return;\n        }\n        const target = event.target as HTMLElement;\n        const children = target.parentElement.children;\n        if (target !== children[children.length - 1]) {\n            return;\n        }\n        const parent = this.domUtils.closest(this.selectors.qsItems, target);\n        if (!parent) {\n            return;\n        }\n        this.domUtils.getElement(this.selectors.submit, parent)?.focus();\n        this.removeA11yClasses();\n        this.toggleFocusClasses(false);\n    }\n\n    protected removeA11yClasses() {\n        this.domUtils.removeClasses(this.elements.quickLinksWrapper, this.classList.a11yFocus);\n    }\n\n}\n\nexport default QuickSearch;\n\nexport {\n    Elements as PhotoQuickSearchElements,\n    Selectors as PhotoQuickSearchSelectors,\n    ClassList as PhotoQuickSearchClassList,\n    Texts as PhotoQuickSearchTexts\n}","export type vPort = 'xs' | 'sm' | 'md' | 'lg' | 'xlg';\n\n\n\nexport function VPortListener(value: vPort) {\n    let isMobile : boolean;\n    const getter = function() {\n        return isMobile;\n    };\n    const setter = function(newVal: boolean) {\n        isMobile = newVal;     \n    };\n\n    return function (target: any, propertyKey: string) {\n        // register vPort\n        target.vPort = value;\n\n        // redefine property to access it\n        Object.defineProperty(target, propertyKey, {\n            get: getter,\n            set: setter\n        });\n\n        /**\n         * create custom events for earch property which can be overridden\n         * by the class\n         */\n        const [onEvent,offEvent] =[`${propertyKey}On`, `${propertyKey}Off`];\n        // update it via setter\n        if(!target[onEvent]) {\n            target[onEvent] = () => {\n                setter(true);\n            };\n        }\n\n        if(!target[offEvent]) {\n            target[offEvent] = () => {\n                setter(false);\n            };\n        }\n        \n        // override parent registered event *remove it*\n        const parent = Object.getPrototypeOf(target);\n        if(parent.vPort) {\n            document.removeEventListener(`screen-${parent.vPort}-on`, parent[onEvent].bind(parent));\n            document.removeEventListener(`screen-${parent.vPort}-off`, parent[offEvent].bind(parent));\n        }\n        // register vPort listeners\n        document.addEventListener(`screen-${value}-on`, target[onEvent].bind(target));\n        document.addEventListener(`screen-${value}-off`, target[offEvent].bind(target));\n    }\n}\n","\n        import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/plugins/drawer/js/drawer';\n  \nconst main = (UX) => {\n    const $menu = Array.prototype.slice.call(document.querySelectorAll('[data-toggle=\"nav\"]'))\n\ntry {\n        if ($menu.length ) {\n            UX.menu.init($menu);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \n}\n\n        export default main;\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<HTMLElement>} */\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","\n        import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/plugins/stickyElements/js/stickyElements';\n  \nconst main = (UX) => {\n\n\ntry {\n        UX.stickyElements.init();\n    } catch (err) {\n        console.error(err);\n    }\n    \n}\n\n        export default main;\n        ","\n    import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/plugins/indicateInnerScroll/js/indicateInnerScroll';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-theme/components/modal/js/modal';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/components/accordion/js/accordion';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/components/drop-block/js/drop-block';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/components/alert-popup/js/alert-popup';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/components/back-to-top/js/back-to-top';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/components/journal-list/js/journal-list';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/components/top-banner/js/top-banner';\n\nimport QuickSearch from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-theme/widgets/quick-search/js/quick-search';\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/widgets/raa/js/raa';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/node_modules/ui-core/widgets/raa/js/registration';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250204-c9c27144/ui-products/nrc/templates/editorial-board/js/editorial-board';\n\nimport mobileMenuMain from './groups/_mobile-menu';\nimport stickyMain from './groups/_sticky';\nconst main = (UX) => {\n    const $modal = Array.prototype.slice.call(document.getElementsByClassName('modal')),\n        $accordion = Array.prototype.slice.call(document.getElementsByClassName('accordion')),\n        $dropBlock = Array.prototype.slice.call(document.querySelectorAll('[data-db-target-for]')),\n        $alertPopup = Array.prototype.slice.call(document.getElementsByClassName('ux-alert-container')),\n        $backToTop = Array.prototype.slice.call(document.getElementsByClassName('back-to-top')),\n        $quickSearch = Array.prototype.slice.call(document.getElementsByClassName('quick-search')),\n        $editorialBoard = Array.prototype.slice.call(document.getElementsByClassName('custom-content__guidelines-nav'))\n\ntry {\n        UX.scrollIndicator.init();\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($modal.length ) {\n            UX.modal.init($modal);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($accordion.length ) {\n            UX.accordion.init($accordion);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($dropBlock.length ) {\n            UX.dropBlock.init($dropBlock);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($alertPopup.length ) {\n            UX.alertPopup.init($alertPopup);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($backToTop.length ) {\n            UX.backToTop.init($backToTop);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        UX.topBanner.init();\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($quickSearch.length ) {\n            UX.quickSearch = $quickSearch\n                .map(item=>new QuickSearch(item).initialize())\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \ntry {\n        if ($editorialBoard.length ) {\n            UX.editorialBoard.init($editorialBoard);\n        }\n    } catch (err) {\n        console.error(err);\n    }\n    \nmobileMenuMain(UX);\n\nstickyMain(UX);\n\n}\n\n    export default main;\n        ","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"sourceRoot":""}