{"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/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/back-to-top/js/back-to-top.js","webpack:///./node_modules/ui-theme/components/sections-navbar/js/sections-navbar.js","webpack:///./node_modules/ui-core/widgets/raa/js/raa.js","webpack:///./node_modules/ui-core/widgets/raa/js/registration.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/slide/js/slide.js","webpack:///./node_modules/ui-core/plugins/scrollo/js/scrollo.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/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-theme/widgets/raa/js/raa.js","webpack:///./node_modules/ui-core/widgets/ip-ranges/js/ip-ranges.ts","webpack:///./node_modules/ui-theme/plugins/slide/js/slide.js","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/groups/_mobile-menu.js","webpack:///./node_modules/ui-theme/plugins/scrollo/js/scrollo.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","$body","$window","modal","$","window","$toggle","$target","revers","lastItem","items","$close","accessibilityEnabled","accessibility","control","$content","after","show","attr","hide","removeAttr","on","find","each","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","$this","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","width","parent_base","top","right","css","switch","temp","undefined","backToTop","footerBackToTop","animate","body","isfooterVisible","docViewBottom","sidebarSections","parseInt","grid","screenSm","$scrollPoints","$block","initSections","set","selectedSection","sectionTitleClick","get","reverse","prepend","htmlSection","_this","scroll","hash","$elemParent","prev","_window","$sectionsNav","$footer","footerTop","headerHeight","currentId","preceding","scrollingPoints","fixedElems","fixedpageElementsHeight","bottom","inSights","eq","item","pageYOffset","innerHeight","scrollHeight","last","stop","location","scrollingSectionPoints","subMenu","elementsHeight","actionBarLinks","_toConsumableArray","link","_this2","activeLink","ready","toggleQuickSearch","val","loadInstitutionPage","selectDom","href","jcf","setOptions","wrapNativeOnMobile","$taxonomy","$maxTags","chosen","max_selected_options","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","html","charAt","shiftKey","fromCharCode","slide","$slide","$contents","$slideinfo","elementvPort","nested","multi","activeSlide","oldInfo","clone","wait","backLabel","isQueue","isRTL","displaySlideHtmlToPage","$back","customViewPorts","viewPort","responsive","additionalInitialization","facetDateChart","utils","$main","additionalResponsive","addTransition","empty","removeTransition","setBackLabel","_e$currentTarget","destroy","openingEvent","isDefaultPrevented","popupType","currentTarget","additionalShow","_nestSlide","label","clonedDiv","destroyJcf","appendTo","rebuildJcf","googletag","pubads","refresh","$coolBar","openEvent","_showSlide","slidePill","$slidedDiv","translate","one","additionalShowSlide","isInsideSlide","closingEvent","originalTarget","isLoi","beforeReturnSlideContent","$dropBlockHolder","_returnDataSlide","splice","_hideSlide","additionalHide","closeEvent","updateTarget","returnDataSlideHere","$returnDataSlideHere","additionalOff","$el","scrollo","rect","getBoundingClientRect","scrollLeft","pageXOffset","adjustAnchor","$anchor","fixedElementsHeight","scrollTo","$fixedHeader","$scrolloThenFix","$stickyCoolbar","stickyCoolbarHeigh","autocompleteResultItem","citationSearchJournalField","citationSearch","hideAutoComplete","qsAutocomplete","qsForms","qsDropdowns","qsHeaderWrapper","qsSeriesKey","qsItems","autocompleteSelectedResultItem","citationSearchDoiField","citationSubmit","inputGroup","journalSearchHideAutocompleteWrapper","autoCompleteWrapper","searchType","seriesKey","_autoCompleteOptions","domUtils","getElement","activeDropdownJournal","elements","selectors","hs","pts","ptgs","ptfs","ts","cs","pt","initialize","_URLParameters","URLParameters","setAutoCompleteOptions","setActiveJournal","isAutocompleteOn","browserUtils","isIE","initAutocomplete","addEventListeners","getElements","isSelectOnly","elementRenderer","ele","autoCompleteOptions","className","paramFormatted","innerText","appendChild","record","getConfigs","quickSearchElm","autoCompleteObj","buildFetchURL","fetch","json","resultListConfig","defaultConfigs","handleAutoCompleteOptions","containsClasses","initAutoCompleteInstance","configs","onSelection","render","idName","Math","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","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","removeA11yClasses","removeClasses","newVal","propertyKey","onEvent","offEvent","getPrototypeOf","menuHeaderMainTitle","redirectPath","displayedNestedItems","nestedMenu","listPositionVars","mainScrollingList","inTimeoutTiming","outTimeoutTiming","mainScrollingListHeight","mobileTransitionTime","bodyTransitionPropertyName","bodyTransitionElapsedTime","$header","additionalControl","rebuild","original","hideNested","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","JSON","stringify","floor","scrollVal","parse","elemsArr","parentHeightVal","subHeightVal","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","config","_classCallCheck","_config","_getConfig","_element","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_isTransitioning","_scrollbarWidth","_createClass","relatedTarget","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","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","style","display","reflow","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","backdropTransitionDuration","callbackRemove","isModalOverflowing","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","parseFloat","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","clientWidth","_jQueryInterface","_this11","getSelectorFromElement","tagName","Constructor","noConflict","signupForm","submitButton","addRangeFields","addRangeSubmitButtons","updateRangesCheckboxes","updateRangesSubmitButtons","handleAddRangeFieldChange","checkbox","handleUpdateRangeFieldChange","anyIsEmpty","some","setSubmitButtonsDisable","anyIsChecked","checked","array","isDisabled","button","ipRanges","main","$menu","getElementById","getElementsByClassName","err","console","$coolBarRes","seppuku","getComputedStyle","testNode","prefix","isInitialized","shadowRootExists","ShadowRoot","stickies","extend","targetObj","sourceObject","hasOwnProperty","parseNumeric","getDocOffsetTop","node","docOffsetTop","offsetParent","Sticky","sticky","_node","_stickyMode","_active","_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","end","borderBottomWidth","parentPosition","_recalcPosition","_clone","border","borderSpacing","fontSize","stickyMode","_fastCheck","Stickyfill","forceSticky","refreshAll","addOne","nodeList","addedStickies","_loop","removeOne","_loop2","removeAll","fastCheckTimer","docHiddenKey","visibilityChangeEventName","checkScroll","startFastCheckTimer","stopFastCheckTimer","clearInterval","setInterval","stickyElements","header","scrollThenFix","dynamicHeader","stickoParent","isHeaderSticky","dynamicHeaderHeight","unshift","_isDynamicHeaderHeight","extra","computeHeaderHeight","matched","isHeader","makeSticky","setTopValue","postStickyActions","_canSetTopValue","_has","stickoActions","scrollThenFixActions","fixedHeaderHeight","scrollThenFixOffset","self","$scrollo","$modal","$accordion","$dropBlock","$backToTop","$sidebarSections","$quickSearch","$ipRanges","quickSearch","mobileMenuMain","stickyMain","toPropertyKey","_defineProperty","__esModule"],"mappings":"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","file":"js/vendors~lazy-imports-7c9135906e3520173c05.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 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 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","(function () {\n var sidebarSections = {\n isMobile: parseInt(UX.grid.screenSm) >= window.innerWidth,\n $scrollPoints: $('.to-section[id]:visible'),\n $block: $('.sections-block'),\n vPort: 'screen-sm',\n\n init: function () {\n if (sidebarSections.$scrollPoints.length || UX.sidebarSections.$block.children().length) {\n sidebarSections.initSections();\n sidebarSections.set.selectedSection();\n sidebarSections.controller();\n if (!sidebarSections.isMobile) {\n sidebarSections.sectionTitleClick();\n }\n } else {\n //if there is no section then hide action bar on tablet\n // hiding with visibility and height to keep the layout in order\n if ($('.sections-navigation').find('.article-tabs-block-container').length === 0) {\n $('.sections-navigation').hide();\n }\n }\n },\n\n initSections: function () {\n //if theres is sections then show section word & initialize it\n $('.sections-block-container').removeClass('not-visible');\n $('.article-navigation-items-separator').removeClass('not-visible');\n\n $(sidebarSections.$scrollPoints.get().reverse()).each(function () {\n sidebarSections.$block.prepend(sidebarSections.get.htmlSection($(this)));\n });\n\n $('.actionsbar__has__sections .sections-block-container').css({\n 'max-height': 'calc(100vh - \" +$(\"header\").height()+ \"px)',\n });\n },\n\n controller: function () {\n $(document).on('click', '.sections-block a', function (e) {\n const _this = $(this);\n if (_this.parents().hasClass('sections-block__external-link')) return;\n e.preventDefault();\n UX.sidebarSections.scroll(_this, this.hash);\n let $elemParent = _this.parents('.js--open');\n if ($elemParent.length > 0) {\n $elemParent.prev('[data-db-target-for]').click();\n $elemParent.find('.w-slide__back').click();\n }\n });\n const _window = $(window);\n const $sectionsNav = $('.sections-navigation');\n const $footer = $('footer');\n\n _window.on('scroll', function () {\n const footerTop = $footer.offset().top;\n const scrollTop = $(window).scrollTop() + $(window).height();\n const headerHeight = $('header').height();\n if (scrollTop >= footerTop) {\n $sectionsNav.css('max-height', `calc(100vh - ${headerHeight + scrollTop - footerTop}px)`);\n } else {\n $sectionsNav.css('max-height', '');\n }\n\n const scrollingPoints = UX.sidebarSections.$scrollPoints,\n fixedElems = sidebarSections.get.fixedpageElementsHeight(),\n bottom = _window.scrollTop() + _window.height() / 2,\n top = _window.scrollTop() + fixedElems / 2;\n /*\n Divisions by 2 above are to improve UX by making switches\n close to page center and therefore making them more relevant for a user\n */\n\n const inSights = scrollingPoints.filter(function (index, elem) {\n return $(elem).offset().top > top && $(elem).offset().top < bottom;\n });\n\n let currentId;\n if (inSights.length) {\n currentId = inSights.eq(0).attr('id');\n } else {\n // taking the previous title in case we are scrolling but there is nothing what is valid to be marked as current\n let preceding;\n scrollingPoints.each(function (i, o) {\n // picking the last closest preceding element\n const item = $(o);\n if (item.offset().top < top && (!preceding || preceding.offset().top < item.offset().top)) {\n preceding = item;\n }\n });\n if (preceding) {\n currentId = preceding.attr('id');\n }\n }\n\n if (currentId) {\n UX.sidebarSections.$block\n .find('a')\n .removeClass('active')\n .filter('[href=\"#' + currentId + '\"]')\n .addClass('active');\n if (\n window.pageYOffset + window.innerHeight + 100 >= document.body.scrollHeight &&\n !sidebarSections.isMobile\n ) {\n // + 100 to ensure that the scroll arrive the end\n if (UX.sidebarSections.$block.find('li').last().hasClass('sections-block__external-link'))\n return;\n UX.sidebarSections.$block.find('a').removeClass('active').last().addClass('active');\n }\n } else {\n UX.sidebarSections.$block.find('a').removeClass('active');\n }\n });\n },\n\n scroll: function ($this, hash) {\n const target = hash,\n $target = $(target),\n position = $target.offset().top - sidebarSections.get.fixedpageElementsHeight();\n $('html, body').stop().animate(\n {\n scrollTop: position,\n },\n 300\n );\n },\n\n set: {\n selectedSection: function () {\n if (window.location.hash) {\n sidebarSections.$block.find('a[href=\"' + window.location.hash + '\"]').addClass('active');\n }\n },\n },\n\n get: {\n scrollingSectionPoints: function () {\n return sidebarSections.$scrollPoints;\n },\n\n htmlSection: function ($this) {\n let subMenu = '';\n if ($this.is('h5')) {\n subMenu = ' - ';\n }\n return (\n '
  • ' +\n subMenu +\n $this.text() +\n '
  • '\n );\n },\n\n fixedpageElementsHeight: function () {\n let elementsHeight =\n $('header').css('position') === 'fixed' || $('header').css('position') === 'sticky'\n ? $('header').outerHeight()\n : 0;\n $('.actionsbar').each(function () {\n if ($(this).outerHeight() > 0) {\n elementsHeight += $(this).outerHeight();\n }\n });\n return elementsHeight;\n },\n },\n\n sectionTitleClick: () => {\n let actionBarLinks = document.querySelectorAll('.actionsbar a');\n if (actionBarLinks !== null) {\n [...actionBarLinks].forEach(link => {\n link.addEventListener('click', function () {\n setTimeout(() => {\n if (!this.classList.contains('active')) {\n let activeLink = document.querySelector('.actionsbar a.active');\n if (activeLink !== null) {\n activeLink.classList.remove('active');\n this.classList.add('active');\n }\n }\n }, 10);\n });\n });\n }\n },\n };\n\n UX.sidebarSections = sidebarSections; // add to global namespace\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 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 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","(function () {\n const $body = $('body');\n\n var slide = {\n $slide: null,\n $target: null,\n $contents: null,\n $slideinfo: null,\n $toggle: null,\n prev: null,\n isMobile: false,\n vPort: 'screen-sm',\n elementvPort: null,\n back: false,\n nested: false,\n multi: false,\n activeSlide: 0,\n oldInfo: [],\n off: null,\n clone: null,\n wait: false,\n backLabel: 'back',\n $elements: null,\n isQueue: false,\n isRTL: false,\n\n init: function () {\n slide.$slide =\n '';\n\n slide.$elements = $(slide.$slide);\n slide.displaySlideHtmlToPage();\n\n slide.$contents = slide.$elements.find('.w-slide__content');\n slide.$slideinfo = slide.$elements.find('.w-slide__title');\n slide.$back = slide.$elements.find('.w-slide__back');\n slide.$toggle = $('.w-slide__btn');\n\n slide.elementvPort = slide.vPort;\n slide.vPort = [];\n\n slide.customViewPorts();\n\n slide.$toggle.each(function (index) {\n slide.check.viewPort($(this), index);\n slide.responsive(index);\n });\n\n slide.additionalInitialization();\n slide.control();\n slide.additionalControls();\n if (typeof facetDateChart != 'undefined') {\n facetDateChart.control(); /*eslint-disable-line*/\n }\n\n if (UX.utils && UX.utils.isRTL()) {\n slide.isRTL = true;\n }\n },\n displaySlideHtmlToPage: () => {\n let $main = $('main');\n if ($main.length > 0) $main.append(slide.$elements);\n else $body.append(slide.$elements);\n },\n additionalInitialization: function () {},\n responsive: function (index) {\n $(document).on(slide.vPort[index] + '-on', function () {\n // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n slide.off = false;\n\n $('.w-slide__btn').each(function () {\n if ($(this).data('ctrl-res') === slide.vPort[index]) {\n $(this).addClass('slide-active');\n }\n });\n });\n\n $(document).on(slide.vPort[index] + '-off', function (e) {\n // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n slide.off = true;\n slide.on.off(e);\n\n $('.w-slide__btn').each(function () {\n if ($(this).data('ctrl-res') === slide.vPort[index]) {\n $(this).removeClass('slide-active');\n }\n });\n });\n\n $(document).on(slide.elementvPort + '-on', function (e) {\n // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n slide.isMobile = true;\n slide.$elements.css('margin-top', 0);\n if ($('.w-slide.js--open').length) {\n slide.back = true;\n slide.on.hide(e);\n }\n });\n\n $(document).on(slide.elementvPort + '-off', function (e) {\n // Waiting for custom event that will be triggered by controller.js to activate responsive effects\n slide.isMobile = false;\n if ($('.w-slide.js--open').length) {\n slide.back = true;\n slide.on.hide(e);\n }\n });\n\n slide.additionalResponsive();\n },\n additionalResponsive: function () {},\n control: function () {\n $body.on('click', '.w-slide__btn', function (e) {\n if (slide.isQueue && slide.isMobile) {\n e.stopImmediatePropagation();\n $(this).off('click');\n return false;\n }\n slide.isQueue = true;\n\n if ($(this).hasClass('disable')) {\n e.stopPropagation();\n e.preventDefault();\n return;\n }\n\n if ($(this).hasClass('slide-active')) {\n e.stopPropagation();\n e.preventDefault();\n slide.addTransition();\n slide.$toggle = $(this);\n slide.$target = $(slide.$toggle.data('slide-target'));\n slide.back = false;\n\n if ($(this).is('[id*=pane-pcw]') && UX.tab.check.empty($(this))) {\n setTimeout(function () {\n slide.on.show(e);\n }, 3000);\n } else {\n slide.on.show(e);\n }\n }\n });\n\n $body.on('click', '.w-slide__back, .w-slide__hide', function (e) {\n if ($(this).hasClass('w-slide__back')) {\n e.preventDefault();\n }\n\n slide.back = true;\n slide.on.hide(e);\n });\n },\n additionalControls: function () {},\n addTransition: function () {\n $('.w-slide, .w-slide__content').css('transition', 'all 250ms');\n },\n removeTransition: function () {\n $('.w-slide, .w-slide__content').css('transition', '');\n },\n customViewPorts: function () {\n if ($('.journal-home').length) {\n slide.elementvPort = 'screen-md';\n }\n },\n setBackLabel: function () {\n slide.$back.html('' + slide.backLabel);\n },\n on: {\n show: function (e) {\n $(document).trigger('UX-detach');\n if (typeof jcf != 'undefined') {\n jcf.destroy($('.range-slider__range')); /*eslint-disable-line*/\n }\n\n /**\n * Fire \"open\" event\n * this event is Cancelable: which means if e.preventDefault() is called then the slide will not open.\n */\n const openingEvent = $.Event('slide:open');\n $(document).trigger(openingEvent, [slide]);\n if (openingEvent.isDefaultPrevented()) {\n return;\n }\n\n if ($body.attr('data-active') !== 'undefined') {\n UX.controller.check(e);\n }\n\n if (slide.$toggle.is('[data-full-screen]') && !slide.$toggle.data('[full-screen]') && !slide.isMobile)\n $body.addClass('w-slide__not-fullWidth');\n else $body.removeClass('w-slide__not-fullWidth');\n\n slide.nested = slide.$toggle.parents('.w-slide__content').length > 0;\n slide.multi =\n slide.$toggle.closest('.pill-list').length > 0 || slide.$toggle.is('[data-slide-target*=\"#pill\"]');\n if (slide.$toggle.closest('.w-slide__pill').length > 0) {\n slide.nested = false;\n slide.multi = true;\n }\n\n const popupType = e.currentTarget?.getAttribute('aria-haspopup');\n if (popupType) slide.$elements.attr('role', popupType === 'true' ? 'menu' : popupType);\n\n slide.on.additionalShow();\n\n slide.$slideinfo.hide().removeClass('js--open');\n slide.backLabel = 'back';\n slide.setBackLabel();\n\n if (slide.nested) {\n slide.on._nestSlide();\n }\n\n if (slide.multi) {\n if (slide.activeSlide !== 0) {\n slide.back = true;\n slide.on.hide(e);\n }\n\n slide.activeSlide++;\n slide.$elements\n .addClass('w-slide__pill')\n .find('.w-slide__content')\n .append('
    ');\n slide.$contents = $('.nested--' + slide.activeSlide);\n }\n\n slide.$contents.attr('original-target', slide.$toggle.data('slide-target'));\n\n if (slide.$target.hasClass('tab__pane')) {\n slide.$target.closest('.tab__content').find('.tab__pane').removeClass('active');\n slide.$target.addClass('active');\n }\n\n let label = slide.$toggle.text();\n if (slide.$toggle.is('[data-label]')) {\n label = slide.$toggle.data('label');\n }\n\n //LIT-163835\n if (slide.$toggle.hasClass('loa') || slide.$toggle.parents('.loa.mobile-authors').length > 0) {\n label = 'AUTHORS';\n }\n\n let clonedDiv = slide.$target.children();\n\n slide.on.destroyJcf(clonedDiv);\n\n if (slide.$toggle.is('[data-slide-clone]')) {\n slide.clone = slide.$toggle.data('slide-clone');\n\n if (slide.clone === 'self') {\n clonedDiv = slide.$target;\n }\n } else {\n slide.clone = '';\n }\n\n slide.oldInfo.push(label);\n slide.$slideinfo.html(label);\n\n const isLoi = slide.$target.find('.loi').length > 0;\n if (isLoi) {\n slide.$contents.append(clonedDiv.html());\n $('.dropBlock-loi__holder .loi').remove();\n slide.$contents.find('.loi__list').each(function () {\n UX.loi.on.recalculate($(this));\n });\n } else {\n if (slide.clone === 'self') {\n if (slide.nested || slide.multi) {\n slide.$target.after('
    ');\n } else {\n slide.$target.after('
    ');\n }\n } else {\n if (slide.nested || slide.multi) {\n slide.$target.append('
    ');\n } else {\n slide.$target.append('
    ');\n }\n }\n\n clonedDiv.appendTo(slide.$contents);\n\n slide.on.rebuildJcf(slide.$contents);\n }\n\n // This is needed for refreshing the google ads iframe\n // because we are cloning it into element\n // for more info: https://stackoverflow.com/questions/435391/refresh-a-div-that-has-a-google-ad-inside-it/12083756#12083756\n if (typeof googletag !== 'undefined' && typeof googletag.pubads !== 'undefined') { /*eslint-disable-line*/\n googletag.pubads().refresh(); /*eslint-disable-line*/\n }\n $body.addClass('lock-screen slide-is-active').attr('data-active', 'slide');\n slide.$back.focus();\n\n const $coolBar = $('.coolBar');\n if ($coolBar.length) {\n $coolBar.addClass('slide');\n }\n /*\n $('.w-slide__title').truncate({\n lines: 1\n });\n */\n\n // \"opened\" event\n const openEvent = $.Event('slide:opened');\n\n if (slide.wait) {\n setTimeout(function () {\n slide.on._showSlide();\n slide.on.slidePill();\n $(document).trigger(openEvent, [slide]);\n }, 150);\n slide.wait = false;\n } else {\n slide.on._showSlide();\n $(document).trigger(openEvent, [slide]);\n }\n\n $(document).trigger('UX-attach');\n },\n _showSlide: function () {\n var slideWidth = '100%';\n\n var $slidedDiv = slide.$elements;\n if (slide.nested || slide.multi) {\n $slidedDiv = slide.$contents;\n }\n\n if (!slide.$elements.hasClass('js--open') && slide.multi) {\n $slidedDiv = $('[class*=nested--], .w-slide');\n }\n let translate = `-${slideWidth}`;\n if (slide.isRTL) {\n translate = slideWidth;\n }\n\n $slidedDiv\n .css('transform', `translateX(${translate})`)\n .off()\n .one('transitionend webkitTransitionEnd oTransitionEnd', function (e) {\n e.stopPropagation();\n slide.isQueue = false;\n slide.removeTransition();\n });\n slide.$slideinfo.show().addClass('js--open');\n slide.$elements.addClass('js--open');\n slide.on.additionalShowSlide();\n },\n _nestSlide: function () {\n slide.activeSlide++;\n slide.$contents.append('
    ');\n slide.$contents = $('.nested--' + slide.activeSlide);\n },\n additionalShow: function () {},\n additionalShowSlide: function () {},\n slidePill: function () {},\n hide: function (e) {\n const isInsideSlide = $(e.target).closest('.w-slide').length;\n /**\n * Fire \"close\" event\n * this event is Cancelable: which means if e.preventDefault() is called then the slide will not close.\n */\n var closingEvent = $.Event('slide:close');\n $(document).trigger(closingEvent, [slide]);\n if (closingEvent.isDefaultPrevented()) {\n return;\n }\n\n if (typeof e !== 'undefined' && $('.w-slide').hasClass('js--open')) {\n if (!isInsideSlide) {\n slide.back = true;\n }\n }\n\n if (slide.back) {\n slide.addTransition();\n slide.$slideinfo.hide().removeClass('js--open');\n\n slide.nested = true;\n\n if (slide.activeSlide === 0) {\n slide.nested = false;\n slide.$contents = slide.$elements.children('.w-slide__content');\n } else {\n slide.$contents = $('.nested--' + slide.activeSlide);\n }\n slide.on.destroyJcf(slide.$contents);\n\n let originalTarget = $(slide.$contents.attr('original-target'));\n if (!originalTarget) {\n originalTarget = $body;\n }\n\n const isLoi = slide.$elements.find('.loi').length > 0;\n\n slide.on.beforeReturnSlideContent();\n\n if (isLoi) {\n const $dropBlockHolder = $('.dropBlock-loi__holder');\n $dropBlockHolder.append(slide.$contents.html());\n $dropBlockHolder.find('.loi__list').each(function () {\n UX.loi.on.recalculate($(this));\n });\n } else {\n if (slide.$contents.find('[class*=nested--]').length) {\n slide.$contents.find('[class*=nested--]').remove();\n }\n slide.on._returnDataSlide(originalTarget);\n slide.on.rebuildJcf(originalTarget);\n }\n\n slide.oldInfo.splice(slide.activeSlide, 1);\n slide.$slideinfo.html(slide.oldInfo[slide.activeSlide - 1]);\n if (slide.$toggle) {\n slide.$toggle.focus();\n }\n\n if (slide.nested) {\n slide.activeSlide--;\n slide.on._hideSlide();\n if (slide.multi) {\n slide.$contents.remove();\n }\n slide.$contents = $('.nested--' + slide.activeSlide);\n if (slide.activeSlide === 0) {\n slide.$contents = slide.$elements.children('.w-slide__content');\n }\n } else {\n slide.activeSlide = 0;\n $('body, html').removeClass('lock-screen');\n $body.removeClass('lock-screen slide-is-active').removeAttr('data-active');\n const $coolBar = $('.coolBar');\n if ($coolBar.length) {\n $coolBar.removeClass('slide');\n }\n\n slide.on._hideSlide();\n slide.$elements.removeClass('js--open');\n slide.$elements.removeAttr('role');\n }\n slide.$slideinfo.show().addClass('js--open');\n\n slide.backLabel = 'back';\n slide.setBackLabel();\n slide.on.additionalHide(e);\n\n if (slide.$elements.hasClass('w-slide__pill')) {\n while (slide.activeSlide > 0) {\n slide.activeSlide--;\n slide.on.hide(e);\n }\n\n if (\n typeof e !== 'undefined' &&\n ($(e.target).hasClass('w-slide__back') || $(e.currentTarget).hasClass('w-slide__back')) &&\n slide.activeSlide === 0\n ) {\n slide.on.off(e);\n }\n }\n\n if (!isInsideSlide && !(typeof e !== 'undefined' && $(e.target).closest('.pill-list').length)) {\n slide.on.off(e);\n }\n\n slide.removeTransition();\n }\n\n // This is needed for refreshing the google ads iframe\n // because we are cloning it into element\n // for more info: https://stackoverflow.com/questions/435391/refresh-a-div-that-has-a-google-ad-inside-it/12083756#12083756\n if (typeof googletag !== 'undefined' && typeof googletag.pubads !== 'undefined') { /*eslint-disable-line*/\n googletag.pubads().refresh(); /*eslint-disable-line*/\n }\n\n // \"closed\" event\n const closeEvent = $.Event('slide:closed');\n $(document).trigger(closeEvent, [slide]);\n },\n _hideSlide: function () {\n let updateTarget = slide.$elements;\n if (slide.nested) updateTarget = slide.$contents;\n\n updateTarget\n .css('transform', 'translateX(0vw)')\n .off()\n .one('transitionend webkitTransitionEnd oTransitionEnd', function (e) {\n e.stopPropagation();\n if (slide.back)\n if (!slide.nested) slide.$contents.empty();\n else $(this).remove();\n });\n },\n _returnDataSlide: function (originalTarget) {\n const returnDataSlideHere =\n slide.nested || slide.multi ? '.returnNestedDataSlideHere' : '.returnDataSlideHere';\n const $returnDataSlideHere =\n slide.clone === 'self' ? $(returnDataSlideHere) : $(returnDataSlideHere, originalTarget);\n slide.$contents.children().appendTo($returnDataSlideHere.parent());\n $returnDataSlideHere.remove();\n },\n additionalHide: function (e) {},\n beforeReturnSlideContent: function () {},\n off: function (e) {\n slide.$slideinfo.hide().removeClass('js--open');\n\n $('.pill-list li').removeClass('pill-active');\n\n const isLoi = slide.$elements.find('.loi').length > 0;\n\n if (isLoi) {\n slide.$contents = $('.loi').closest('.w-slide__content');\n\n const $dropBlockHolder = $('.dropBlock-loi__holder');\n $dropBlockHolder.append(slide.$contents.html());\n $dropBlockHolder.find('.loi__list').each(function () {\n UX.loi.on.recalculate($(this));\n });\n }\n $('body, html').removeClass('lock-screen');\n $body.removeClass('lock-screen slide-is-active').removeAttr('data-active');\n $('.coolBar').removeClass('slide');\n slide.$contents = slide.$elements.children('.w-slide__content');\n slide.$elements\n .css('transform', 'translateX(0vw)')\n .off()\n .one('transitionend webkitTransitionEnd oTransitionEnd', function (e) {\n e.stopPropagation();\n slide.$elements.removeClass('js--open');\n if (slide.off) {\n $('.w-slide').removeClass('w-slide__pill');\n slide.$contents.empty();\n }\n });\n slide.off = false;\n slide.on.additionalOff(e);\n },\n additionalOff: function (e) {},\n destroyJcf: function ($el) {\n if (typeof jcf != 'undefined') {\n jcf.destroy($el.find('.jcf')); /*eslint-disable-line*/\n }\n },\n rebuildJcf: function ($el) {\n if (typeof jcf != 'undefined') {\n jcf.replace($el.find('.jcf')); /*eslint-disable-line*/\n }\n },\n },\n check: {\n viewPort: function ($el, index) {\n if (typeof $el.data('ctrl-res') !== 'undefined') {\n slide.vPort[index] = $el.data('ctrl-res');\n } else {\n $el.data('ctrl-res', slide.elementvPort);\n slide.vPort[index] = slide.elementvPort;\n }\n },\n },\n };\n\n UX.slide = slide; // add to global namespace\n})();\n","(function () {\n var $body = $('body');\n\n var scrollo = {\n init: function () {\n scrollo.control();\n },\n offset: function (el) {\n var rect = el.getBoundingClientRect();\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n\n return {\n top: rect.top + scrollTop,\n left: rect.left + scrollLeft,\n };\n },\n adjustAnchor: function (e) {\n e.preventDefault();\n const $anchor = $(':target');\n const fixedElementsHeight = scrollo.get.fixedpageElementsHeight();\n\n if ($anchor.length > 0) {\n e.stopPropagation();\n // When we prevent default, we have to also change focus to target manually\n $anchor.eq(0).focus();\n window.scrollTo(0, scrollo.offset($anchor.get(0)).top - fixedElementsHeight);\n }\n },\n control: function () {\n $(window).on('hashchange load', scrollo.adjustAnchor);\n /**\n * checks for any tag that has the hash-tag prefix and execute the adjustAnchor function\n * the .content a[href^=\"#\"] was added to support the publication content tags\n */\n $body.on(\n 'click',\n 'a.table-fn[href^=\"#\"], a.ref.fn[href^=\"#\"], .scroll-to-target a[href^=\"#\"], .content a[href^=\"#\"]',\n function (e) {\n if (window.location.hash === $(this).attr('href')) {\n scrollo.adjustAnchor(e);\n }\n }\n );\n $body.on('click keydown', 'a[href^=\"#\"].sr-only-focusable', function (e) {\n // pass click and ENTER to action\n if (e.keyCode && e.keyCode !== 13) {\n return;\n }\n if (window.location.hash === $(this).attr('href')) {\n scrollo.adjustAnchor(e);\n }\n });\n $body.on('click', '.w-slide__back', function () {\n if ($('[data-scroll-back-to]').length) {\n $(document).scrollTop($('[data-scroll-back-to]').data('scroll-back-to'));\n $('[data-scroll-back-to]').removeAttr('data-scroll-back-to');\n }\n });\n },\n\n get: {\n fixedpageElementsHeight: function () {\n var elementsHeight = 0;\n\n var $fixedHeader = $('header.fixed, .pageHeader');\n if ($fixedHeader.length) {\n elementsHeight = $fixedHeader.outerHeight();\n }\n\n const $scrolloThenFix = $('.scrollThenFix');\n if ($scrolloThenFix.length) {\n elementsHeight = $scrolloThenFix.outerHeight();\n }\n\n const $stickyCoolbar = $('.coolBar.stickybar--sticky');\n let stickyCoolbarHeigh = 0;\n if ($stickyCoolbar.length) {\n stickyCoolbarHeigh = $stickyCoolbar.outerHeight();\n if (stickyCoolbarHeigh === 0) {\n stickyCoolbarHeigh = $stickyCoolbar.find('.stickybar__wrapper').outerHeight();\n }\n elementsHeight += stickyCoolbarHeigh;\n }\n\n if ($('header .scrollThenFix, .coolBar').length) {\n $.each($('header .scrollThenFix, .coolBar'), function (index, value) {\n if ($(value).outerHeight()) {\n elementsHeight += $(value).outerHeight();\n }\n });\n }\n\n return elementsHeight;\n },\n },\n };\n\n UX.scrollo = scrollo; // add to global namespace\n})();\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","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 '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","import {\n BrowserUtils,\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentSelectors,\n ComponentService,\n Inject,\n UIComponent\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject {\n}\n\nclass ClassList extends ComponentObject {\n}\n\nclass Selectors extends ComponentSelectors {\n addRangeFields = new ComponentSelector('.ip-ranges__add-range input[name=\"ipRanges\"]');\n addRangeSubmitButtons = new ComponentSelector('.ip-ranges__add-range input[type=\"submit\"]');\n updateRangesCheckboxes = new ComponentSelector('.ip-ranges__update-range tr:not(.ip-ranges__update-range__ignore-conflicts) input[type=\"checkbox\"]');\n updateRangesSubmitButtons = new ComponentSelector('.ip-ranges__update-range input[type=\"submit\"]');\n}\n\nclass Elements extends ComponentElements {\n addRangeFields: Array = [];\n addRangeSubmitButtons: Array = [];\n updateRangesCheckboxes: Array = [];\n updateRangesSubmitButtons: Array = [];\n}\n\ninterface ipRanges extends ComponentService {\n}\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass ipRanges implements UIComponent {\n @Inject()\n protected browserUtils: BrowserUtils;\n\n constructor(readonly wrapper: HTMLElement) {\n }\n\n initialize(): void {\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.addRangeFields.forEach((field) => {\n field.addEventListener('input', this.handleAddRangeFieldChange.bind(this, field));\n });\n this.elements.updateRangesCheckboxes.forEach(checkbox => {\n checkbox.addEventListener('change', this.handleUpdateRangeFieldChange.bind(this, checkbox));\n });\n }\n\n protected handleAddRangeFieldChange(): void {\n const anyIsEmpty = this.elements.addRangeFields.some(field => field.value.trim() === '');\n this.setSubmitButtonsDisable(this.elements.addRangeSubmitButtons, anyIsEmpty)\n }\n\n protected handleUpdateRangeFieldChange(): void {\n const anyIsChecked = this.elements.updateRangesCheckboxes.some(checkbox => checkbox.checked);\n this.setSubmitButtonsDisable(this.elements.updateRangesSubmitButtons, !anyIsChecked)\n }\n\n protected setSubmitButtonsDisable(array: Array = [], isDisabled: boolean): void {\n array.forEach(button => {\n button.disabled = isDisabled;\n })\n }\n}\n\nexport default ipRanges;\n\nexport {\n Elements as IpRangesElements,\n Selectors as IpRangesSelectors,\n ClassList as IpRangesClassList,\n Texts as IpRangesTexts,\n}","import 'ui-core/plugins/slide/js/slide';\nconst slide = UX.slide;\nslide.setBackLabel = function () {\n slide.$back.html('');\n slide.$back.attr('aria-label', 'back');\n};\n\nslide.displaySlideHtmlToPage = () => {\n const $content = $('.content.journal-branding');\n const $main = $('main');\n if ($content.length > 0) $content.append(slide.$elements);\n else if ($main.length > 0) $main.append(slide.$elements);\n else $('body').append(slide.$elements);\n};\n\nslide.on._nestSlide = function () {\n slide.activeSlide++;\n slide.$contents = slide.$elements.find('.w-slide__content:not([class*=\"nested--\"])');\n slide.$contents.append('
    ');\n slide.$contents = $('.nested--' + slide.activeSlide);\n};\n\nslide.on._returnDataSlide = function (originalTarget) {\n const returnDataSlideHere = slide.nested || slide.multi ? '.returnNestedDataSlideHere' : '.returnDataSlideHere';\n const $returnDataSlideHere =\n slide.clone === 'self' ? $(returnDataSlideHere) : $(returnDataSlideHere, originalTarget);\n slide.$contents.children().appendTo($returnDataSlideHere.last().parent());\n $returnDataSlideHere.last().remove();\n};\n","\n import '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/plugins/drawer/js/drawer';\n \nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-theme/plugins/slide/js/slide';\n \nconst main = (UX) => {\n const $menu = document.getElementById('mainNav'),\n $slide = Array.prototype.slice.call(document.getElementsByClassName('w-slide__btn'))\n\ntry {\n if ($menu ) {\n UX.menu.init($menu);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($slide.length ) {\n UX.slide.init($slide);\n }\n } catch (err) {\n console.error(err);\n }\n \n}\n\n export default main;\n ","import 'ui-core/plugins/scrollo/js/scrollo';\n(function () {\n if (typeof UX.scrollo !== 'undefined') {\n const scrollo = UX.scrollo;\n scrollo.get.fixedpageElementsHeight = function () {\n let elementsHeight = 0;\n const $fixedHeader = $('header.fixed');\n if ($fixedHeader.length) {\n elementsHeight = $fixedHeader.outerHeight();\n }\n\n const $stickyCoolbar = $('.actions-block-container');\n let stickyCoolbarHeigh = 0;\n if ($stickyCoolbar.length) {\n stickyCoolbarHeigh = $stickyCoolbar.outerHeight();\n elementsHeight += stickyCoolbarHeigh;\n }\n\n const $coolBarRes = $('.actionsbar__has__sections');\n if ($coolBarRes.length) {\n elementsHeight += $coolBarRes.outerHeight();\n }\n\n return elementsHeight;\n };\n UX.scrollo = scrollo;\n }\n})();\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/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-theme/plugins/scrollo/js/scrollo';\n \nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-core/plugins/stickyElements/js/stickyElements';\n \nconst main = (UX) => {\n const $scrollo = Array.prototype.slice.call(document.querySelectorAll('.table-fn, .ref.fn, .scroll-to-target'))\n\ntry {\n if ($scrollo.length ) {\n UX.scrollo.init($scrollo);\n }\n } catch (err) {\n console.error(err);\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/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-theme/components/modal/js/modal';\n\nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-core/components/accordion/js/accordion';\n\nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-core/components/drop-block/js/drop-block';\n\nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-core/components/back-to-top/js/back-to-top';\n\nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-theme/components/sections-navbar/js/sections-navbar';\n\nimport QuickSearch from '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/widgets/quick-search/js/quick-search';\nimport '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-theme/widgets/raa/js/raa';\n\nimport ipRanges from '/mnt/ssd/na102/home/staging/sourcegit/ui-products-branches/maint-250304-2a49dd84/ui-products/ispe/node_modules/ui-core/widgets/ip-ranges/js/ip-ranges';\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 $backToTop = Array.prototype.slice.call(document.getElementsByClassName('back-to-top')),\n $sidebarSections = Array.prototype.slice.call(document.getElementsByClassName('sections-block')),\n $quickSearch = Array.prototype.slice.call(document.getElementsByClassName('quick-search')),\n $ipRanges = document.querySelector('.ipRangesWidget')\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 ($backToTop.length ) {\n UX.backToTop.init($backToTop);\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($sidebarSections.length ) {\n UX.sidebarSections.init($sidebarSections);\n }\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 ($ipRanges ) {\n UX.ipRanges = new ipRanges($ipRanges).initialize()\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":""}