{"version":3,"sources":["webpack:///./components/back-to-top/js/back-to-top.ts","webpack:///./components/recommended-wrapper/js/recommended-wrapper.ts","webpack:///./widgets/quick-search/js/quick-search.ts","webpack:///./templates/signUp/js/signUp.js","webpack:///./templates/article/js/article.ts","webpack:///./templates/article/js/show-recommended-test.ts","webpack:///./plugins/drawer/js/drawer.js"],"names":["VISIBLE","SNAPPED","backToTop","backToTopAction","backToTopRing","wrapper","elementsInitializer","this","elements","domUtils","getElement","selectors","dataset","snap","snapElement","style","position","showAfter","Number","initialize","addEventListeners","initScroll","event","getElements","forEach","element","addEventListener","preventDefault","window","scrollTo","top","behavior","e","scrollTop","scrollY","classList","add","remove","isSnapElScrolledBy","setAttribute","getScrollPercent","offsetTop","getBoundingClientRect","pageYOffset","snapEl","docViewBottom","containerHight","screen","availHeight","height","h","document","documentElement","b","body","st","sh","clientHeight","BackToTop","Selectors","Elements","ClassList","Texts","HTMLElement","POPUP_VISIBLE","POPUP_SNAPPED","POPUP_CLOSED","RecommendedWrapper","RecommendedWrapperAction","RecommendedWrapperRing","popupElement","CloseBTN","readyState","checkAndRemove","stopPropagation","hide","changeSubmitButtonState","allEmpty","citationSearchJournalField","value","validator","isNotEmpty","citationSearchDoiField","citationSubmit","removeAttribute","registerCitationSearchEvents","bind","QuickSearch","signUpAlert","form","checkBoxElements","checkBoxTitle","checkBoxError","isErrorVisible","init","initAddEventListener","_this","querySelector","getAttribute","isJournalSelected","handleOnSubmitError","checked","querySelectorAll","item","errorEle","createElement","innerText","insertAdjacentElement","UX","Altmetric","AltmetricMainLink","contentReplacer","outterLink","innerLinkImage","cloneNode","innerHTML","appendChild","popup","closeBTN","header","popupAppeared","handleShowPopup","contains","showPopup","hidePopup","closePopup","foucuseOutClick","zIndex","ShowRecommendedTest","menu","$window","$","$body","control","on","$toggle","$target","data","items","find","each","index","length","lastItem","show","target","closest","removeClass","hasClass","parents","attr","nestedMenu","nested","isMobile","hideNested","keyCode","which","revers","tabRevers","tab","i","$elem","listPosition","handleHeightSet","handleResize","shiftKey","tabDesktop","escDesktop","siblings","focus"],"mappings":"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","file":"js/lazy-imports-2376d7ded78c8bb52612.js","sourcesContent":["import {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentService,\n UIComponent,\n ComponentSelectors,\n Inject,\n BrowserUtils\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject { \n VISIBLE = 'back-to-top--visible';\n SNAPPED = 'back-to-top--snapped';\n }\n\nclass Selectors extends ComponentSelectors {\n backToTop = '.back-to-top';\n backToTopAction = '.back-to-top__action';\n backToTopRing = '.back-to-top__action__ring';\n}\n\nclass Elements extends ComponentElements {\n snapElement: HTMLElement;\n backToTop: HTMLElement;\n backToTopAction: HTMLElement;\n backToTopRing: HTMLElement;\n}\n\ninterface BackToTop extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass BackToTop implements UIComponent {\n\n @Inject()\n protected browserUtils: BrowserUtils;\n snapElement;\n showAfter;\n constructor(readonly wrapper: HTMLElement) {}\n elementsInitializer () {\n this.elements.backToTop = this.wrapper[0];\n this.elements.backToTopAction = this.domUtils.getElement(this.selectors.backToTopAction);\n this.elements.backToTopRing = this.domUtils.getElement(this.selectors.backToTopRing);\n if (this.elements.backToTopAction.dataset.snap) {\n this.snapElement = this.elements.backToTopAction.dataset.snap;\n }\n \n this.elements.snapElement = this.domUtils.getElement(`.${this.snapElement}`);\n if (this.elements.snapElement) {\n this.elements.snapElement.style.position = 'relative';\n }\n this.showAfter = Number(this.elements.backToTop.dataset.showAfter);\n }\n\n initialize(): void {\n this.elementsInitializer()\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n }\n\n\n addEventListeners(): void {\n this.initScroll();\n }\n\n initScroll(event?: CustomEvent) {\n const backToTopAction = this.domUtils.getElements(this.selectors.backToTopAction);\n backToTopAction.forEach((element)=>{\n element.addEventListener('click', event => {\n event.preventDefault();\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n });\n });\n \n window.addEventListener('scroll',(e)=>{\n var scrollTop = window.scrollY\n if (scrollTop > this.showAfter) {\n this.elements.backToTop.classList.add(this.classList.VISIBLE);\n } else if (scrollTop <= this.showAfter) {\n this.elements.backToTop.classList.remove(this.classList.VISIBLE);\n }\n if (this.snapElement) {\n if (this.isSnapElScrolledBy()) {\n this.elements.backToTop.classList.add(this.classList.SNAPPED);\n } else {\n this.elements.backToTop.classList.remove(this.classList.SNAPPED);\n }\n }\n this.elements.backToTopRing.setAttribute('stroke-dasharray', `${this.getScrollPercent()}, 100`);\n })\n }\n\n offsetTop (element:HTMLElement){\n // Get the top offset of the element relative to the top of the viewport\n var elementTop = element.getBoundingClientRect().top;\n // Get the current vertical scroll position of the window\n var scrollOffset = window.pageYOffset || element.scrollTop;\n // Calculate the space between the top of the element and the top of the page\n var spaceBetween = elementTop + scrollOffset;\n return spaceBetween\n }\n\n isSnapElScrolledBy() {\n var iconRelativeOffset = 136;\n var snapEl = this.elements.snapElement;\n var docViewBottom = this.offsetTop(snapEl);\n var containerHight = window.screen.availHeight - snapEl.getBoundingClientRect().height \n var backToTopPos = window.scrollY + containerHight + iconRelativeOffset;\n return backToTopPos >= docViewBottom;\n }\n\n getScrollPercent() {\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return ((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight)) * 100;\n }\n}\n\nexport default BackToTop;\n\nexport {\n Elements as BackToTopElements,\n Selectors as BackToTopSelectors,\n ClassList as BackToTopClassList,\n Texts as BackToTopTexts\n}\n\n","import {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentService,\n UIComponent,\n ComponentSelectors,\n Inject,\n BrowserUtils\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject { \n VISIBLE = 'recommended-wrapper--visible';\n SNAPPED = 'recommended-wrapper--snapped';\n POPUP_VISIBLE = 'show-recommeneded-popup--visible';\n POPUP_SNAPPED = 'show-recommeneded-popup--snapped';\n POPUP_CLOSED = 'show-recommeneded-popup--closed';\n }\n\nclass Selectors extends ComponentSelectors {\n RecommendedWrapper = '.recommended-wrapper';\n RecommendedWrapperAction = '.recommended-wrapper__action';\n RecommendedWrapperRing = '.recommended-wrapper__action__ring';\n popupElement = \".show-recommeneded-popup\";\n CloseBTN = \".closeBTN\";\n\n}\n\nclass Elements extends ComponentElements {\n snapElement: HTMLElement;\n RecommendedWrapper: HTMLElement;\n RecommendedWrapperAction: HTMLElement;\n RecommendedWrapperRing: HTMLElement;\n popupElement: HTMLElement;\n}\n\ninterface RecommendedWrapper extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass RecommendedWrapper implements UIComponent {\n\n @Inject()\n protected browserUtils: BrowserUtils;\n snapElement;\n showAfter;\n constructor(readonly wrapper: HTMLElement) {}\n elementsInitializer () {\n this.elements.RecommendedWrapper = this.wrapper[0];\n this.elements.RecommendedWrapperAction = this.domUtils.getElement(this.selectors.RecommendedWrapperAction);\n this.elements.RecommendedWrapperRing = this.domUtils.getElement(this.selectors.RecommendedWrapperRing);\n this.elements.popupElement = this.domUtils.getElement(this.selectors.popupElement);\n if (this.elements.RecommendedWrapperAction.dataset.snap) {\n this.snapElement = this.elements.RecommendedWrapperAction.dataset.snap;\n }\n \n this.elements.snapElement = this.domUtils.getElement(`.${this.snapElement}`);\n if (this.elements.snapElement) {\n this.elements.snapElement.style.position = 'relative';\n }\n this.showAfter = Number(this.elements.RecommendedWrapper.dataset.showAfter);\n }\n\n initialize(): void {\n this.elementsInitializer()\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n document.readyState !== 'loading' ? this.checkAndRemove() : document.addEventListener(\"DOMContentLoaded\", this.checkAndRemove);\n }\n\n checkAndRemove(): void {\n if (!this.elements.popupElement) {\n this.elements.RecommendedWrapper.remove();\n }\n };\n \n addEventListeners(): void {\n this.initScroll();\n }\n\n initScroll(event?: CustomEvent) {\n this.elements.RecommendedWrapperAction.addEventListener('click', event => {\n event.stopPropagation();\n this.elements.popupElement?.classList.remove(this.classList.POPUP_SNAPPED,this.classList.POPUP_CLOSED); \n this.elements.popupElement?.classList.add(this.classList.POPUP_VISIBLE);\n });\n \n window.addEventListener('scroll',(e)=>{\n var scrollTop = window.scrollY\n if (scrollTop > this.showAfter) {\n this.elements.RecommendedWrapper.classList.add(this.classList.VISIBLE);\n } else if (scrollTop <= this.showAfter) {\n this.elements.RecommendedWrapper.classList.remove(this.classList.VISIBLE);\n }\n if (this.snapElement) {\n if (this.isSnapElScrolledBy()) {\n this.elements.RecommendedWrapper.classList.add(this.classList.SNAPPED);\n } else {\n this.elements.RecommendedWrapper.classList.remove(this.classList.SNAPPED);\n }\n }\n this.elements.RecommendedWrapperRing.setAttribute('stroke-dasharray', `${this.getScrollPercent()*3}, 100`);\n })\n }\n\n offsetTop (element:HTMLElement){\n var elementTop = element.getBoundingClientRect().top;\n var scrollOffset = window.pageYOffset || element.scrollTop;\n var spaceBetween = elementTop + scrollOffset;\n return spaceBetween\n }\n\n isSnapElScrolledBy() {\n var iconRelativeOffset = 136;\n var snapEl = this.elements.snapElement;\n var docViewBottom = this.offsetTop(snapEl);\n var containerHight = window.screen.availHeight - snapEl.getBoundingClientRect().height \n var RecommendedWrapperPos = window.scrollY + containerHight + iconRelativeOffset;\n return RecommendedWrapperPos >= docViewBottom;\n }\n\n getScrollPercent() {\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return ((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight)) * 100;\n }\n}\n\nexport default RecommendedWrapper;\n\nexport {\n Elements as RecommendedWrapperElements,\n Selectors as RecommendedWrapperSelectors,\n ClassList as RecommendedWrapperClassList,\n Texts as RecommendedWrapperTexts\n}\n\n","import { ComponentSelector, ComponentInjector } from '@atypon/ui-utils';\nimport PhotoQuickSearch, {\n PhotoQuickSearchElements,\n PhotoQuickSearchSelectors,\n PhotoQuickSearchTexts,\n PhotoQuickSearchClassList\n} from 'ui-theme/widgets/quick-search/js/quick-search';\n\nclass Texts extends PhotoQuickSearchTexts { }\n\nclass ClassList extends PhotoQuickSearchClassList {\n hide = 'hidden';\n}\n\nclass Selectors extends PhotoQuickSearchSelectors {}\n\nclass Elements extends PhotoQuickSearchElements {}\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 PhotoQuickSearch {\n protected changeSubmitButtonState() {\n let allEmpty = true;\n const CSJ = this.elements.citationSearchJournalField;\n const CSJvalue = !!CSJ.value\n\n if (\n CSJvalue ||\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', 'false');\n } else {\n this.elements.citationSubmit.removeAttribute('disabled');\n }\n }\n protected registerCitationSearchEvents() {\n super.registerCitationSearchEvents()\n this.domUtils.addEventListener(this.elements.citationSearchJournalField, 'change', this.changeSubmitButtonState.bind(this));\n }\n}\n\nexport default QuickSearch;","// TODO need refactor\n\n(function () {\n const signUpAlert = {\n selectors: {\n form: '.alert__form',\n checkBoxElements: '.checkbox--primary [name=\"journalCode\"]',\n checkBoxTitle: '.alert-checkbox-label',\n checkBoxError: '.alert-checkbox-error',\n },\n isErrorVisible: false,\n init: function () {\n this.initAddEventListener();\n },\n initAddEventListener: function () {\n const form = document.querySelector(this.selectors.form);\n if (form.getAttribute('action') === '/action/doUpdateAlertSettings') {\n document.querySelector(this.selectors.form).addEventListener('submit', e => {\n if (!this.isJournalSelected()) {\n e.preventDefault();\n if (!this.isErrorVisible) {\n this.handleOnSubmitError();\n }\n }\n });\n }\n },\n isJournalSelected: function () {\n let checked = false;\n document.querySelectorAll(this.selectors.checkBoxElements).forEach(item => {\n if (item.checked) {\n checked = true;\n }\n });\n return checked;\n },\n handleOnSubmitError: function () {\n let errorEle = document.createElement('div');\n errorEle.innerText = 'Please select a journal';\n errorEle.classList.add('message', 'error', 'mb-3', this.selectors.checkBoxError);\n document.querySelector(this.selectors.checkBoxTitle).insertAdjacentElement('afterend', errorEle);\n this.isErrorVisible = true;\n },\n };\n UX.signUpAlert = signUpAlert;\n})();\n","import {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentSelector,\n ComponentService,\n UIComponent,\n ComponentSelectors,\n Inject,\n BrowserUtils\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n}\n\nclass Selectors extends ComponentSelectors {\n Altmetric = '.altmetric-embed';\n AltmetricMainLink = '#metrics-inner-cnt';\n}\n\nclass Elements extends ComponentElements {\n Altmetric: HTMLElement;\n}\n\ninterface Altmetric extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass Altmetric implements UIComponent {\n\n @Inject()\n protected browserUtils: BrowserUtils;\n constructor(readonly wrapper: HTMLElement) { }\n elementsInitializer() {\n this.elements.Altmetric = this.domUtils.getElement(this.selectors.Altmetric)\n \n }\n\n initialize(): void {\n this.elementsInitializer();\n this.addEventListeners();\n this.contentReplacer()\n }\n\n\n addEventListeners(): void {\n }\n\n contentReplacer(event?: CustomEvent) {\n const outterLink = this.domUtils.getElement(this.selectors.AltmetricMainLink);\n const innerLinkImage = this.domUtils.getElement('a img', this.elements.Altmetric).cloneNode(true);\n outterLink.innerHTML = \"\"\n outterLink.appendChild(innerLinkImage)\n }\n}\n\nexport default Altmetric;\n\nexport {\n Elements as AltmetricElements,\n Selectors as AltmetricSelectors,\n ClassList as AltmetricClassList,\n Texts as AltmetricTexts\n}\n\n","import {\n ComponentElements,\n ComponentInjector,\n ComponentObject,\n ComponentService,\n UIComponent,\n ComponentSelectors,\n Inject,\n BrowserUtils\n} from '@atypon/ui-utils';\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n POPUP_VISIBLE = 'show-recommeneded-popup--visible';\n POPUP_SNAPPED = 'show-recommeneded-popup--snapped';\n POPUP_CLOSED = 'show-recommeneded-popup--closed';\n}\n\nclass Selectors extends ComponentSelectors {\n popup = \".show-recommeneded-popup\"\n closeBTN = \".closeBTN\"\n header = 'header[data-extent=\"frontmatter\"]'\n}\n\nclass Elements extends ComponentElements {\n popup: HTMLElement;\n closeBTN: HTMLElement;\n header: HTMLElement;\n}\n\ninterface ShowRecommendedTest extends ComponentService { }\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass ShowRecommendedTest implements UIComponent {\n\n @Inject()\n protected browserUtils: BrowserUtils;\n constructor(readonly wrapper: HTMLElement) { }\n // variables\n popupAppeared = false;\n\n elementsInitializer() {\n this.elements.closeBTN = this.domUtils.getElement(this.selectors.closeBTN);\n this.elements.popup = this.domUtils.getElement(this.selectors.popup);\n this.elements.header = this.domUtils.getElement(this.selectors.header);\n }\n initialize(): void {\n this.elementsInitializer();\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n window.addEventListener('scroll', this.handleShowPopup);\n this.elements.closeBTN.addEventListener(\"click\", () => {\n this.closePopup()\n })\n // close popup on click out of popup body\n this.foucuseOutClick()\n }\n\n foucuseOutClick() {\n document.addEventListener('click', (e) => {\n if (!this.elements.popup.classList.contains(this.classList.POPUP_CLOSED) && this.popupAppeared) {\n this.closePopup();\n }\n })\n\n // do not close the popup when clicking over it. \n this.elements.popup.addEventListener(\"click\", e => e.stopPropagation())\n }\n \n showPopup(): void {\n const {popup, header} = this.elements; \n popup.classList.add(this.classList.POPUP_VISIBLE);\n popup.classList.remove(this.classList.POPUP_SNAPPED);\n header.style.zIndex = 'unset'; \n }\n\n hidePopup(): void {\n const {popup, header} = this.elements; \n popup.classList.remove(this.classList.POPUP_VISIBLE);\n popup.classList.add(this.classList.POPUP_SNAPPED);\n header.style.zIndex = ''; \n }\n closePopup() {\n const {popup, header} = this.elements; \n popup.classList.remove(this.classList.POPUP_VISIBLE, this.classList.POPUP_SNAPPED);\n popup.classList.add(this.classList.POPUP_CLOSED);\n header.style.zIndex = ''; \n }\n getScrollPercent() {\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return ((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight));\n }\n\n handleShowPopup = () => {\n if (!this.elements.popup.classList.contains(this.classList.POPUP_CLOSED)) {\n if (this.getScrollPercent() >= 1/3) {\n this.showPopup();\n this.popupAppeared = true;\n } else {\n this.hidePopup();\n }\n }\n }\n}\n\nexport default ShowRecommendedTest;\n\nexport {\n Elements as ShowRecommendedTestElements,\n Selectors as ShowRecommendedTestSelectors,\n ClassList as ShowRecommendedTestClassList,\n Texts as ShowRecommendedTest\n}\n\n","import 'ui-theme/plugins/drawer/js/drawer';\n\nlet menu = UX.menu,\n $window = $(window),\n $body = $('body'),\n tabKey = 9,\n enterKey = 13,\n escKey = 27;\n\n// overridden to modify an event listener to work on enter key instead of tab\nmenu.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) => $elem.addEventListener('transitionend', menu.on.listPosition.handleHeightSet)); // <-- this is the difference between photo and core\n $window.on('resize', menu.on.listPosition.handleResize);\n\n // the modified event listener:\n $window.on('keyup', function (e) {\n menu.revers = !!(e.shiftKey && e.keyCode === tabKey);\n if (!menu.isMobile) {\n if ((e.keyCode || e.which) === 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// enable closing a menu on esc key\nmenu.on.escDesktop = e => {\n $(e.target).closest('.dropdown__menu').siblings('.dropdown__toggle').removeClass('hover').focus();\n};\n"],"sourceRoot":""}