{"version":3,"file":"/build/js/main.js","mappings":"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","sources":["webpack://ntnu-news-and-blog/webpack/runtime/chunk loaded","webpack://ntnu-news-and-blog/./src/js/navigation.js","webpack://ntnu-news-and-blog/./src/js/language-switcher.js","webpack://ntnu-news-and-blog/./src/js/infobox.js","webpack://ntnu-news-and-blog/./src/js/main.js","webpack://ntnu-news-and-blog/webpack/bootstrap","webpack://ntnu-news-and-blog/webpack/runtime/hasOwnProperty shorthand","webpack://ntnu-news-and-blog/webpack/runtime/jsonp chunk loading","webpack://ntnu-news-and-blog/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","const $ = jQuery;\n\nconst tabbableQuery =\n\t\"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\";\n\nexport class NavigationSidebar {\n\tconstructor({ navigation }) {\n\t\tthis.isOpen = false;\n\t\tthis.navigation = navigation;\n\t\tthis.tabbableElements = this.navigation.find(tabbableQuery);\n\t\tthis.search = this.navigation.find(\n\t\t\t'.main-navigation-sidebar__search input[type=\"search\"]'\n\t\t);\n\t\tthis.init();\n\t}\n\n\t/**\n\t * Init settings in order for the menu to work as expected\n\t */\n\tinit() {\n\t\t// Sets tabindex to negative in order to prevent users from accessing the menu without the menu being open\n\t\tthis.tabbableElements.attr(\"data-tabindexable\", \"\");\n\t\tthis.tabbableElements.attr(\"tabindex\", -1);\n\n\t\tconst length = this.tabbableElements.length;\n\t\tconst $firstTabbableElement = $(this.tabbableElements[0]);\n\t\tconst $lastTabbableElement = $(this.tabbableElements[length - 1]);\n\n\t\t// Go to the first tabbable element if user tabs on the last element\n\t\t$lastTabbableElement.on(\"keydown\", function (e) {\n\t\t\tif (e.key === \"Tab\" && !e.shiftKey) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$firstTabbableElement.focus();\n\t\t\t}\n\t\t});\n\n\t\t// Go to the last tabbable element if user shift tabs on the first element\n\t\t$firstTabbableElement.on(\"keydown\", function (e) {\n\t\t\tif (e.key === \"Tab\" && e.shiftKey) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$lastTabbableElement.focus();\n\t\t\t}\n\t\t});\n\n\t\tthis.onToggle();\n\t\twindow.navigationSidebar = this;\n\t}\n\n\t/**\n\t * Toggle Main navigation.\n\t */\n\ttoggle() {\n\t\tthis.isOpen ? this.close() : this.open();\n\t}\n\n\t/**\n\t * Open Main navigation.\n\t */\n\topen() {\n\t\tthis.navigation.addClass(\"open\");\n\t\t$(\"body\").addClass(\"main-navigation-sidebar-active\");\n\t\tthis.isOpen = true;\n\t\tthis.onToggle();\n\t}\n\n\t/**\n\t * Close Main navigation.\n\t */\n\tclose() {\n\t\tthis.navigation.removeClass(\"open\");\n\t\t$(\"body\").removeClass(\"main-navigation-sidebar-active\");\n\t\tthis.isOpen = false;\n\t\tthis.onToggle();\n\t}\n\n\t// Handle toggle of the menu\n\tonToggle() {\n\t\t// Toggle tabindex on tabbable elements\n\t\tthis.navigation\n\t\t\t.find(\"[data-tabindexable]\")\n\t\t\t.attr(\"tabindex\", !this.isOpen ? -1 : 0);\n\n\t\t// Toggles the aria-expanded attribute\n\t\t$(`[aria-controls=\"${this.navigation.attr(\"id\")}\"]`).attr(\n\t\t\t\"aria-expanded\",\n\t\t\tthis.isOpen ? \"true\" : \"false\"\n\t\t);\n\t}\n}\n","const $ = jQuery;\n\nexport class LanguageSwitcher {\n\t/**\n\t *\n\t * @param {HTMLElement} element jQuery element of the language switcher\n\t * @param {{prefix: String, location: String, transitionDuration: Number} } options Options for the language switcher\n\t */\n\tconstructor(element, options = {}) {\n\t\tconst { prefix, location, transitionDuration } = options;\n\t\tthis.element = element;\n\t\tthis.location = location || element.data(\"location\");\n\t\tthis.openState = false;\n\t\tthis.prefix = prefix || \"language-switcher\";\n\t\tthis.trigger = this.getTrigger();\n\t\tthis.dropdown = this.getDropdown();\n\t\tthis.transitionDuration = transitionDuration || 250;\n\t\tthis.init();\n\t}\n\n\t/**\n\t * @description The setup of the javascript for the menu\n\t */\n\tinit() {\n\t\tif (!this.trigger) {\n\t\t\tconsole.warn(`No trigger found for location: ${this.location}`);\n\t\t}\n\t\tthis.trigger.on(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\tthis.toggle();\n\t\t});\n\n\t\tthis.dropdown.on(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tthis.options = this.getOptions();\n\t}\n\n\t/**\n\t * @description Gets the language switcher trigger\n\t * @returns the language switcher trigger element\n\t */\n\tgetTrigger() {\n\t\treturn this.element.find($(`.${this.prefix}__trigger`));\n\t}\n\n\t/**\n\t * @description Gets the language switcher menu\n\t * @returns the dropdown menu element\n\t */\n\tgetDropdown() {\n\t\treturn this.element.find($(`.${this.prefix}__list`));\n\t}\n\n\t/**\n\t * @description Gets the available options in the `LanguageSwitcher`\n\t * @returns all the available options\n\t */\n\tgetOptions() {\n\t\tconst options = [];\n\t\tthis.element.find($(\"[data-lang]\")).each(function () {\n\t\t\toptions.push(new LanguageSwitcherLink($(this)));\n\t\t});\n\t\treturn options;\n\t}\n\n\t/**\n\t * @description Loops through the options\n\t * @param {(option:LanguageSwitcherLink) => {}} callback\n\t */\n\tloopOptions(callback) {\n\t\tthis.options.forEach((option) => {\n\t\t\tcallback(option);\n\t\t});\n\t}\n\n\t/**\n\t * @description Trigger the language switcher menu\n\t */\n\ttoggle() {\n\t\tthis.element.toggleClass(\"open\");\n\t\tthis.openState = !this.openState;\n\n\t\tif (this.openState) {\n\t\t\tthis.onOpen();\n\t\t} else {\n\t\t\tthis.onClose();\n\t\t}\n\t}\n\n\t/**\n\t * @description How to react when the menu opens\n\t */\n\tonOpen() {\n\t\tthis.dropdown.slideDown(this.transitionDuration);\n\t\t// this.dropdown.show();\n\t}\n\n\t/**\n\t * @description How to react when the menu closes\n\t */\n\tonClose() {\n\t\tthis.dropdown.slideUp(this.transitionDuration);\n\t\t// this.dropdown.hide();\n\t}\n\n\t/**\n\t * @description Force open the language switcher menu\n\t */\n\tforceOpen() {\n\t\tthis.element.addClass(\"open\");\n\t\tif (!this.openState) this.onOpen();\n\t\tthis.openState = true;\n\t}\n\n\t/**\n\t * @description Force close the language switcher menu\n\t */\n\tforceClose() {\n\t\tthis.element.removeClass(\"open\");\n\t\tif (this.openState) this.onClose();\n\t\tthis.openState = false;\n\t}\n\n\t/**\n\t * @description Returns the location of the switcher (if its defined). Example \"header\" or \"sidebar\" (depends on where its used)\n\t * @returns The location of the language switcher\n\t */\n\tgetLocation() {\n\t\treturn this.location;\n\t}\n\n\t/**\n\t * @description Returns the open state of the language switcher\n\t */\n\tisOpen() {\n\t\treturn this.openState;\n\t}\n}\n\nclass LanguageSwitcherLink {\n\t/**\n\t * @description Object that contains function to the language switcher links\n\t * @param {HTMLElement} element - The option element\n\t */\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tconst href = this.element.attr(\"href\") || this.element.attr(\"data-href\");\n\t\tif (!href) {\n\t\t\tconsole.warn(\"LanguageSwitcherLink created with no href or data-href attribute\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.href = this.ensureProtocol(href);\n\t\tthis.url = new URL(this.href);\n\t\tthis.lang = this.element.attr(\"data-lang\");\n\t\tthis.active = parseFloat(this.element.attr(\"data-active\"))\n\t\t\t? true\n\t\t\t: false;\n\t}\n\n\t/**\n\t * @param {String} url\n\t * @returns returns a valid url\n\t * @todo consider try catch `new URL()`\n\t */\n\tensureProtocol(url) {\n\t\tconst regex = new RegExp(/^((https)|(http))/);\n\t\tconst hasProtocol = regex.test(url);\n\n\t\tif (hasProtocol) {\n\t\t\treturn url;\n\t\t}\n\n\t\tif (url.startsWith(\"//\")) {\n\t\t\treturn `https:${url}`;\n\t\t}\n\n\t\treturn `https://${url}`;\n\t}\n\n\t/**\n\t * @description Takes the new url and updates the parameters on the link element\n\t * @param {String} rawUrl String of the new url\n\t */\n\tupdateParameters(rawUrl) {\n\t\tconst newUrl = new URL(rawUrl);\n\t\tthis.url = new URL(this.url.origin + this.url.pathname + newUrl.search);\n\t\tthis.onURLChange();\n\t}\n\n\t/**\n\t * Function that should be triggered on url change\n\t */\n\tonURLChange() {\n\t\tthis.element.attr(\"href\", this.url.href);\n\t}\n}\n","export class Infobox {\n\t#collapsedHeight = 100;\n\tconstructor(box) {\n\t\tthis.box = box;\n\t\tthis.content = this.box.querySelector(\".box__content\");\n\t\tthis.overlay = this.box.querySelector(\".box__show-more\");\n\t\tthis.trigger = this.overlay.querySelector(\".box__show-more-trigger\");\n\t\tthis.closeTrigger = this.overlay.querySelector(\n\t\t\t\".box__collapse-trigger\"\n\t\t);\n\t\tthis.links = this.content.querySelectorAll(\"a\");\n\t\tthis.state = false;\n\t\tthis.toggle = this.toggle.bind(this);\n\t\tthis.resize = this.resize.bind(this);\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.box.setAttribute(\"tabindex\", -1);\n\t\tthis.content.style.overflow = \"hidden\";\n\t\tthis.content.style.transition = \"max-height .5s, padding .5s\";\n\t\tthis.trigger.addEventListener(\"click\", this.toggle);\n\t\tthis.closeTrigger.addEventListener(\"click\", this.toggle);\n\t\twindow.addEventListener(\"resize\", this.resize);\n\n\t\tthis.collapse();\n\t}\n\n\tresize() {\n\t\tif (this.state) this.expandHeight();\n\t}\n\n\taria() {\n\t\tthis.content.setAttribute(\"data-expanded\", this.state);\n\t\tthis.trigger.setAttribute(\"aria-expanded\", this.state);\n\t\tthis.closeTrigger.setAttribute(\"aria-expanded\", this.state);\n\t}\n\n\texpandHeight() {\n\t\tconst height = this.content.scrollHeight;\n\t\tconst overlayHeight = this.overlay.scrollHeight;\n\t\tthis.content.style.maxHeight = `${height + overlayHeight}px`;\n\t}\n\n\texpand() {\n\t\tthis.state = true;\n\t\tthis.aria();\n\t\tthis.expandHeight();\n\t\tthis.links.forEach((element) => element.removeAttribute(\"tabindex\"));\n\t\tthis.trigger.remove();\n\t\tthis.box.focus();\n\t\tthis.overlay.appendChild(this.closeTrigger);\n\t}\n\n\tcollapse() {\n\t\tthis.state = false;\n\t\tthis.aria();\n\t\tthis.content.style.maxHeight = `${this.#collapsedHeight}px`;\n\t\tthis.links.forEach((element) => element.setAttribute(\"tabindex\", -1));\n\t\tthis.closeTrigger.remove();\n\t\tthis.overlay.appendChild(this.trigger);\n\t}\n\n\ttoggle(e) {\n\t\te.preventDefault();\n\t\tif (this.state) {\n\t\t\tthis.collapse();\n\t\t} else {\n\t\t\tthis.expand();\n\t\t}\n\t}\n}\n","import { NavigationSidebar } from \"./navigation\";\nimport { LanguageSwitcher } from \"./language-switcher\";\nimport { Infobox } from \"./infobox\";\n\njQuery(($) => {\n\t/**\n\t * Add Main navigation click handlers.\n\t */\n\tconst Navigation = new NavigationSidebar({\n\t\tnavigation: $(\".main-navigation\"),\n\t});\n\n\t$(\".js-main-navigation-open\").on(\"click\", () => Navigation.open());\n\t$(\".js-main-navigation-close\").on(\"click\", () => Navigation.close());\n\t$(\"body\").on(\"click\", \".main-navigation.open\", (e) => {\n\t\t// Only close if the user clicks on the overlay and not the child elements.\n\t\tif (e.target !== e.currentTarget) return;\n\t\tNavigation.close();\n\t});\n\n\t/**\n\t * Close Main navigation with the ESC key.\n\t */\n\t$(document).keyup((e) => {\n\t\tif (e.key !== \"Escape\") return;\n\t\tNavigation.close();\n\t});\n\n\t$(\"#site-header-search-button\").on(\"click\", () => {\n\t\tNavigation.open();\n\t\tNavigation.search.focus();\n\t});\n\n\t/**\n\t * Language switchers\n\t */\n\tconst languageSwitches = [];\n\t$(\".language-switcher\").each(function () {\n\t\tconst switcher = new LanguageSwitcher($(this));\n\t\tlanguageSwitches.push(switcher);\n\t});\n\n\t$(\"body\").on(\"click\", () => {\n\t\t// Close the open languageSwitchers if the menu is open and there is a click outside of the menu\n\t\tlanguageSwitches.forEach((switcher) => {\n\t\t\tif (switcher.isOpen()) {\n\t\t\t\tswitcher.forceClose();\n\t\t\t}\n\t\t});\n\t});\n\n\t/**\n\t * Accordions\n\t */\n\t$(\"[data-accordion]:not(.open) [data-accordion-content]\").hide();\n\t$(\"[data-accordion-title]\").on(\"click\", function (e) {\n\t\te.preventDefault();\n\t\t$(this).parent().toggleClass(\"open\");\n\t\t$(this).siblings(\"[data-accordion-content]\").slideToggle();\n\t});\n\n\t/**\n\t * Scroll to top button.\n\t */\n\tconst scrollTopButton = $(\".scroll-to-top\");\n\n\t$(window).scroll(function () {\n\t\tconst offset = 1000;\n\t\tconst distanceFromTop = $(window).scrollTop();\n\n\t\tif (distanceFromTop > offset) {\n\t\t\tscrollTopButton.fadeIn(\"slow\");\n\t\t} else if (scrollTopButton.is(\":visible\")) {\n\t\t\tscrollTopButton.fadeOut(\"slow\");\n\t\t}\n\t});\n\n\tscrollTopButton.on(\"click\", function (e) {\n\t\te.preventDefault();\n\t\t$(window).scrollTop(0);\n\t});\n\n\t/**\n\t * Creates a global function to updated url parameters on language switcher options\n\t */\n\twindow.updateLangSwitcherParams = (url = window.location.href) => {\n\t\t/**\n\t\t * Loops trough the language switchers\n\t\t */\n\t\tlanguageSwitches.forEach((switcher) => {\n\t\t\tswitcher.loopOptions((option) => {\n\t\t\t\toption.updateParameters(url);\n\t\t\t});\n\t\t});\n\t};\n\n\tconst shareButtons = $(\".social-share-window\");\n\n\tif (shareButtons.length) {\n\t\tshareButtons.click(function (e) {\n\t\t\tconst { shareUrl, title } = this.dataset;\n\t\t\tif (shareUrl) e.preventDefault();\n\n\t\t\tconst newwindow = window.open(\n\t\t\t\tshareUrl,\n\t\t\t\ttitle,\n\t\t\t\t\"height=300,width=700\"\n\t\t\t);\n\t\t\tif (window.focus) {\n\t\t\t\tnewwindow.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tconst infoboxes = $(\".box\");\n\n\tinfoboxes.each(function (i, infobox) {\n\t\tif (infobox.classList.contains(\"box--expandable\")) {\n\t\t\tif (!window.infoboxes) window.infoboxes = [];\n\t\t\twindow.infoboxes.push(new Infobox(infobox));\n\t\t}\n\t});\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t952: 0,\n\t783: 0,\n\t523: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkntnu_news_and_blog\"] = self[\"webpackChunkntnu_news_and_blog\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [783,523], () => (__webpack_require__(31)))\n__webpack_require__.O(undefined, [783,523], () => (__webpack_require__(990)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [783,523], () => (__webpack_require__(45)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","$","jQuery","NavigationSidebar","_ref","navigation","_classCallCheck","this","isOpen","tabbableElements","find","search","init","key","value","attr","length","$firstTabbableElement","$lastTabbableElement","on","e","shiftKey","preventDefault","focus","onToggle","window","navigationSidebar","close","open","addClass","removeClass","concat","LanguageSwitcher","_createClass","element","options","arguments","undefined","prefix","location","transitionDuration","data","openState","trigger","getTrigger","dropdown","getDropdown","_this","console","warn","stopPropagation","toggle","getOptions","each","push","LanguageSwitcherLink","callback","forEach","option","toggleClass","onOpen","onClose","slideDown","slideUp","href","ensureProtocol","url","URL","lang","active","parseFloat","RegExp","test","startsWith","rawUrl","newUrl","origin","pathname","onURLChange","Infobox","box","_classPrivateFieldInitSpec","_collapsedHeight","content","querySelector","overlay","closeTrigger","links","querySelectorAll","state","bind","resize","setAttribute","style","overflow","transition","addEventListener","collapse","expandHeight","height","scrollHeight","overlayHeight","maxHeight","aria","removeAttribute","remove","appendChild","_classPrivateFieldGet","expand","Navigation","target","currentTarget","document","keyup","languageSwitches","switcher","forceClose","hide","parent","siblings","slideToggle","scrollTopButton","scroll","scrollTop","fadeIn","is","fadeOut","updateLangSwitcherParams","loopOptions","updateParameters","shareButtons","click","_this$dataset","dataset","shareUrl","title","newwindow","i","infobox","classList","contains","infoboxes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","o","obj","prop","prototype","hasOwnProperty","call","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}