additional_plugins/homepage/scripts/master.js.map
2017-12-29 16:05:41 +01:00

1 line
30 KiB
Plaintext

{"version":3,"sources":["../../node_modules/responsive-nav/responsive-nav.js","main.js"],"names":["document","window","index","responsiveNav","el","options","getComputedStyle","this","getPropertyValue","prop","re","test","replace","arguments","toUpperCase","currentStyle","nav","opts","navToggle","hasAnimFinished","isMobile","navOpen","addEvent","evt","fn","bubble","addEventListener","e","handleEvent","call","attachEvent","removeEvent","removeEventListener","detachEvent","setAttributes","attrs","key","setAttribute","addClass","cls","className","indexOf","removeClass","reg","RegExp","styleElement","createElement","htmlEl","documentElement","ResponsiveNav","i","animate","transition","label","insert","customToggle","closeOnNavClick","openPos","navClass","navActiveClass","jsClass","init","open","close","wrapperEl","getElementById","wrapper","querySelector","Error","inner","children","length","nodeType","push","getChildren","_init","prototype","destroy","_removeStyles","removeAttribute","body","parentNode","removeChild","toggle","style","position","aria-hidden","setTimeout","resize","match","_createStyles","_calcHeight","event","type","_onTouchStart","_onTouchMove","_onTouchEnd","_preventDefault","_onKeyUp","_closeOnNavClick","_createToggle","_transitions","self","getElementsByTagName","appendChild","toggleEl","innerHTML","href","class","insertBefore","nextSibling","links","array","callback","scope","forEach","preventDefault","stopImmediatePropagation","stopPropagation","returnValue","Event","startX","touches","clientX","startY","clientY","touchHasMoved","Math","abs","which","button","keyCode","objStyle","WebkitTransition","MozTransition","OTransition","savedHeight","offsetHeight","innerStyles","styleSheet","cssText","module","exports","$","click","location","pathname","hostname","$target","hash","slice","targetOffset","offset","top","scrollTop"],"mappings":"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","file":"master.js","sourcesContent":["/*! responsive-nav.js 1.0.39\n * https://github.com/viljamis/responsive-nav.js\n * http://responsive-nav.com\n *\n * Copyright (c) 2015 @viljamis\n * Available under the MIT license\n */\n\n/* global Event */\n(function (document, window, index) {\n // Index is used to keep multiple navs on the same page namespaced\n\n \"use strict\";\n\n var responsiveNav = function (el, options) {\n\n var computed = !!window.getComputedStyle;\n \n /**\n * getComputedStyle polyfill for old browsers\n */\n if (!computed) {\n window.getComputedStyle = function(el) {\n this.el = el;\n this.getPropertyValue = function(prop) {\n var re = /(\\-([a-z]){1})/g;\n if (prop === \"float\") {\n prop = \"styleFloat\";\n }\n if (re.test(prop)) {\n prop = prop.replace(re, function () {\n return arguments[2].toUpperCase();\n });\n }\n return el.currentStyle[prop] ? el.currentStyle[prop] : null;\n };\n return this;\n };\n }\n /* exported addEvent, removeEvent, getChildren, setAttributes, addClass, removeClass, forEach */\n \n /**\n * Add Event\n * fn arg can be an object or a function, thanks to handleEvent\n * read more at: http://www.thecssninja.com/javascript/handleevent\n *\n * @param {element} element\n * @param {event} event\n * @param {Function} fn\n * @param {boolean} bubbling\n */\n var addEvent = function (el, evt, fn, bubble) {\n if (\"addEventListener\" in el) {\n // BBOS6 doesn't support handleEvent, catch and polyfill\n try {\n el.addEventListener(evt, fn, bubble);\n } catch (e) {\n if (typeof fn === \"object\" && fn.handleEvent) {\n el.addEventListener(evt, function (e) {\n // Bind fn as this and set first arg as event object\n fn.handleEvent.call(fn, e);\n }, bubble);\n } else {\n throw e;\n }\n }\n } else if (\"attachEvent\" in el) {\n // check if the callback is an object and contains handleEvent\n if (typeof fn === \"object\" && fn.handleEvent) {\n el.attachEvent(\"on\" + evt, function () {\n // Bind fn as this\n fn.handleEvent.call(fn);\n });\n } else {\n el.attachEvent(\"on\" + evt, fn);\n }\n }\n },\n \n /**\n * Remove Event\n *\n * @param {element} element\n * @param {event} event\n * @param {Function} fn\n * @param {boolean} bubbling\n */\n removeEvent = function (el, evt, fn, bubble) {\n if (\"removeEventListener\" in el) {\n try {\n el.removeEventListener(evt, fn, bubble);\n } catch (e) {\n if (typeof fn === \"object\" && fn.handleEvent) {\n el.removeEventListener(evt, function (e) {\n fn.handleEvent.call(fn, e);\n }, bubble);\n } else {\n throw e;\n }\n }\n } else if (\"detachEvent\" in el) {\n if (typeof fn === \"object\" && fn.handleEvent) {\n el.detachEvent(\"on\" + evt, function () {\n fn.handleEvent.call(fn);\n });\n } else {\n el.detachEvent(\"on\" + evt, fn);\n }\n }\n },\n \n /**\n * Get the children of any element\n *\n * @param {element}\n * @return {array} Returns matching elements in an array\n */\n getChildren = function (e) {\n if (e.children.length < 1) {\n throw new Error(\"The Nav container has no containing elements\");\n }\n // Store all children in array\n var children = [];\n // Loop through children and store in array if child != TextNode\n for (var i = 0; i < e.children.length; i++) {\n if (e.children[i].nodeType === 1) {\n children.push(e.children[i]);\n }\n }\n return children;\n },\n \n /**\n * Sets multiple attributes at once\n *\n * @param {element} element\n * @param {attrs} attrs\n */\n setAttributes = function (el, attrs) {\n for (var key in attrs) {\n el.setAttribute(key, attrs[key]);\n }\n },\n \n /**\n * Adds a class to any element\n *\n * @param {element} element\n * @param {string} class\n */\n addClass = function (el, cls) {\n if (el.className.indexOf(cls) !== 0) {\n el.className += \" \" + cls;\n el.className = el.className.replace(/(^\\s*)|(\\s*$)/g,\"\");\n }\n },\n \n /**\n * Remove a class from any element\n *\n * @param {element} element\n * @param {string} class\n */\n removeClass = function (el, cls) {\n var reg = new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\");\n el.className = el.className.replace(reg, \" \").replace(/(^\\s*)|(\\s*$)/g,\"\");\n },\n \n /**\n * forEach method that passes back the stuff we need\n *\n * @param {array} array\n * @param {Function} callback\n * @param {scope} scope\n */\n forEach = function (array, callback, scope) {\n for (var i = 0; i < array.length; i++) {\n callback.call(scope, i, array[i]);\n }\n };\n\n var nav,\n opts,\n navToggle,\n styleElement = document.createElement(\"style\"),\n htmlEl = document.documentElement,\n hasAnimFinished,\n isMobile,\n navOpen;\n\n var ResponsiveNav = function (el, options) {\n var i;\n\n /**\n * Default options\n * @type {Object}\n */\n this.options = {\n animate: true, // Boolean: Use CSS3 transitions, true or false\n transition: 284, // Integer: Speed of the transition, in milliseconds\n label: \"Menu\", // String: Label for the navigation toggle\n insert: \"before\", // String: Insert the toggle before or after the navigation\n customToggle: \"\", // Selector: Specify the ID of a custom toggle\n closeOnNavClick: false, // Boolean: Close the navigation when one of the links are clicked\n openPos: \"relative\", // String: Position of the opened nav, relative or static\n navClass: \"nav-collapse\", // String: Default CSS class. If changed, you need to edit the CSS too!\n navActiveClass: \"js-nav-active\", // String: Class that is added to <html> element when nav is active\n jsClass: \"js\", // String: 'JS enabled' class which is added to <html> element\n init: function(){}, // Function: Init callback\n open: function(){}, // Function: Open callback\n close: function(){} // Function: Close callback\n };\n\n // User defined options\n for (i in options) {\n this.options[i] = options[i];\n }\n\n // Adds \"js\" class for <html>\n addClass(htmlEl, this.options.jsClass);\n\n // Wrapper\n this.wrapperEl = el.replace(\"#\", \"\");\n\n // Try selecting ID first\n if (document.getElementById(this.wrapperEl)) {\n this.wrapper = document.getElementById(this.wrapperEl);\n\n // If element with an ID doesn't exist, use querySelector\n } else if (document.querySelector(this.wrapperEl)) {\n this.wrapper = document.querySelector(this.wrapperEl);\n\n // If element doesn't exists, stop here.\n } else {\n throw new Error(\"The nav element you are trying to select doesn't exist\");\n }\n\n // Inner wrapper\n this.wrapper.inner = getChildren(this.wrapper);\n\n // For minification\n opts = this.options;\n nav = this.wrapper;\n\n // Init\n this._init(this);\n };\n\n ResponsiveNav.prototype = {\n\n /**\n * Unattaches events and removes any classes that were added\n */\n destroy: function () {\n this._removeStyles();\n removeClass(nav, \"closed\");\n removeClass(nav, \"opened\");\n removeClass(nav, opts.navClass);\n removeClass(nav, opts.navClass + \"-\" + this.index);\n removeClass(htmlEl, opts.navActiveClass);\n nav.removeAttribute(\"style\");\n nav.removeAttribute(\"aria-hidden\");\n\n removeEvent(window, \"resize\", this, false);\n removeEvent(window, \"focus\", this, false);\n removeEvent(document.body, \"touchmove\", this, false);\n removeEvent(navToggle, \"touchstart\", this, false);\n removeEvent(navToggle, \"touchend\", this, false);\n removeEvent(navToggle, \"mouseup\", this, false);\n removeEvent(navToggle, \"keyup\", this, false);\n removeEvent(navToggle, \"click\", this, false);\n\n if (!opts.customToggle) {\n navToggle.parentNode.removeChild(navToggle);\n } else {\n navToggle.removeAttribute(\"aria-hidden\");\n }\n },\n\n /**\n * Toggles the navigation open/close\n */\n toggle: function () {\n if (hasAnimFinished === true) {\n if (!navOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n },\n\n /**\n * Opens the navigation\n */\n open: function () {\n if (!navOpen) {\n removeClass(nav, \"closed\");\n addClass(nav, \"opened\");\n addClass(htmlEl, opts.navActiveClass);\n addClass(navToggle, \"active\");\n nav.style.position = opts.openPos;\n setAttributes(nav, {\"aria-hidden\": \"false\"});\n navOpen = true;\n opts.open();\n }\n },\n\n /**\n * Closes the navigation\n */\n close: function () {\n if (navOpen) {\n addClass(nav, \"closed\");\n removeClass(nav, \"opened\");\n removeClass(htmlEl, opts.navActiveClass);\n removeClass(navToggle, \"active\");\n setAttributes(nav, {\"aria-hidden\": \"true\"});\n\n // If animations are enabled, wait until they finish\n if (opts.animate) {\n hasAnimFinished = false;\n setTimeout(function () {\n nav.style.position = \"absolute\";\n hasAnimFinished = true;\n }, opts.transition + 10);\n\n // Animations aren't enabled, we can do these immediately\n } else {\n nav.style.position = \"absolute\";\n }\n\n navOpen = false;\n opts.close();\n }\n },\n\n /**\n * Resize is called on window resize and orientation change.\n * It initializes the CSS styles and height calculations.\n */\n resize: function () {\n\n // Resize watches navigation toggle's display state\n if (window.getComputedStyle(navToggle, null).getPropertyValue(\"display\") !== \"none\") {\n\n isMobile = true;\n setAttributes(navToggle, {\"aria-hidden\": \"false\"});\n\n // If the navigation is hidden\n if (nav.className.match(/(^|\\s)closed(\\s|$)/)) {\n setAttributes(nav, {\"aria-hidden\": \"true\"});\n nav.style.position = \"absolute\";\n }\n\n this._createStyles();\n this._calcHeight();\n } else {\n\n isMobile = false;\n setAttributes(navToggle, {\"aria-hidden\": \"true\"});\n setAttributes(nav, {\"aria-hidden\": \"false\"});\n nav.style.position = opts.openPos;\n this._removeStyles();\n }\n },\n\n /**\n * Takes care of all even handling\n *\n * @param {event} event\n * @return {type} returns the type of event that should be used\n */\n handleEvent: function (e) {\n var evt = e || window.event;\n\n switch (evt.type) {\n case \"touchstart\":\n this._onTouchStart(evt);\n break;\n case \"touchmove\":\n this._onTouchMove(evt);\n break;\n case \"touchend\":\n case \"mouseup\":\n this._onTouchEnd(evt);\n break;\n case \"click\":\n this._preventDefault(evt);\n break;\n case \"keyup\":\n this._onKeyUp(evt);\n break;\n case \"focus\":\n case \"resize\":\n this.resize(evt);\n break;\n }\n },\n\n /**\n * Initializes the widget\n */\n _init: function () {\n this.index = index++;\n\n addClass(nav, opts.navClass);\n addClass(nav, opts.navClass + \"-\" + this.index);\n addClass(nav, \"closed\");\n hasAnimFinished = true;\n navOpen = false;\n\n this._closeOnNavClick();\n this._createToggle();\n this._transitions();\n this.resize();\n\n /**\n * On IE8 the resize event triggers too early for some reason\n * so it's called here again on init to make sure all the\n * calculated styles are correct.\n */\n var self = this;\n setTimeout(function () {\n self.resize();\n }, 20);\n\n addEvent(window, \"resize\", this, false);\n addEvent(window, \"focus\", this, false);\n addEvent(document.body, \"touchmove\", this, false);\n addEvent(navToggle, \"touchstart\", this, false);\n addEvent(navToggle, \"touchend\", this, false);\n addEvent(navToggle, \"mouseup\", this, false);\n addEvent(navToggle, \"keyup\", this, false);\n addEvent(navToggle, \"click\", this, false);\n\n /**\n * Init callback here\n */\n opts.init();\n },\n\n /**\n * Creates Styles to the <head>\n */\n _createStyles: function () {\n if (!styleElement.parentNode) {\n styleElement.type = \"text/css\";\n document.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n }\n },\n\n /**\n * Removes styles from the <head>\n */\n _removeStyles: function () {\n if (styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n },\n\n /**\n * Creates Navigation Toggle\n */\n _createToggle: function () {\n\n // If there's no toggle, let's create one\n if (!opts.customToggle) {\n var toggle = document.createElement(\"a\");\n toggle.innerHTML = opts.label;\n setAttributes(toggle, {\n \"href\": \"#\",\n \"class\": \"nav-toggle\"\n });\n\n // Determine where to insert the toggle\n if (opts.insert === \"after\") {\n nav.parentNode.insertBefore(toggle, nav.nextSibling);\n } else {\n nav.parentNode.insertBefore(toggle, nav);\n }\n\n navToggle = toggle;\n\n // There is a toggle already, let's use that one\n } else {\n var toggleEl = opts.customToggle.replace(\"#\", \"\");\n\n if (document.getElementById(toggleEl)) {\n navToggle = document.getElementById(toggleEl);\n } else if (document.querySelector(toggleEl)) {\n navToggle = document.querySelector(toggleEl);\n } else {\n throw new Error(\"The custom nav toggle you are trying to select doesn't exist\");\n }\n }\n },\n\n /**\n * Closes the navigation when a link inside is clicked.\n */\n _closeOnNavClick: function () {\n if (opts.closeOnNavClick) {\n var links = nav.getElementsByTagName(\"a\"),\n self = this;\n forEach(links, function (i, el) {\n addEvent(links[i], \"click\", function () {\n if (isMobile) {\n self.toggle();\n }\n }, false);\n });\n }\n },\n\n /**\n * Prevents the default functionality.\n *\n * @param {event} event\n */\n _preventDefault: function(e) {\n if (e.preventDefault) {\n if (e.stopImmediatePropagation) {\n e.stopImmediatePropagation();\n }\n e.preventDefault();\n e.stopPropagation();\n return false;\n\n // This is strictly for old IE\n } else {\n e.returnValue = false;\n }\n },\n\n /**\n * On touch start we get the location of the touch.\n *\n * @param {event} event\n */\n _onTouchStart: function (e) {\n if (!Event.prototype.stopImmediatePropagation) {\n this._preventDefault(e);\n }\n this.startX = e.touches[0].clientX;\n this.startY = e.touches[0].clientY;\n this.touchHasMoved = false;\n\n /**\n * Remove mouseup event completely here to avoid\n * double triggering the event.\n */\n removeEvent(navToggle, \"mouseup\", this, false);\n },\n\n /**\n * Check if the user is scrolling instead of tapping.\n *\n * @param {event} event\n */\n _onTouchMove: function (e) {\n if (Math.abs(e.touches[0].clientX - this.startX) > 10 ||\n Math.abs(e.touches[0].clientY - this.startY) > 10) {\n this.touchHasMoved = true;\n }\n },\n\n /**\n * On touch end toggle the navigation.\n *\n * @param {event} event\n */\n _onTouchEnd: function (e) {\n this._preventDefault(e);\n if (!isMobile) {\n return;\n }\n\n // If the user isn't scrolling\n if (!this.touchHasMoved) {\n\n // If the event type is touch\n if (e.type === \"touchend\") {\n this.toggle();\n return;\n\n // Event type was click, not touch\n } else {\n var evt = e || window.event;\n\n // If it isn't a right click, do toggling\n if (!(evt.which === 3 || evt.button === 2)) {\n this.toggle();\n }\n }\n }\n },\n\n /**\n * For keyboard accessibility, toggle the navigation on Enter\n * keypress too.\n *\n * @param {event} event\n */\n _onKeyUp: function (e) {\n var evt = e || window.event;\n if (evt.keyCode === 13) {\n this.toggle();\n }\n },\n\n /**\n * Adds the needed CSS transitions if animations are enabled\n */\n _transitions: function () {\n if (opts.animate) {\n var objStyle = nav.style,\n transition = \"max-height \" + opts.transition + \"ms\";\n\n objStyle.WebkitTransition =\n objStyle.MozTransition =\n objStyle.OTransition =\n objStyle.transition = transition;\n }\n },\n\n /**\n * Calculates the height of the navigation and then creates\n * styles which are later added to the page <head>\n */\n _calcHeight: function () {\n var savedHeight = 0;\n for (var i = 0; i < nav.inner.length; i++) {\n savedHeight += nav.inner[i].offsetHeight;\n }\n\n var innerStyles = \".\" + opts.jsClass + \" .\" + opts.navClass + \"-\" + this.index + \".opened{max-height:\" + savedHeight + \"px !important} .\" + opts.jsClass + \" .\" + opts.navClass + \"-\" + this.index + \".opened.dropdown-active {max-height:9999px !important}\";\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = innerStyles;\n } else {\n styleElement.innerHTML = innerStyles;\n }\n\n innerStyles = \"\";\n }\n\n };\n\n /**\n * Return new Responsive Nav\n */\n return new ResponsiveNav(el, options);\n\n };\n\n if (typeof module !== \"undefined\" && module.exports) {\n module.exports = responsiveNav;\n } else {\n window.responsiveNav = responsiveNav;\n }\n\n}(document, window, 0));","$(function() {\n // Smallscreen nav\n var nav = responsiveNav('.nav-collapse', {\n customToggle: \"#open-nav\",\n closeOnNavClick: true,\n });\n\n // Skip links\n $('#to-top, #markdown-toc a').click(function() {\n if (location.pathname.replace(/^\\//,'') === this.pathname.replace(/^\\//,'') && location.hostname === this.hostname) {\n var $target = $(this.hash);\n $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');\n if ($target.length) {\n var targetOffset = $target.offset().top;\n $('html,body').animate({scrollTop: targetOffset}, 300);\n return false;\n }\n }\n });\n});\n"]}