additional_plugins/homepage/scripts/master.js.map
2017-04-14 22:31:00 +02: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","getChildren","children","length","Error","i","nodeType","push","setAttributes","attrs","key","setAttribute","addClass","cls","className","indexOf","removeClass","reg","RegExp","forEach","array","callback","scope","styleElement","createElement","htmlEl","documentElement","ResponsiveNav","animate","transition","label","insert","customToggle","closeOnNavClick","openPos","navClass","navActiveClass","jsClass","init","open","close","wrapperEl","getElementById","wrapper","querySelector","inner","_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","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":"CASC,SAAUA,EAAUC,EAAQC,GAG3B,YAEA,IAAIC,GAAgB,SAAUC,EAAIC,KAEfJ,EAAOK,mBAMtBL,EAAOK,iBAAmB,SAASF,GAcjC,MAbAG,MAAKH,GAAKA,EACVG,KAAKC,iBAAmB,SAASC,GAC/B,GAAIC,GAAK,iBAST,OARa,UAATD,IACFA,EAAO,cAELC,EAAGC,KAAKF,KACVA,EAAOA,EAAKG,QAAQF,EAAI,WACtB,MAAOG,WAAU,GAAGC,iBAGjBV,EAAGW,aAAaN,GAAQL,EAAGW,aAAaN,GAAQ,MAElDF,MAeX,IAkIIS,GACFC,EACAC,EAGAC,EACAC,EACAC,EAzIEC,EAAW,SAAUlB,EAAImB,EAAKC,EAAIC,GAClC,GAAG,oBAAuBrB,GAExB,IACEA,EAAGsB,iBAAiBH,EAAKC,EAAIC,GAC7B,MAAOE,GACP,GAAkB,gBAAPH,KAAmBA,EAAGI,YAM/B,KAAMD,EALNvB,GAAGsB,iBAAiBH,EAAK,SAAUI,GAEjCH,EAAGI,YAAYC,KAAKL,EAAIG,IACvBF,OAKC,eAAkBrB,KAER,gBAAPoB,IAAmBA,EAAGI,YAC/BxB,EAAG0B,YAAW,KAAQP,EAAK,WAEzBC,EAAGI,YAAYC,KAAKL,KAGtBpB,EAAG0B,YAAW,KAAQP,EAAKC,KAajCO,EAAc,SAAU3B,EAAImB,EAAKC,EAAIC,GACnC,GAAG,uBAA0BrB,GAC3B,IACEA,EAAG4B,oBAAoBT,EAAKC,EAAIC,GAChC,MAAOE,GACP,GAAkB,gBAAPH,KAAmBA,EAAGI,YAK/B,KAAMD,EAJNvB,GAAG4B,oBAAoBT,EAAK,SAAUI,GACpCH,EAAGI,YAAYC,KAAKL,EAAIG,IACvBF,OAKC,eAAkBrB,KACR,gBAAPoB,IAAmBA,EAAGI,YAC/BxB,EAAG6B,YAAW,KAAQV,EAAK,WACzBC,EAAGI,YAAYC,KAAKL,KAGtBpB,EAAG6B,YAAW,KAAQV,EAAKC,KAWjCU,EAAc,SAAUP,GACtB,GAAIA,EAAEQ,SAASC,OAAS,EACtB,KAAM,IAAIC,OAAK,+CAKjB,KAAK,GAFDF,MAEKG,EAAI,EAAGA,EAAIX,EAAEQ,SAASC,OAAQE,IACN,IAA3BX,EAAEQ,SAASG,GAAGC,UAChBJ,EAASK,KAAKb,EAAEQ,SAASG,GAG7B,OAAOH,IASTM,EAAgB,SAAUrC,EAAIsC,GAC5B,IAAK,GAAIC,KAAOD,GACdtC,EAAGwC,aAAaD,EAAKD,EAAMC,KAU/BE,EAAW,SAAUzC,EAAI0C,GACW,IAA9B1C,EAAG2C,UAAUC,QAAQF,KACvB1C,EAAG2C,WAAa,IAAMD,EACtB1C,EAAG2C,UAAY3C,EAAG2C,UAAUnC,QAAO,iBAAiB,MAUxDqC,EAAc,SAAU7C,EAAI0C,GAC1B,GAAII,GAAM,GAAIC,QAAM,UAAaL,EAAM,UACvC1C,GAAG2C,UAAY3C,EAAG2C,UAAUnC,QAAQsC,EAAK,KAAKtC,QAAO,iBAAiB,KAUxEwC,EAAU,SAAUC,EAAOC,EAAUC,GACnC,IAAK,GAAIjB,GAAI,EAAGA,EAAIe,EAAMjB,OAAQE,IAChCgB,EAASzB,KAAK0B,EAAOjB,EAAGe,EAAMf,KAOlCkB,EAAexD,EAASyD,cAAa,SACrCC,EAAS1D,EAAS2D,gBAKhBC,EAAgB,SAAUxD,EAAIC,GAC9B,GAAIiC,EAMJ/B,MAAKF,SACHwD,SAAS,EACTC,WAAY,IACZC,MAAO,OACPC,OAAQ,SACRC,aAAc,GACdC,iBAAiB,EACjBC,QAAS,WACTC,SAAU,eACVC,eAAgB,gBAChBC,QAAS,KACTC,KAAM,aACNC,KAAM,aACNC,MAAO,aAIT,KAAKnC,IAAKjC,GACRE,KAAKF,QAAQiC,GAAKjC,EAAQiC,EAU5B,IANAO,EAASa,EAAQnD,KAAKF,QAAQiE,SAG9B/D,KAAKmE,UAAYtE,EAAGQ,QAAO,IAAM,IAG7BZ,EAAS2E,eAAepE,KAAKmE,WAC/BnE,KAAKqE,QAAU5E,EAAS2E,eAAepE,KAAKmE,eAGvC,CAAA,IAAI1E,EAAS6E,cAActE,KAAKmE,WAKrC,KAAM,IAAIrC,OAAK,yDAJf9B,MAAKqE,QAAU5E,EAAS6E,cAActE,KAAKmE,WAQ7CnE,KAAKqE,QAAQE,MAAQ5C,EAAY3B,KAAKqE,SAGtC3D,EAAOV,KAAKF,QACZW,EAAMT,KAAKqE,QAGXrE,KAAKwE,MAAMxE,MAuZf,OApZAqD,GAAcoB,WAKZC,QAAS,WACP1E,KAAK2E,gBACLjC,EAAYjC,EAAK,UACjBiC,EAAYjC,EAAK,UACjBiC,EAAYjC,EAAKC,EAAKmD,UACtBnB,EAAYjC,EAAKC,EAAKmD,SAAW,IAAM7D,KAAKL,OAC5C+C,EAAYS,EAAQzC,EAAKoD,gBACzBrD,EAAImE,gBAAe,SACnBnE,EAAImE,gBAAe,eAEnBpD,EAAY9B,EAAQ,SAAUM,MAAM,GACpCwB,EAAY9B,EAAQ,QAASM,MAAM,GACnCwB,EAAY/B,EAASoF,KAAM,YAAa7E,MAAM,GAC9CwB,EAAYb,EAAW,aAAcX,MAAM,GAC3CwB,EAAYb,EAAW,WAAYX,MAAM,GACzCwB,EAAYb,EAAW,UAAWX,MAAM,GACxCwB,EAAYb,EAAW,QAASX,MAAM,GACtCwB,EAAYb,EAAW,QAASX,MAAM,GAEjCU,EAAKgD,aAGR/C,EAAUiE,gBAAe,eAFzBjE,EAAUmE,WAAWC,YAAYpE,IASrCqE,OAAQ,YACkB,IAApBpE,IACGE,EAGHd,KAAKkE,QAFLlE,KAAKiE,SAUXA,KAAM,WACCnD,IACH4B,EAAYjC,EAAK,UACjB6B,EAAS7B,EAAK,UACd6B,EAASa,EAAQzC,EAAKoD,gBACtBxB,EAAS3B,EAAW,UACpBF,EAAIwE,MAAMC,SAAWxE,EAAKkD,QAC1B1B,EAAczB,GAAK0E,cAAgB,UACnCrE,GAAU,EACVJ,EAAKuD,SAOTC,MAAO,WACDpD,IACFwB,EAAS7B,EAAK,UACdiC,EAAYjC,EAAK,UACjBiC,EAAYS,EAAQzC,EAAKoD,gBACzBpB,EAAY/B,EAAW,UACvBuB,EAAczB,GAAK0E,cAAgB,SAG/BzE,EAAK4C,SACP1C,GAAkB,EAClBwE,WAAW,WACT3E,EAAIwE,MAAMC,SAAW,WACrBtE,GAAkB,GACjBF,EAAK6C,WAAa,KAIrB9C,EAAIwE,MAAMC,SAAW,WAGvBpE,GAAU,EACVJ,EAAKwD,UAQTmB,OAAQ,WAGuE,SAAzE3F,EAAOK,iBAAiBY,EAAW,MAAMV,iBAAgB,YAE3DY,GAAW,EACXqB,EAAcvB,GAAWwE,cAAgB,UAGrC1E,EAAI+B,UAAU8C,MAAK,wBACrBpD,EAAczB,GAAK0E,cAAgB,SACnC1E,EAAIwE,MAAMC,SAAW,YAGvBlF,KAAKuF,gBACLvF,KAAKwF,gBAGL3E,GAAW,EACXqB,EAAcvB,GAAWwE,cAAgB,SACzCjD,EAAczB,GAAK0E,cAAgB,UACnC1E,EAAIwE,MAAMC,SAAWxE,EAAKkD,QAC1B5D,KAAK2E,kBAUTtD,YAAa,SAAUD,GACrB,GAAIJ,GAAMI,GAAK1B,EAAO+F,KAEtB,QAAQzE,EAAI0E,MACZ,IAAK,aACH1F,KAAK2F,cAAc3E,EACnB,MACF,KAAK,YACHhB,KAAK4F,aAAa5E,EAClB,MACF,KAAK,WACL,IAAK,UACHhB,KAAK6F,YAAY7E,EACjB,MACF,KAAK,QACHhB,KAAK8F,gBAAgB9E,EACrB,MACF,KAAK,QACHhB,KAAK+F,SAAS/E,EACd,MACF,KAAK,QACL,IAAK,SACHhB,KAAKqF,OAAOrE,KAQhBwD,MAAO,WACLxE,KAAKL,MAAQA,IAEb2C,EAAS7B,EAAKC,EAAKmD,UACnBvB,EAAS7B,EAAKC,EAAKmD,SAAW,IAAM7D,KAAKL,OACzC2C,EAAS7B,EAAK,UACdG,GAAkB,EAClBE,GAAU,EAEVd,KAAKgG,mBACLhG,KAAKiG,gBACLjG,KAAKkG,eACLlG,KAAKqF,QAOL,IAAIc,GAAOnG,IACXoF,YAAW,WACTe,EAAKd,UACJ,IAEHtE,EAASrB,EAAQ,SAAUM,MAAM,GACjCe,EAASrB,EAAQ,QAASM,MAAM,GAChCe,EAAStB,EAASoF,KAAM,YAAa7E,MAAM,GAC3Ce,EAASJ,EAAW,aAAcX,MAAM,GACxCe,EAASJ,EAAW,WAAYX,MAAM,GACtCe,EAASJ,EAAW,UAAWX,MAAM,GACrCe,EAASJ,EAAW,QAASX,MAAM,GACnCe,EAASJ,EAAW,QAASX,MAAM,GAKnCU,EAAKsD,QAMPuB,cAAe,WACRtC,EAAa6B,aAChB7B,EAAayC,KAAO,WACpBjG,EAAS2G,qBAAoB,QAAS,GAAGC,YAAYpD,KAOzD0B,cAAe,WACT1B,EAAa6B,YACf7B,EAAa6B,WAAWC,YAAY9B,IAOxCgD,cAAe,WAGb,GAAKvF,EAAKgD,aAkBH,CACL,GAAI4C,GAAW5F,EAAKgD,aAAarD,QAAO,IAAM,GAE9C,IAAIZ,EAAS2E,eAAekC,GAC1B3F,EAAYlB,EAAS2E,eAAekC,OAC/B,CAAA,IAAI7G,EAAS6E,cAAcgC,GAGhC,KAAM,IAAIxE,OAAK,+DAFfnB,GAAYlB,EAAS6E,cAAcgC,QAxBf,CACtB,GAAItB,GAASvF,EAASyD,cAAa,IACnC8B,GAAOuB,UAAY7F,EAAK8C,MACxBtB,EAAc8C,GACZwB,KAAQ,IACRC,MAAS,eAIS,UAAhB/F,EAAK+C,OACPhD,EAAIqE,WAAW4B,aAAa1B,EAAQvE,EAAIkG,aAExClG,EAAIqE,WAAW4B,aAAa1B,EAAQvE,GAGtCE,EAAYqE,IAmBhBgB,iBAAkB,WAChB,GAAItF,EAAKiD,gBAAiB,CACxB,GAAIiD,GAAQnG,EAAI2F,qBAAoB,KAClCD,EAAOnG,IACT6C,GAAQ+D,EAAO,SAAU7E,EAAGlC,GAC1BkB,EAAS6F,EAAM7E,GAAI,QAAS,WACtBlB,GACFsF,EAAKnB,WAEN,OAUTc,gBAAiB,SAAS1E,GACxB,GAAIA,EAAEyF,eAMJ,MALIzF,GAAE0F,0BACJ1F,EAAE0F,2BAEJ1F,EAAEyF,iBACFzF,EAAE2F,mBACK,CAIP3F,GAAE4F,aAAc,GASpBrB,cAAe,SAAUvE,GAClB6F,MAAMxC,UAAUqC,0BACnB9G,KAAK8F,gBAAgB1E,GAEvBpB,KAAKkH,OAAS9F,EAAE+F,QAAQ,GAAGC,QAC3BpH,KAAKqH,OAASjG,EAAE+F,QAAQ,GAAGG,QAC3BtH,KAAKuH,eAAgB,EAMrB/F,EAAYb,EAAW,UAAWX,MAAM,IAQ1C4F,aAAc,SAAUxE,IAClBoG,KAAKC,IAAIrG,EAAE+F,QAAQ,GAAGC,QAAUpH,KAAKkH,QAAU,IACnDM,KAAKC,IAAIrG,EAAE+F,QAAQ,GAAGG,QAAUtH,KAAKqH,QAAU,MAC7CrH,KAAKuH,eAAgB,IASzB1B,YAAa,SAAUzE,GAErB,GADApB,KAAK8F,gBAAgB1E,GAChBP,IAKAb,KAAKuH,cAAe,CAGvB,GAAe,aAAXnG,EAAEsE,KAEJ,WADA1F,MAAKgF,QAKL,IAAIhE,GAAMI,GAAK1B,EAAO+F,KAGF,KAAdzE,EAAI0G,OAA8B,IAAf1G,EAAI2G,QAC3B3H,KAAKgF,WAYbe,SAAU,SAAU3E,GAEE,MADVA,GAAK1B,EAAO+F,OACdmC,SACN5H,KAAKgF,UAOTkB,aAAc,WACZ,GAAIxF,EAAK4C,QAAS,CAChB,GAAIuE,GAAWpH,EAAIwE,MACjB1B,EAAa,cAAgB7C,EAAK6C,WAAa,IAEjDsE,GAASC,iBACTD,EAASE,cACTF,EAASG,YACTH,EAAStE,WAAaA,IAQ1BiC,YAAa,WAEX,IAAK,GADDyC,GAAc,EACTlG,EAAI,EAAGA,EAAItB,EAAI8D,MAAM1C,OAAQE,IACpCkG,GAAexH,EAAI8D,MAAMxC,GAAGmG,YAG9B,IAAIC,GAAc,IAAMzH,EAAKqD,QAAU,KAAOrD,EAAKmD,SAAW,IAAM7D,KAAKL,MAAQ,sBAAwBsI,EAAc,mBAAqBvH,EAAKqD,QAAU,KAAOrD,EAAKmD,SAAW,IAAM7D,KAAKL,MAAQ,wDAEjMsD,GAAamF,WACfnF,EAAamF,WAAWC,QAAUF,EAElClF,EAAasD,UAAY4B,EAG3BA,EAAc,KAQX,GAAI9E,GAAcxD,EAAIC,GAIT,oBAAXwI,SAA0BA,OAAOC,QAC1CD,OAAOC,QAAU3I,EAEjBF,EAAOE,cAAgBA,GAGzBH,SAAUC,OAAQ,GCtpBpB8I,EAAE,WAEY5I,cAAa,iBACnB8D,aAAc,YACdC,iBAAiB,GAIrB6E,GAAA,4BAA8BC,MAAM,WAChC,GAAIC,SAASC,SAAStI,QAAO,MAAA,MAAeL,KAAK2I,SAAStI,QAAO,MAAA,KAAcqI,SAASE,WAAa5I,KAAK4I,SAAU,CAChH,GAAIC,GAAUL,EAAExI,KAAK8I,KAErB,IADAD,EAAUA,EAAQhH,QAAUgH,GAAWL,EAAA,SAAaxI,KAAK8I,KAAKC,MAAM,GAAG,KACpEF,EAAShH,OAAQ,CAChB,GAAImH,GAAeH,EAAQI,SAASC,GAEpC,OADAV,GAAA,aAAelF,SAAS6F,UAAWH,GAAe,MAC3C","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"]}