{"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;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=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('Close modal');\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(\"
\");\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 {\n qsForms: Array = [];\n qsDropdowns: Array = [];\n qsAutocomplete: Array = [];\n qsHeaderWrapper: HTMLElement;\n citationSubmit: HTMLElement;\n citationSearchJournalField: HTMLInputElement;\n citationSearchDoiField: HTMLInputElement;\n}\n\n\ninterface QuickSearch extends ComponentService { }\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;\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{\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 = `${data.value.highlight}`;\n // TODO, fix the global var declaration.\n // @ts-ignore\n if (data.value.paramFormatted && config.enableAutoCompleteCategory) {\n ele.innerHTML = `${data.value.paramFormatted} ${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(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(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(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} */\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":""}