{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./template.js","webpack:///./js/adapter/adapter.js","webpack:///./js/core/core.js","webpack:///./js/navigator/navigator.js","webpack:///./js/cookiebar/cookiebar.js","webpack:///./js/asciidoctor/asciidoctor.js","webpack:///./js/scroll-smooth/scroll-smooth.js","webpack:///./js/anime/anime.js","webpack:///./js/tocbot/tocbot.js","webpack:///(webpack)/buildin/global.js","webpack:///./js/tocbot/default-options.js","webpack:///./js/tocbot/build-html.js","webpack:///./js/tocbot/parse-content.js","webpack:///./js/tocbot/update-toc-scroll.js","webpack:///./js/tocbot/scroll-smooth/index.js","webpack:///./js/adoc_result_viewer/view_results.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","j1","adapter","require","core","navigator","cookiebar","asciidoctor","scrollSmooth","anime","_init_","options","$","extend","foo","bar","getState","isMobile","ua_name","a","mobile","userAgent","vendor","opera","test","substr","bsFormClearButton","on","this","val","length","nextAll","removeClass","addClass","logger","logText","cookie_names","getCookieNames","message","cookie_consent","user_session","init","defaultOptions","menuOptions","log4javascript","getLogger","info","manageDropdownMenu","navbarSticky","type","action","text","sendMessage","eventHandler","$getNav","click","e","preventDefault","returnValue","hasClass","wrap","postsArr","Array","index","$postsList","find","each","push","html","firstList","splice","Math","round","secondList","ListHTML","createHTML","list","first","after","next","last","dropDown","megaMenu","closest","prepend","navbarHeighth","outerHeight","scrollTop","debug","animate","slideToggle","is","unbind","slideUp","stopPropagation","toggle","css","wrapInner","$menu","breakPoint","$dropDown","timeoutHandle","navDefaultOptions","navMenuOptions","$getWindow","matchMedia","matches","width","$getIn","data","$getOut","menuSelector","xhr_container_id","delayMenuOpen","delay_menu_open","nav_bar","media_breakpoint","off","stop","fadeToggle","fadeOut","hide","show","hover","$list","eq","setTimeout","fadeIn","clearTimeout","windowHeight","height","windowWidth","getId","$getHeight","getOffset","offset","top","updateSidebar","user_data","json_message","JSON","stringify","resolveMacros","updateMacros","jQuery","moduleOptions","cookie_user_state","user_state","moduleDefaults","renewOnVisit","forceShow","domain","String","location","hostname","referrer","document","dependencies_met_page_ready","setInterval","user_state_detected","existsCookie","readCookie","error","cookies_accepted","modal","clearInterval","current_page","pathname","modalButtons","querySelectorAll","whitelistedPages","appDetected","deleteOnDecline","stopScrolling","whitelisted","forEach","button","addEventListener","id","toggleClass","writeCookie","expires","current_user_data","mergeData","indexOf","warn","deleteCookie","goHome","dummyOption","callouts","colgroupList","conums","dependencies_met_page_finished","scroll","target","duration","scrollTo","callback","timeStart","timeElapsed","start","pageYOffset","opt","easing","b","tgt","querySelector","decodeURI","split","join","distance","getBoundingClientRect","documentElement","body","loop","time","requestAnimationFrame","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","direction","autoplay","timelineOffset","defaultTweenSettings","delay","endDelay","validTransforms","cache","CSS","springs","minMax","min","max","stringContains","str","applyArguments","func","args","apply","arr","isArray","obj","toString","pth","svg","SVGElement","inp","HTMLInputElement","dom","nodeType","fnc","und","hex","rgb","hsl","col","parseEasingParameters","string","match","exec","map","parseFloat","spring","params","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","abs","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","pow","Elastic","amplitude","period","asin","keys","easeIn","parseEasings","ease","selectString","filterArray","len","thisArg","arguments","result","flattenArray","reduce","concat","toArray","NodeList","HTMLCollection","slice","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","replace","g","parseInt","hexToRgba","hslValue","h","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","total","getAttribute","el","prop","convertPxToUnit","unit","tempEl","createElement","tagName","parentEl","parentNode","appendChild","style","position","factor","offsetWidth","removeChild","convertedUnit","getCSSValue","uppercasePropName","toLowerCase","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","Map","set","getTransformValue","propName","defaultVal","getTransformUnit","getOriginalTargetValue","getRelativeValue","to","from","operator","u","y","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","viewBox","w","getPathProgress","path","point","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","Number","strings","parseTargets","targets","item","pos","self","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","k","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","end","isPath","isColor","setProgressValue","attribute","setAttribute","manual","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","engine","play","step","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","children","startTime","lastTime","now","childrenLength","resolve","makePromise","instance","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","isNaN","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","reverse","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","version","remove","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","values","maxValue","fromX","fromY","floor","distanceX","distanceY","timeline","tl","add","instanceParams","tlIndex","insParams","tlDuration","random","root","global","define","buildHtml","parseContent","headingsArray","tocbot","BuildHtml","ParseContent","updateTocScroll","supports","destroy","skipRendering","tocSelector","innerHTML","console","scrollContainer","removeEventListener","_scrollListener","_clickListener","customOptions","source","state","scrollSmoothDuration","scrollSmoothOffset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","contentSelector","headingSelector","nestedHeadings","nestHeadingsArray","nest","render","throttle","updateToc","disableTocScrollSync","isTop","scrollingElement","eventPhase","currentTarget","scrollEndCallback","throttleTimeout","timeout","event","disableTocAnimation","enableTocAnimation","refresh","fn","threshold","scope","deferTimer","context","Date","Function","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","headingsOffset","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","onClick","orderedList","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","basePath","currentlyHighlighting","createEl","container","link","onclick","childNodes","node","cloneNode","textContent","nodeName","createLink","createList","isCollapsed","listElement","classes","srcElement","className","selector","parent","firstChild","posFixedEl","offsetTop","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","offsetParent","tocLinks","tocLink","tocLis","tocLi","activeTocLink","li","tocLists","nextSibling","removeCollapsedFromParents","element","getLastItem","array","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","trim","prev","curr","currentHeading","level","lastItem","counter","undefined","addNode","selectors","toc","scrollHeight","clientHeight","activeItem","pageUrl","hash","stripHash","href","url","lastIndexOf","charAt","jump","getElementById","substring","tabIndex","focus","idx","result_block","title_div","view_result_link","append","toggle_result_block"],"mappings":"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","file":"template.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/themes/j1/core/js\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n # -----------------------------------------------------------------------------\n # ~/src/template.js\n # J1 Template Javascript Core library\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* global window */\n\n// -----------------------------------------------------------------------------\n// Import SASS sources for HMR\n// -----------------------------------------------------------------------------\n// import '../100_template_css/scss/theme_uno/components/_footer.scss';\n// import '../100_template_css/theme_uno.css'; // <-- yes, also require (s)css. This is a Webpack thing\n\n// Core Libraries - imported|required from NODE|NPM modules\n// -----------------------------------------------------------------------------\n//\n// Following objects (framework modules) are *conditionaly* forced to be\n// exposed for run-time to the global namespace (window) by WP config\n// file (expose-loader):\n// jQuery\n// Popper ('popper.js/dist/umd/popper', https://github.com/twbs/bootstrap/issues/23381)\n// -----------------------------------------------------------------------------\n\n// Core Utilities (moved to modules)\n// -----------------------------------------------------------------------------\n// Following objects (native node modules) are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// window.Cookies = require('js-cookie');\n// window.log4javascript = require('log4javascript');\n// window.parseURL = require('lite-url');\n// window.platform = require('platform');\n// window.yaml = require('js-yaml');\n// window.uuid = require('uuid/v4');\n\n// Core Libraries - build|required from SOURCE\n// -----------------------------------------------------------------------------\n\n// Following source objects|modules are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.j1.adapter = require('./js/adapter/adapter.js');\nwindow.j1.core = require('./js/core/core.js');\nwindow.j1.core.navigator = require('./js/navigator/navigator.js');\nwindow.j1.core.cookiebar = require('./js/cookiebar/cookiebar.js');\nwindow.j1.core.asciidoctor = require('./js/asciidoctor/asciidoctor.js');\nwindow.j1.core.scrollSmooth = require('./js/scroll-smooth/scroll-smooth.js');\nwindow.j1.anime = require('./js/anime/anime.js'); // added for fam\n// window.j1.fam = require('./js/fam/fam.js'); // cannot used until NOT rewritten to jQuery\n\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n//const Bootstrap = require('./js/bootstrap/bootstrap.js');\n//const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js');\nconst J1Tocbot = require('./js/tocbot/tocbot.js');\n//const J1ThemeSwitcher = require('./js/bs_theme_switcher/switcher.js');\n// const J1MmenuLight = require('./js/mmenu-light/mmenu.js');\n\n// Passing log data over Internet|SeeMe (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.log4javascript = require('./js/logger/client/webhook.js');\n\n// BMD Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// window.bootstrapMaterialDesign = require('./js/bmd/js/bmd.js');\n\n// Github Webhooks (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.webhooks = require('./js/webhooks/octokit/client.js');\n\n\n// Test|Custom modules (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1promiseTest = require('./js/custom/test_promises.js');\n// window.j1Example = require('./js/custom/example_module.js');\n\n// BS Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// const Bootstrap = require('./js/bootstrap/bootstrap.js');\n\n// const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js'); // Buffer Kack\n// const J1Tocbot = require('./js/tocbot/tocbot.js');\n\n// Backstretch (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the namespace of jQuery ($).\n// -----------------------------------------------------------------------------\n// const J1Attics = require('./js/backstretch/backstretch.js');\n\n// Additional Vanilla JS helpers\n// -----------------------------------------------------------------------------\nconst J1AdocResultViewer = require('./js/adoc_result_viewer/view_results.js');\n// const MSIEPolyfills = require('./js/polyfills/ms-ie.js');\n\n// HMR messages (currently NOT used)\n// -----------------------------------------------------------------------------\n// if (module.hot) {\n// var logtext;\n// var stat;\n// var stat=module.hot.status();\n//\n// logtext='[INFO ] [HMR ] [Hot Module Replacement enabled]';\n// console.log(logtext);\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n//\n// module.hot.accept('./template.js', function() {\n// console.log('[HMR] Accepting the updated template.js module!');\n// });\n//\n// module.hot.accept('../100_template_css/theme_uno.scss', function () {\n// console.log('[HMR] Accepting the updated style.css module!');\n// require('../100_template_css/theme_uno.scss')\n// })\n//\n// React to the current status...\n// module.hot.addStatusHandler(status => {\n// stat=module.hot.status();\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n// });\n//}\n\n// -----------------------------------------------------------------------------\n// END\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adapter/adapter.js\n # Provides an empty object for later loaded adapter objects\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 Adapter\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function ( j1, window ) {\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the adapter object\n // -------------------------------------------------------------------------\n _init_: function () {\n return;\n } // END _init_\n\n }; // END return\n\n})( j1, window );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/j1_template/core.js\n # Provides an empty object for later loaded core objects\n #\n # Product/Info:\n # https://jekyll.one\n # http://getbootstrap.com/\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// module.exports = function core ( options ) {\n/*!\n * J1 Core\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function (options) {\n\n // ---------------------------------------------------------------------------\n // Global variables\n // ---------------------------------------------------------------------------\n // var messageCatalog = {};\n // var state;\n // var logger;\n // var logText;\n\n // ---------------------------------------------------------------------------\n // Default settings\n // ---------------------------------------------------------------------------\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n var state = 'loaded';\n\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the core object\n // -------------------------------------------------------------------------\n _init_: function (options) {\n\n //\n // Place handling of options here\n //\n\n return;\n }, // END _init_\n\n // -------------------------------------------------------------------------\n // Returns the current (processing) state of the module\n // -------------------------------------------------------------------------\n getState: function () {\n return state;\n }, // END state\n\n // -------------------------------------------------------------------------\n // isMobile\n // Return true if the current platform is a mobile device\n // -------------------------------------------------------------------------\n isMobile: function (ua_name) {\n var mobile = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return mobile;\n }, // END isMobile\n\n // -------------------------------------------------------------------------\n // Clear button for input fields (forms)\n // -------------------------------------------------------------------------\n bsFormClearButton: function () {\n// $('.position-relative :input').on('keydown focus', function() {\n $(':input').on('keydown focus change mouseover', function() {\n if ($(this).val().length > 0) {\n $(this).nextAll('.form-clear').removeClass('d-none');\n }\n }).on('keydown keyup blur', function() {\n if ($(this).val().length === 0) {\n $(this).nextAll('.form-clear').addClass('d-none');\n }\n });\n\n // $('.form-clear').on('click', function() {\n // $(this).addClass('d-none').prevAll(':input').val('');\n // // hide|clear results from top search\n // $('#search-results').hide();\n // $('#search-results').html('');\n // });\n }\n\n }; // end return (object)\n\n//})( jQuery, window );\n})(); // END IFFE\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/navigator/navigator.js\n # Provides all JavaScript core functions for J1 Navigator\n #\n # Product/Info:\n # https://jekyll.one\n # https://github.com/adamnurdin01/navigator\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 adamnurdin01\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Bootsnav is licensed under MIT License.\n # See: https://github.com/adamnurdin01/navigator\n #\n # -----------------------------------------------------------------------------\n # NOTE:\n # jadams, 2020-06-21:\n # J1 Navigator needs a general revision on BS4 code and functionalities\n # Current, only base function are tested with BS4 (was coded for BS3)\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// TODO: Height of dropdowns are to be limited in general\n\n// -----------------------------------------------------------------------------\n// Navigator core registered as 'j1.core.navigator'\n// -----------------------------------------------------------------------------\n\nmodule.exports = function navigator ( options ) {\n\n // ---------------------------------------------------------------------------\n // global vars\n // ---------------------------------------------------------------------------\n var cookie_names = j1.getCookieNames();\n var cookie_consent_name = cookie_names.cookie_consent;\n var cookie_user_session_name = cookie_names.user_session;\n var message = {};\n var state;\n var logger;\n var logText;\n\n // -----------------------------------------------------------------------\n // default settings\n // -----------------------------------------------------------------------\n var settings = $.extend ({\n foo: 'bar',\n bar: 'foo',\n }, options );\n\n // ---------------------------------------------------------------------------\n // main object\n // ---------------------------------------------------------------------------\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function( defaultOptions, menuOptions ) {\n logger = log4javascript.getLogger('j1.core.navigator');\n logText = 'core is being initialized';\n\n logger.info(logText);\n this.manageDropdownMenu(defaultOptions, menuOptions);\n this.navbarSticky();\n // this.navbarScrollspy();\n\n message.type = 'command';\n message.action = 'module_initialized';\n message.text = 'navigator core initialized successfully';\n j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n\n return true;\n },\n\n // -------------------------------------------------------------------------\n // event handler\n // -------------------------------------------------------------------------\n eventHandler: function() {\n var logger = log4javascript.getLogger('j1.core.navigator.eventHandler');\n var $getNav = $('nav.navbar.navigator');\n // const seeMe = 'https://smee.io/wlNIFNiJN0GClm2';\n // const middleware = 'localhost:5000/state';\n // const web_server_dev = 'http://localhost:41000/status';\n // const utility_server = 'http://localhost:41001/git?request=pull';\n // var sender = seeMe;\n // var payload;\n var json_data;\n\n // if (j1.checkUserAgent('IE') || j1.checkUserAgent('Edge')) {\n // logger.warn('HTML5 server side events (SSE) not supported for: ' + userAgent);\n // logger.warn('Middleware messages disabled');\n // } else {\n // const middleware_status = new EventSource(sender);\n //\n // // -----------------------------------------------------------------------\n // // middleware event handler ( SSE currently NOT used)\n // // -----------------------------------------------------------------------\n // middleware_status.onmessage = (event) => {\n // const payload = JSON.parse(event.data);\n //\n // logger.debug('middleware: event received');\n //\n // json_data = JSON.stringify(payload, undefined, 2);\n // logText = 'payload: ' + json_data;\n // logger.debug(logText);\n //\n // message.type = 'command';\n // message.action = 'status';\n // message.text = payload;\n // j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n //\n // return true;\n // }; // END event onMessage\n // }\n\n // bind click event to all links with \"#\" to suppress default action\n // See: https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0\n //\n $('a[href=\"#\"]').click(function(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n logger.info('bound click event to \"#\", suppress default action');\n });\n\n // -----------------------------------------------------------------------\n // Navbar Sticky\n // -----------------------------------------------------------------------\n var navSticky = $getNav.hasClass('navbar-sticky');\n if( navSticky ){\n // Wraped navigation\n $getNav.wrap('
');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Center\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('brand-center') ){\n var postsArr = new Array();\n var index = $('nav.brand-center');\n var $postsList = index.find('ul.navbar-nav');\n\n //Create array of all posts in lists\n index.find('ul.navbar-nav > li').each(function(){\n postsArr.push($(this).html());\n });\n\n // Split the array at this point. The original array is altered.\n var firstList = postsArr.splice(0, Math.round(postsArr.length / 2));\n var secondList = postsArr;\n var ListHTML = '';\n\n var createHTML = function(list) {\n ListHTML = '';\n for (var i = 0; i < list.length; i++) {\n ListHTML += '
  • ' + list[i] + '
  • ';\n }\n };\n\n // Generate HTML for first list\n createHTML(firstList);\n $postsList.html(ListHTML);\n index.find('ul.nav').first().addClass('navbar-left');\n\n // Generate HTML for second list\n createHTML(secondList);\n //Create new list after original one\n $postsList.after('').next().html(ListHTML);\n index.find('ul.nav').last().addClass('navbar-right');\n\n // Wrap navigation menu\n index.find('ul.nav.navbar-left').wrap('
    ');\n index.find('ul.nav.navbar-right').wrap('
    ');\n\n // Selection Class\n index.find('ul.navbar-nav > li').each(function() {\n var dropDown = $('ul.dropdown-menu', this),\n megaMenu = $('ul.megamenu-content', this);\n dropDown.closest('li').addClass('dropdown');\n megaMenu.closest('li').addClass('megamenu-fw');\n });\n }\n\n // -----------------------------------------------------------------------\n // Navbar Sidebar\n // -----------------------------------------------------------------------\n // if( $getNav.hasClass('navbar-sidebar')) {\n // // Add Class to body\n // $('body').addClass('wrap-nav-sidebar');\n // $getNav.wrapInner('
    ');\n // } else {\n // $('.navigator').addClass('on');\n // }\n\n // -----------------------------------------------------------------------\n // Menu Center\n // -----------------------------------------------------------------------\n if( $getNav.find('ul.nav').hasClass('navbar-center')) {\n $getNav.addClass('menu-center');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Full\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')) {\n // Add Class to body\n $('nav.navbar.navigator').find('ul.nav').wrap('
    ');\n $('.wrap-full-menu').wrap('
    ');\n $('ul.nav.navbar-nav').prepend('
  • ');\n } else if( $getNav.hasClass('navbar-mobile') ) {\n $getNav.removeClass('no-full');\n } else {\n $getNav.addClass('no-full');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Mobile\n // -----------------------------------------------------------------------\n // if( $getNav.hasClass('navbar-mobile')) {\n // // Add Class to body\n // $('.navbar-collapse').on('shown.bs.collapse', function() {\n // $('body').addClass('side-right');\n // });\n // $('.navbar-collapse').on('hide.bs.collapse', function() {\n // $('body').removeClass('side-right');\n // });\n //\n // $(window).on('resize', function() {\n // $('body').removeClass('side-right');\n // });\n // }\n\n // -----------------------------------------------------------------------\n // Navbar Fixed\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('no-background') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('no-background');\n } else {\n $('.navbar-fixed').addClass('no-background');\n }\n });\n }\n\n if( $getNav.hasClass('navbar-transparent') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('navbar-transparent');\n $('.navbar-fixed').addClass('navbar-scrolled');\n } else {\n $('.navbar-fixed').removeClass('navbar-scrolled');\n $('.navbar-fixed').addClass('navbar-transparent');\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Toggle Search\n // https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery\n // https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\n // https://stackoverflow.com/questions/5963669/whats-the-difference-between-event-stoppropagation-and-event-preventdefault\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register OPEN event|s for QuickSearch');\n $('li.search > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action OPEN');\n $('html,body').animate({scrollTop: 0}, 0);\n $('.top-search').slideToggle('slow', 'swing', function() {\n if ( $('.top-search').is(':visible') ) {\n // disable scrolling (desktop)\n $('body').addClass('stop-scrolling');\n // disable scrolling (mobile)\n $('body').bind('touchmove', function(e){e.preventDefault();});\n } else {\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n }\n });\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n logger.debug('register CLOSE event|s for QuickSearch');\n $('.input-group-addon.close-search').on('click', function(e) {\n e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action CLOSE');\n $('.top-search').slideUp('slow', 'swing');\n $('html,body').animate({scrollTop: 0}, 0);\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n e.stopPropagation(); // don't bubble up the event\n });\n\n // -----------------------------------------------------------------------\n // Toggle Translator SHOW|HIDE\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register SHOW|HIDE event|s for J1 Translator');\n $('li.translator > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // window.location.reload(true);\n logger.debug('toggle translator icon SHOW|HIDE');\n // See: https://api.jquery.com/toggle/\n // With no parameters, the .toggle() method simply toggles the visibility of elements\n $('#google_translate_element').toggle();\n if ($('#google_translate_element').css('display') !== 'none') {\n $('html,body').animate({scrollTop: 0}, 'slow');\n }\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // -----------------------------------------------------------------------\n // Toggle Side Menu\n // -----------------------------------------------------------------------\n // $('nav.navbar.navigator .attr-nav').each(function() {\n // logger.debug('register OPEN event|s for SideBar');\n // $('li.side-menu > a', this).on('click', function(e) {\n // // e.preventDefault(); // don't do the default browser action\n // logger.debug('manage sidebar action OPEN');\n // // e.stopPropagation(); // don't bubble up the event\n // $('nav.navbar.navigator > .side').toggleClass('on');\n // $('body').toggleClass('on-side');\n // // e.stopPropagation(); // don't bubble up the event\n // });\n // });\n // logger.debug('register CLOSE event|s for SideBar');\n // $('.side .close-side').on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // logger.debug('manage sidebar action CLOSE');\n // $('nav.navbar.navigator > .side').removeClass('on');\n // $('body').removeClass('on-side');\n // // e.stopPropagation(); // don't bubble up the event\n // });\n\n // -----------------------------------------------------------------------\n // Wrapper\n // -----------------------------------------------------------------------\n $('body').wrapInner( '
    ');\n\n }, // end event\n\n // -------------------------------------------------------------------------\n // Manage the Menu Dropdowns for Desktop|Mobile\n // -------------------------------------------------------------------------\n manageDropdownMenu : function( defaultOptions, menuOptions ) {\n\n var navDefaultOptions = defaultOptions;\n var navMenuOptions = menuOptions;\n\n var $getNav = $('nav.navbar.navigator');\n var $windowOrientation = window.matchMedia('(orientation: landscape)').matches ? 'landscape' : 'portrait';\n var $getWindow = $(window).width();\n var $getNavWidth = $('nav').width();\n var $getIn = $getNav.find('ul.nav').data('in');\n var $getOut = $getNav.find('ul.nav').data('out');\n\n var menuSelector = '#' +navMenuOptions.xhr_container_id+ '.collapse';\n var delayMenuOpen = navMenuOptions.delay_menu_open;\n\n var $menu;\n var breakPoint;\n var $dropDown;\n var timeoutHandle;\n\n // BS4 @media MAX breakpoints\n // NOTE: a media query is always a range\n // -----------------------------------------------------------------------\n var gridBreakpoint_lg = 992; // bs-breakpoint-lg\n var gridBreakpoint_md = 768; // bs-breakpoint-md\n var gridBreakpoint_sm = 576; // bs-breakpoint-sm\n\n // BS4 @media MIN breakpoints\n // -----------------------------------------------------------------------\n // NOTE: a media query is always a range\n // var gridBreakpoint_lg = 991;\n // var gridBreakpoint_md = 767;\n // var gridBreakpoint_sm = 575;\n\n // @media ranges\n // -----------------------------------------------------------------------\n var small_range = {min: '0em', max: '40em'}; /* 0, 640px */\n var medium_range = {min: '40.063em', max: '64em'}; /* 641px, 1024px */\n var large_range = {min: '64.063em', max: '90em'}; /* 1025px, 1440px */\n var xlarge_range = {min: '90.063em', max: '120em'}; /* 1441px, 1920px */\n var xxlarge_range = {min: '120.063em'}; /* 1921px */\n\n\n // jadams, 2019-05-01: Set Media Breakpoint for Desktop|Mobile Navigation\n if ( navDefaultOptions.nav_bar.media_breakpoint === 'lg' ) {\n breakPoint = gridBreakpoint_lg;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'md' ) {\n breakPoint = gridBreakpoint_md;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'sm' ) {\n breakPoint = gridBreakpoint_sm;\n } else{\n breakPoint = gridBreakpoint_lg;\n }\n\n // -----------------------------------------------------------------------\n // Tablet or Mobile\n // NOTE:\n // Managing the mobile menu is moved to MMenu Plugin\n // Only base functions like QuickLinks are managed by\n // J1 Navigator\n // -----------------------------------------------------------------------\n // MIN media breakpoint\n if ( $getWindow <= breakPoint ) {\n\n // Collapse Navbar\n $(menuSelector).addClass('navbar-collapse');\n $(menuSelector).removeClass('show'); //\n $('#navigator_nav_quicklinks').addClass('show');\n\n // Enable click Quicklink Navigation\n $('nav.navbar.navigator .attr-nav').each(function() {\n $('.dropdown-menu', this).removeClass('animated');\n $('li.dropdown', this).off('mouseenter');\n $('li.dropdown', this).off('mouseleave');\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n $(this).closest('li.dropdown').find('.dropdown-menu').first().stop().fadeToggle();\n $('.navbar-toggle').each(function(){\n $('.mdi', this).removeClass('mdi-close');\n $('.mdi', this).addClass('mdi-menu');\n $('.navbar-collapse').removeClass('in');\n $('.navbar-collapse').removeClass('open');\n });\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).stop().fadeOut();\n $('li.dropdown', this).removeClass('open');\n // return false;\n });\n });\n\n $('#desktop_menu').hide();\n\n // -----------------------------------------------------------------------\n // Desktop Navigation does NOT work on physical devices like iPad|Pro\n // Config DISABLED\n //\n// } else if ( $getWindow > breakPoint || $getWindow <= 1024 && $windowOrientation == 'portrait' ) {\n } else if ( $getWindow > breakPoint ) {\n // -----------------------------------------------------------------------\n // Desktop\n // -----------------------------------------------------------------------\n $('#navigator_nav_quicklinks').removeClass('show');\n $('#desktop_menu').show();\n\n // jadams, 2021-03-05: manage dropdown menus\n // ---------------------------------------------------------------------\n\n $('.dropdown-menu > li').on('mouseenter', function(){\n if ($('body').hasClass('stop-scrolling')){\n return false;\n } else {\n $('body').addClass('stop-scrolling');\n }\n });\n\n $('.dropdown-menu > li').on('mouseleave', function(){\n // stop scrolling if top search or any (mmenu) drawer is opened\n if ($('body').hasClass('stop-scrolling')){\n $('body').removeClass('stop-scrolling');\n }\n });\n\n // limit the dropdown menu lenght if needed\n $('.dropdown-menu > li').hover(function() {\n var $container = $(this);\n var $list = $container.find('ul');\n\n // limit LAST menu ONLY\n //\n if ( $list.length == 1 ) {\n $list.addClass('scrollable-menu');\n }\n });\n\n // jadams, 2021-03-06: Enable|Show Desktop Menu|s\n //\n $(menuSelector).removeClass('navbar-collapse');\n $(menuSelector).addClass('show');\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // Open Desktop Menu|s on hover\n //\n $('nav.navbar.navigator ul.nav').each(function() {\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.megamenu-fw', this).each(function(){\n $('.title', this).off('click');\n $('a.dropdown-toggle', this).off('click');\n $('.content').removeClass('animated');\n });\n $('.dropdown-menu', this).addClass('animated');\n\n $('li.dropdown', this).on('mouseenter', function(){\n $menu = $('.dropdown-menu', this).eq(0);\n $dropDown = $(this);\n\n $menu.removeClass($getOut);\n $menu.removeClass('open');\n $dropDown.addClass('open');\n // Get|Set the timeout object to delay the dropdown open\n timeoutHandle = window.setTimeout(function () {\n if ($dropDown.hasClass('open')){\n $menu.stop().fadeIn().addClass($getIn);\n $menu.addClass('open');\n $dropDown.addClass('open');\n }\n }, delayMenuOpen);\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n $(this).removeClass('open').removeClass('open');\n\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n\n $(this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle);\n $('li.dropdown', this).removeClass('open');\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n }); // END Desktop Menu\n\n } // end Desktop\n\n // -----------------------------------------------------------------------\n // Hover Open on Quicklink Navigation\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.dropdown-menu', this).addClass('animated');\n $('li.dropdown', this).on('mouseenter', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getOut);\n $('.dropdown-menu', this).eq(0).stop().fadeIn().addClass($getIn);\n $(this).addClass('open');\n //return false;\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $(this).removeClass('open');\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $('li.dropdown', this).removeClass('open');\n //return false;\n });\n });\n\n // -----------------------------------------------------------------------\n // Fullscreen Menu\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')){\n var windowHeight = $(window).height(),\n windowWidth = $(window).width();\n\n $('.nav-full').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('width', windowWidth + 'px');\n\n $('.navbar-collapse').addClass('animated');\n $('.navbar-toggle').each(function(){\n var getId = $(this).data('target');\n $(this).off('click');\n $(this).on('click', function(e){\n e.preventDefault();\n $(getId).removeClass($getOut);\n $(getId).addClass('in');\n $(getId).addClass($getIn);\n // e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n\n $('li.close-full-menu').on('click', function(e){\n e.preventDefault();\n $(getId).addClass($getOut);\n setTimeout(function(){\n $(getId).removeClass('in');\n $(getId).removeClass($getIn);\n }, 500);\n //e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n });\n }\n }, // end manageDropdownMenu\n\n // -------------------------------------------------------------------------\n // Sticky Navbar\n // -------------------------------------------------------------------------\n navbarSticky : function() {\n var $getNav = $('nav.navbar.navigator'),\n navSticky = $getNav.hasClass('navbar-sticky');\n\n if (navSticky) {\n // Set Height Navigation\n var $getHeight = $getNav.height();\n $('.wrap-sticky').height($getHeight);\n\n // Windown on scroll\n var getOffset = $('.wrap-sticky').offset().top;\n $(window).on('scroll', function(){\n var scrollTop = $(window).scrollTop();\n if(scrollTop > getOffset){\n $getNav.addClass('sticked');\n }else {\n $getNav.removeClass('sticked');\n }\n });\n }\n }, // end navbarSticky\n\n // -------------------------------------------------------------------------\n // Navbar Scrollspy\n // -------------------------------------------------------------------------\n // navbarScrollspy : function() {\n // var navScrollSpy = $('.navbar-scrollspy'),\n // $body = $('body'),\n // $getNav = $('nav.navbar.navigator'),\n // offset = $getNav.outerHeight();\n //\n // if( navScrollSpy.length ){\n // $body.scrollspy({target: '.navbar', offset: offset });\n //\n // // Animation Scrollspy\n // $('.scroll').on('click', function(event) {\n // event.preventDefault();\n //\n // // Active link\n // $('.scroll').removeClass('active');\n // $(this).addClass('active');\n //\n // // Remove navbar collapse\n // $('.navbar-collapse').removeClass('in');\n //\n // // Toggle Bars\n // $('.navbar-toggle').each(function(){\n // $('.mdi', this).removeClass('mdi-close');\n // $('.mdi', this).addClass('mdi-menu');\n // });\n //\n // // Scroll\n // var scrollTop = $(window).scrollTop(),\n // $anchor = $(this).find('a'),\n // $section = $($anchor.attr('href')).offset().top,\n // $window = $(window).width(),\n // $minusDesktop = $getNav.data('minus-value-desktop'),\n // $minusMobile = $getNav.data('minus-value-mobile'),\n // $speed = $getNav.data('speed'),\n // $position;\n //\n // if( $window > 992 ){\n // $position = $section - $minusDesktop;\n // }else{\n // $position = $section - $minusMobile;\n // }\n //\n // $('html, body').stop().animate({\n // scrollTop: $position\n // }, $speed);\n // });\n //\n // // Activate Navigation\n // var fixSpy = function() {\n // var data = $body.data('bs.scrollspy');\n // if (data) {\n // offset = $getNav.outerHeight();\n // data.options.offset = offset;\n // $body.data('bs.scrollspy', data);\n // $body.scrollspy('refresh');\n // }\n // };\n //\n // // Activate Navigation on resize\n // var resizeTimer;\n // $(window).on('resize', function() {\n // clearTimeout(resizeTimer);\n // var resizeTimer = setTimeout(fixSpy, 200);\n // });\n // }\n // }, // end navbarScrollspy\n\n // -------------------------------------------------------------------------\n // updateSidebar\n // Note:\n // -------------------------------------------------------------------------\n updateSidebar: function (user_data) {\n var logger = log4javascript.getLogger('j1.core.navigator.updateSidebar');\n var json_message;\n\n// json_message = JSON.stringify(user_data, undefined, 2); // multiline\n json_message = JSON.stringify(user_data);\n logText = 'user state data: ' + json_message;\n logger.debug(logText);\n\n // Replace Macro placeholders to values\n j1.resolveMacros(user_data);\n // Replace Macro values only\n j1.updateMacros(user_data);\n\n return true;\n\n }, // END updateSidebar\n\n }; // end return (object)\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/assets/themes/j1/modules/cookiebar/js/cookiebar.js\n # Provides Javascript functions for jQuery cookiebar\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # cb cookie disabled. Instead, j1 user state cookie is used.\n # -----------------------------------------------------------------------------\n # TODO:\n # Module needs to be rewritten to use j1 native BS modals.\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// Cookie Consent core registered as \"cookiebar\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Cookiebar\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function cookiebar (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // Initialize cookie consent core\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.cookiebar');\n var cookie_names = j1.getCookieNames();\n const cookie_user_state = cookie_names.user_state;\n var user_state = {};\n\n var moduleDefaults = {\n renewOnVisit: false, // Renew the cookie upon revisit to website\n forceShow: false, // Force cookiebar to show regardless of user cookie preference\n domain: String(window.location.hostname), // Location of privacy policy\n referrer: String(document.referrer) // Where visitor has come from\n };\n\n var options = $.extend(moduleDefaults,moduleOptions);\n\n var dependencies_met_page_ready = setInterval (function (options) {\n if ( j1.getState() == 'finished' ) {\n\n // Set|Detect J1 UserState\n user_state_detected = j1.existsCookie (cookie_user_state);\n if ( user_state_detected ) {\n logger.info('user state cookie found');\n user_state = j1.readCookie(cookie_user_state);\n } else {\n logger.error('user state NOT cookie found');\n }\n\n // Show cookie (consent) icon\n if (user_state.cookies_accepted == 'accepted') {\n // Display cookie (consent) icon\n $('#quickLinksCookieButton').css('display', 'block');\n }\n\n // Hide cookie (consent) icon\n if (user_state.cookies_accepted == 'pending' || user_state.cookies_accepted == 'declined' ) {\n // Display cookie (consent) icon\n $('#quickLinksCookieButton').css('display', 'none');\n }\n\n // Sets expiration date for cookie\n // var expireDate = new Date();\n // expireDate.setTime(expireDate.getTime()+(options.expireDays*86400000));\n // expireDate = expireDate.toGMTString();\n\n if (\n user_state.cookies_accepted == 'pending' ||\n user_state.cookies_accepted == 'declined' ||\n user_state.cookies_accepted == '')\n {\n $('#topFullCookieConsent').modal('show');\n }\n clearInterval(dependencies_met_page_ready);\n }\n });\n },\n\n // -------------------------------------------------------------------------\n // eventHandler: EventHandler for J1 Cookie Consent\n // Manage button click events for all BS Modals\n // See: https://www.nickang.com/add-event-listener-for-loop-problem-in-javascript/\n // -------------------------------------------------------------------------\n eventHandler: function (options) {\n var logger = log4javascript.getLogger('j1.core.cookiebar.eventHandler');\n var current_page = window.location.pathname;\n var modalButtons = document.querySelectorAll('a.btn');\n var appDetected = j1.appDetected();\n var deleteOnDecline = options.deleteOnDecline;\n var deleteOnDecline = true;\n var whitelistedPages = options.whitelistedPages;\n var whitelistedPages = [];\n var stopScrolling = options.stopScrolling;\n var cookie_names = j1.getCookieNames();\n const cookie_user_state = cookie_names.user_state;\n var user_state = {};\n var cookie_consent = j1.readCookie(cookie_user_state);\n var whitelisted;\n var json_data;\n\n logText = 'register button click events';\n logger.debug(logText);\n\n modalButtons.forEach(function(button, index) {\n button.addEventListener('click', function(e) {\n\n // CookieConsent policyButton\n // -------------------------------------------------------------------\n if (this.id === 'policyButton') {\n logger.debug('user clicked policyButton');\n // toggle|display cookie policy\n $('#cookiePolicyInfo').toggle( 'fast', function() {\n // toggle container classes\n $('#modal-footer').toggleClass('modal-footer-hidden modal-footer-show');\n });\n\n // return false behaves like preventDefault() to block\n // further event propagation (bubble up)\n return false;\n }\n\n // CookieConsent acceptButton\n // -------------------------------------------------------------------\n if (this.id === 'acceptButton') {\n logger.debug('user clicked acceptButton');\n\n // Set consent state\n cookie_consent = j1.readCookie(cookie_user_state);\n cookie_consent.cookies_accepted = 'accepted';\n\n // Update user state cookie\n\n // j1.writeCookie({\n // name: cookie_user_state,\n // data: cookie_consent,\n // expires: cookie_consent.live_span\n // });\n\n j1.writeCookie({\n name: cookie_user_state,\n data: cookie_consent,\n expires: 365\n });\n\n // update sidebar for changed consent|theme data\n logger.info('update sidebar');\n user_state = j1.readCookie(cookie_names.user_state);\n user_session = j1.readCookie(cookie_names.user_session);\n current_user_data = j1.mergeData(user_session, user_state);\n j1.core.navigator.updateSidebar(current_user_data);\n\n // Display cookie icon\n $('#quickLinksCookieButton').css('display', 'block');\n\n return false;\n }\n\n // CookieConsent declineButton\n // -------------------------------------------------------------------\n if (this.id === 'declineButton') {\n logger.debug('user clicked declineButton');\n\n // Set consent state|current_page\n cookie_consent.cookies_accepted = 'declined';\n current_page = window.location.pathname;\n whitelisted = (whitelistedPages.indexOf(current_page) > -1);\n\n // update sidebar for changed consent|theme data\n logger.info('update sidebar');\n user_state = j1.readCookie(cookie_names.user_state);\n user_session = j1.readCookie(cookie_names.user_session);\n current_user_data = j1.mergeData(user_session, user_state);\n j1.core.navigator.updateSidebar(current_user_data);\n\n if (deleteOnDecline) {\n // Delete cookies\n logger.warn('delete all cookies');\n j1.deleteCookie(cookie_user_state);\n }\n\n $('#quickLinksCookieButton').css('display', 'none');\n // Set route to home page if current page is NOT whitelisted\n if ( !whitelisted ) { j1.goHome(); }\n\n return false;\n }\n\n // revokeCookiesButton\n // -------------------------------------------------------------------\n if (this.id === 'revokeCookies') {\n logger.debug('user clicked revokeCookiesButton');\n\n current_page = window.location.pathname;\n whitelisted = (whitelistedPages.indexOf(current_page) > -1);\n\n // Set consent state\n cookie_consent = j1.readCookie(cookie_user_state);\n cookie_consent.cookies_accepted = 'declined';\n\n // Update user state cookie\n\n // j1.writeCookie({\n // name: cookie_user_state,\n // data: cookie_consent,\n // expires: cookie_consent.live_span\n // });\n\n j1.writeCookie({\n name: cookie_user_state,\n data: cookie_consent,\n expires: 365\n });\n\n // update sidebar for changed consent|theme data\n logger.info('update sidebar');\n user_state = j1.readCookie(cookie_names.user_state);\n user_session = j1.readCookie(cookie_names.user_session);\n current_user_data = j1.mergeData(user_session, user_state);\n j1.core.navigator.updateSidebar(current_user_data);\n\n // Hide cookie icon\n $('#quickLinksCookieButton').css('display', 'none');\n\n // Set route to home page if current page is NOT whitelisted\n if (!whitelisted) { j1.goHome(); }\n }\n\n // remainCookiesButton\n // -------------------------------------------------------------------\n if (this.id === 'remainCookies') {\n logger.debug('user clicked remainCookiesButton');\n return false;\n }\n });\n });\n\n // Register pre/post events for modal cookieRevokeCentralDanger\n // -----------------------------------------------------------------------\n $(document).on('shown.bs.modal','#cookieRevokeCentralDanger', function () {\n logger.debug('user opened modal: cookieRevokeCentralDanger');\n });\n\n $(document).on('hide.bs.modal','#cookieRevokeCentralDanger', function () {\n logger.debug('user closed cookieRevokeCentralDanger');\n });\n\n // Register pre/post events for modal topFullCookieConsent\n // -----------------------------------------------------------------------\n $(document).on('shown.bs.modal','#topFullCookieConsent', function () {\n if ( stopScrolling ) { $('body').addClass('stop-scrolling'); }\n //\n // place action here\n //\n });\n\n $(document).on('hide.bs.modal','#topFullCookieConsent', function () {\n logger.debug('user closed modal: topFullCookieConsent');\n $('body').removeClass('stop-scrolling');\n });\n\n logText = 'events registered';\n logger.debug(logText);\n\n return true;\n } // END eventHandler\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~200_template_js/js/asciidoctor/asciidoctor.js\n # Provides JS functions to (dynamically) modify Asciidoctor HTML elements\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// J1 Asciidoctor registered as \"asciidoctor\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Asciidoctor\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function asciidoctor (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.asciidoctor');\n\n var moduleDefaults = {\n dummyOption: false, // placeholder\n };\n var options = $.extend(moduleDefaults,moduleOptions);\n\n logText = 'J1 Asciidoctor is being initialized';\n logger.info(logText);\n\n this.callouts();\n\n }, // end initializer\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n // see: https://stackoverflow.com/questions/19393493/add-colgroup-for-each-table-column\n callouts: function( options ) {\n var colgroupList = '';\n\n // If the colist does not have a structure\n //\n \tif($('.colist > table > colgroup').length == 0) {\n colgroupList += '' + '\\n';\n colgroupList += ' ';\n \t\t$(\".colist > table\").prepend(colgroupList);\n }\n\n }, // end callouts\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n conums: function( options ) {\n var dependencies_met_page_finished = setInterval(function() {\n if (j1.getState() == 'finished') {\n // If the colist does not have a structure\n \tif($('.colist > table > colgroup').length == 0) {\n\n \t\tvar colgroupList = '';\n colgroupList += ' ';\n\n \t\t$(\".colist > table\").prepend(colgroupList);\n clearInterval(dependencies_met_page_finished);\n \t}\n }\n });\n }, // end conums\n\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/scroll-smooth/scroll-smooth.js\n # Provides Javascript functions for smooth scrolling\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2020 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint indent: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// scrollSmooth core registered as \"scrollSmooth\"\n// -----------------------------------------------------------------------------\nmodule.exports = function scrollSmooth ( options ) {\n\n // Default settings\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n // -----------------------------------------------------------------------\n // Helper functions\n // -----------------------------------------------------------------------\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothScrollSupported () {\n return 'scrollBehavior' in document.documentElement.style;\n }\n\n return {\n // -------------------------------------------------------------------------\n // Initialize scrollSmooth\n // -------------------------------------------------------------------------\n scroll: function ( target, options ) {\n\n var logger;\n var logText;\n\n logger = log4javascript.getLogger('j1.core.scrollSmooth');\n\n // indicator|check currently NOT used\n // if (isCssSmoothScrollSupported()) { }\n\n logText = 'run module scrollSmooth';\n logger.info(logText);\n\n var duration = options.duration;\n var offset = options.offset;\n\n // var pageUrl = options.location.hash\n // ? stripHash(options.location.href)\n // : options.location.href;\n\n this.scrollTo(target, {\n duration: duration,\n offset: offset,\n callback: null\n });\n\n logText = 'scrollSmooth finished';\n logger.info(logText);\n },\n\n // -------------------------------------------------------------------------\n // scrollTo\n // -------------------------------------------------------------------------\n scrollTo: function ( target, options ) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n };\n\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target;\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration;\n var timeStart;\n var timeElapsed;\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time); });\n function loop (time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) { requestAnimationFrame(loop); } else { end(); }\n }\n\n function end () {\n window.scrollTo(0, start + distance);\n\n // jadams, 2020-07-04: on (some?) mobile devices, the navbar\n // background is NOT switched (always?) correctly on a\n // page RELOAD.\n //\n // Solution: scroll the page one pixel back and forth (trigger)\n // to get the right position for the Toccer and adjust the\n // Navigator to display the (tranparent) navbar correctly based\n // on their onscroll events registered.\n //\n $(window).scrollTop($(window).scrollTop()+1);\n $(window).scrollTop($(window).scrollTop()-1);\n\n if (typeof opt.callback === 'function') { opt.callback(); }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n } // END scrollTo\n\n }; // END return\n}( jQuery );\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n'use strict';\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nmodule.exports = anime;\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/tocbot.js\n # Tocbot v4.12.0 implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # rules:\n # \"eslint:tocbot\": \"eslint --ignore-path .eslintignore src/tocbot/js\"\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\n/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root))\n } else if (typeof exports === 'object') {\n module.exports = factory(root)\n } else {\n root.tocbot = factory(root)\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'\n\n // Default options.\n var defaultOptions = require('./default-options.js')\n // Object to store current options.\n var options = {}\n // Object for public APIs.\n var tocbot = {}\n\n var BuildHtml = require('./build-html.js')\n var ParseContent = require('./parse-content.js')\n var updateTocScroll = require('./update-toc-scroll.js')\n // Keep these variables at top scope once options are passed in.\n var buildHtml\n var parseContent\n\n // Just return if its not a browser.\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n if (typeof window === 'undefined' && !supports) {\n return\n }\n var headingsArray\n\n // From: https://github.com/Raynos/xtend\n var hasOwnProperty = Object.prototype.hasOwnProperty\n function extend () {\n var target = {}\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n }\n\n // From: https://remysharp.com/2010/07/21/throttling-function-calls\n function throttle (fn, threshold, scope) {\n threshold || (threshold = 250)\n var last\n var deferTimer\n return function () {\n var context = scope || this\n var now = +new Date()\n var args = arguments\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer)\n deferTimer = setTimeout(function () {\n last = now\n fn.apply(context, args)\n }, threshold)\n } else {\n last = now\n fn.apply(context, args)\n }\n }\n }\n\n /**\n * Destroy tocbot.\n */\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = ''\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n }\n\n // Remove event listeners.\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false)\n document.removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false)\n }\n }\n }\n\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return\n }\n\n // Merge defaults with user options.\n // Set to options variable at the top.\n options = extend(defaultOptions, customOptions || {})\n this.options = options\n this.state = {}\n\n // Init smooth scroll if enabled (default).\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration\n options.offset = options.scrollSmoothOffset\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options)\n }\n\n // Pass options to these modules.\n buildHtml = BuildHtml(options)\n parseContent = ParseContent(options)\n\n // For testing purposes.\n this._buildHtml = buildHtml\n this._parseContent = parseContent\n\n // Destroy it if it exists first.\n tocbot.destroy()\n\n // Get headings array.\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n // Return if no headings are found.\n if (headingsArray === null) {\n return\n }\n\n // Build nested headings array.\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n var nestedHeadings = nestedHeadingsObj.nest\n\n // Render.\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings)\n }\n\n // Update Sidebar and bind listeners.\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray)\n !options.disableTocScrollSync && updateTocScroll(options)\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n buildHtml.updateToc(headingsArray)\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e)\n }\n }\n }, options.throttleTimeout)\n this._scrollListener()\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n } else {\n document.addEventListener('scroll', this._scrollListener, false)\n document.addEventListener('resize', this._scrollListener, false)\n }\n\n // Bind click listeners to disable animation.\n var timeout = null\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event)\n }\n buildHtml.updateToc(headingsArray)\n // Timeout to re-enable the animation.\n timeout && clearTimeout(timeout)\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation()\n }, options.scrollSmoothDuration)\n }, options.throttleTimeout)\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n } else {\n document.addEventListener('click', this._clickListener, false)\n }\n\n return this\n }\n\n /**\n * Refresh tocbot.\n */\n tocbot.refresh = function (customOptions) {\n tocbot.destroy()\n tocbot.init(customOptions || this.options)\n }\n\n // Make tocbot available globally.\n root.tocbot = tocbot\n\n return tocbot\n})\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function (e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: function (e) {},\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null,\n // Set the base path, useful if you use a `base` tag in `head`.\n basePath: '',\n // Only takes affect when `tocSelector` is scrolling,\n // keep the toc scroll position in sync with the content.\n disableTocScrollSync: false,\n};\n","/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function (options) {\n var forEach = [].forEach\n var some = [].some\n var body = document.body\n var currentlyHighlighting = true\n var SPACE_CHAR = ' '\n\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n function createEl (d, container) {\n var link = container.appendChild(createLink(d))\n if (d.children.length) {\n var list = createList(d.isCollapsed)\n d.children.forEach(function (child) {\n createEl(child, list)\n })\n link.appendChild(list)\n }\n }\n\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n function render (selector, data) {\n var collapsed = false\n var container = createList(collapsed)\n\n data.forEach(function (d) {\n createEl(d, container)\n })\n\n var parent = document.querySelector(selector)\n\n // Return if no parent is found.\n if (parent === null) {\n return\n }\n\n // Remove existing child if it exists.\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n\n // Just return the parent and don't append the list if no links are found.\n if (data.length === 0) {\n return parent\n }\n\n // Append the Elements that have been created\n return parent.appendChild(container)\n }\n\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n function createLink (data) {\n var item = document.createElement('li')\n var a = document.createElement('a')\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass)\n }\n\n if (options.onClick) {\n a.onclick = options.onClick\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true))\n })\n } else {\n // Default behavior.\n a.textContent = data.textContent\n }\n a.setAttribute('href', options.basePath + '#' + data.id)\n a.setAttribute('class', options.linkClass +\n SPACE_CHAR + 'node-name--' + data.nodeName +\n SPACE_CHAR + options.extraLinkClasses)\n item.appendChild(a)\n return item\n }\n\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n function createList (isCollapsed) {\n var listElement = (options.orderedList) ? 'ol' : 'ul'\n var list = document.createElement(listElement)\n var classes = options.listClass +\n SPACE_CHAR + options.extraListClasses\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass\n classes += SPACE_CHAR + options.isCollapsedClass\n }\n list.setAttribute('class', classes)\n return list\n }\n\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n function updateFixedSidebarClass () {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n }\n }\n\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n function getHeadingTopPos (obj) {\n var position = 0\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop\n if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n }\n return position\n }\n\n /**\n * Update TOC highlighting and collapsed groups\n */\n function updateToc (headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n\n // Add fixed class at offset\n if (options.positionFixedSelector) {\n updateFixedSidebarClass()\n }\n\n // Get the most TOP heading currently visible on the page to\n // identify what element to be highlighted\n var headings = headingsArray;\n var topHeader;\n var headingTopPos;\n\n // Using some instead of each so that we can escape early\n if (currentlyHighlighting &&\n document.querySelector(options.tocSelector) !== null &&\n headings.length > 0) {\n some.call(headings, function (heading, i) {\n headingTopPos = getHeadingTopPos(heading)\n if (headingTopPos > top + options.headingsOffset + 10) {\n // Don't allow negative index value\n // var index = (i === 0) ? i : i - 1;\n // topHeader = headings[index];\n // jadams, index correction seems NOT needed\n topHeader = headings[i];\n return true\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page\n topHeader = headings[headings.length - 1]\n return true\n }\n })\n\n // Remove the active class from the other tocLinks.\n var tocLinks = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.linkClass)\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n })\n var tocLis = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listItemClass)\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n })\n\n // Add the active class to the active tocLink.\n var activeTocLink = document.querySelector(options.tocSelector)\n .querySelector('.' + options.linkClass +\n '.node-name--' + topHeader.nodeName +\n '[href=\"' + options.basePath + '#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]')\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n }\n var li = activeTocLink.parentNode\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass\n }\n\n var tocLists = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n // Collapse the other collapsible lists.\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass\n }\n })\n\n // Expand the active link's collapsible list and its sibling if applicable.\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n }\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n }\n }\n\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n function removeCollapsedFromParents (element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n return removeCollapsedFromParents(element.parentNode.parentNode)\n }\n return element\n }\n\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n function disableTocAnimation (event) {\n var target = event.target || event.srcElement\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return\n }\n // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n currentlyHighlighting = false\n }\n\n /**\n * Enable TOC Animation.\n */\n function enableTocAnimation () {\n currentlyHighlighting = true\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n }\n}\n","/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function parseContent (options) {\n var reduce = [].reduce\n\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n function getLastItem (array) {\n return array[array.length - 1]\n }\n\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n function getHeadingLevel (heading) {\n return +heading.nodeName.split('H').join('')\n }\n\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n function getHeadingObject (heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n }\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading)\n }\n\n return obj\n }\n\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n function addNode (node, nest) {\n var obj = getHeadingObject(node)\n var level = obj.headingLevel\n var array = nest\n var lastItem = getLastItem(array)\n var lastItemLevel = lastItem\n ? lastItem.headingLevel\n : 0\n var counter = level - lastItemLevel\n\n while (counter > 0) {\n lastItem = getLastItem(array)\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children\n }\n counter--\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true\n }\n\n array.push(obj)\n return array\n }\n\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n function selectHeadings (contentSelector, headingSelector) {\n var selectors = headingSelector\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',')\n .map(function mapSelectors (selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')'\n })\n }\n try {\n return document.querySelector(contentSelector)\n .querySelectorAll(selectors)\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n return null\n }\n }\n\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n function nestHeadingsArray (headingsArray) {\n return reduce.call(headingsArray, function reducer (prev, curr) {\n var currentHeading = getHeadingObject(curr)\n if (currentHeading) {\n addNode(currentHeading, prev.nest)\n }\n return prev\n }, {\n nest: []\n })\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n }\n}\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function updateTocScroll(options) {\n var toc = document.querySelector(options.tocSelector);\n if (toc && toc.scrollHeight > toc.clientHeight) {\n var activeItem = toc.querySelector('.' + options.activeListItemClass);\n if (activeItem) {\n toc.scrollTop = activeItem.offsetTop;\n }\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/scroll-smooth/index.js\n # Scroll-Smooth (Tocbot v4.12.0) implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-redeclare: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n if (isCssSmoothSCrollSupported()) { }\n\n var duration = options.duration\n var offset = options.offset\n\n var pageUrl = location.hash\n ? stripHash(location.href)\n : location.href\n\n delegatedLinkHijacking()\n\n function delegatedLinkHijacking () {\n document.body.addEventListener('click', onClick, false)\n\n function onClick (e) {\n if (\n !isInPageLink(e.target) ||\n e.target.className.indexOf('no-smooth-scroll') > -1 ||\n (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n e.target.href.charAt(e.target.href.length - 1) === '!') ||\n e.target.className.indexOf(options.linkClass) === -1) {\n return\n }\n\n // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function () {\n setFocus(e.target.hash)\n }\n })\n }\n }\n\n function isInPageLink (n) {\n return n.tagName.toLowerCase() === 'a' &&\n (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n }\n\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'))\n }\n\n function isCssSmoothSCrollSupported () {\n return 'scrollBehavior' in document.documentElement.style\n }\n\n // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n function setFocus (hash) {\n var element = document.getElementById(hash.substring(1))\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1\n }\n\n element.focus()\n }\n }\n}\n\nfunction jump (target, options) {\n var start = window.pageYOffset\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration\n var timeStart\n var timeElapsed\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n function loop (time) {\n timeElapsed = time - timeStart\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n }\n\n function end () {\n window.scrollTo(0, start + distance)\n\n if (typeof opt.callback === 'function') { opt.callback() }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adoc_result_viewer/view_results.js\n # Provides JavaScript functions displaying results for Asciidoctor\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* global $ */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 ADoc ResultViewer\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\n\nvar timeoutHandle;\n\nfunction toggle_result_block(result_block) {\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n result_block.prev().toggleClass('stacked');\n result_block.toggle();\n // timeoutHandle = window.setTimeout(function () {\n // result_block.hide();\n // }, 5000);\n}\n\nfunction insert_result_links() {\n $('.result').each(function(idx, node) {\n var result_block = $(node);\n var title_div = result_block.prev().find('.title');\n var view_result_link = $('
    View
    ');\n title_div.append(view_result_link);\n view_result_link.on('click', function(event) {\n event.preventDefault();\n toggle_result_block(result_block);\n });\n });\n}\n\n$(insert_result_links);\n"],"sourceRoot":""}