From fc7fb28edb7e28731d6bf6f03aeeebffb20e702f Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sat, 24 Sep 2016 18:52:37 +0200 Subject: [PATCH] Prototyped animation for navigation on desktop --- ...aa33c61a6.js => application-db87fe00d3.js} | 4 +- ...b43b137.css => application-d7ccfc4ec2.css} | 2 +- material/base.html | 2 +- material/partials/nav-item.html | 56 ++++++----- src/assets/javascripts/application.js | 73 ++++++++++++++- src/assets/javascripts/components/expander.js | 93 +++++++++++++++++++ .../javascripts/components/scrollspy.js | 10 +- src/assets/javascripts/components/sidebar.js | 6 +- src/assets/stylesheets/layout/_nav.scss | 16 +++- src/partials/nav-item.html | 69 +++++++------- 10 files changed, 248 insertions(+), 83 deletions(-) rename material/assets/javascripts/{application-caa33c61a6.js => application-db87fe00d3.js} (75%) rename material/assets/stylesheets/{application-db0b43b137.css => application-d7ccfc4ec2.css} (89%) create mode 100644 src/assets/javascripts/components/expander.js diff --git a/material/assets/javascripts/application-caa33c61a6.js b/material/assets/javascripts/application-db87fe00d3.js similarity index 75% rename from material/assets/javascripts/application-caa33c61a6.js rename to material/assets/javascripts/application-db87fe00d3.js index 59781726e..5178ad9f2 100644 --- a/material/assets/javascripts/application-caa33c61a6.js +++ b/material/assets/javascripts/application-db87fe00d3.js @@ -1,8 +1,8 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var o=n(1),r=i(o),a=n(2),s=i(a),c=n(3),l=i(c);document.addEventListener("DOMContentLoaded",function(){Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)}),Modernizr.addTest("standalone",function(){return!!navigator.standalone}),r["default"].attach(document.body);var e=window.matchMedia("(min-width: 1200px)"),t=function(){e.matches?n.listen():n.unlisten()},n=new s["default"](".md-sidebar--primary");t();var i=new s["default"](".md-sidebar--secondary");i.listen();var o=new l["default"](".md-sidebar--secondary .md-nav--secondary .md-nav__link");o.listen(),window.addEventListener("resize",t);var a=0,c=document.getElementById("search");c.addEventListener("click",function(e){var t=document.body.classList,n=!matchMedia("only screen and (min-width: 960px)").matches;t.contains("md-js__body--locked")?(t.remove("md-js__body--locked"),n&&setTimeout(function(){window.scrollTo(0,a)},100)):(a=window.scrollY,n&&setTimeout(function(){window.scrollTo(0,0)},400),setTimeout(function(){this.checked&&(n&&t.add("md-js__body--locked"),setTimeout(function(){document.getElementById("md-search").focus()},200))}.bind(this),450))}),fetch("https://api.github.com/repos/squidfunk/mkdocs-material").then(function(e){return e.json()}).then(function(e){var t=e.stargazers_count,n=e.forks_count,i=document.querySelectorAll(".md-source__facts");[].forEach.call(i,function(e){var i=document.createElement("li");i.className="md-source__fact md-source__fact--hidden",i.innerText=t+" Stars",e.appendChild(i),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},100,i),i=document.createElement("li"),i.className="md-source__fact md-source__fact--hidden",i.innerText=n+" Forks",e.appendChild(i),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},500,i)})})["catch"](function(e){console.log("parsing failed",e)})})},function(e,t,n){var i;!function(){"use strict";/** +!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var o=n(1),r=i(o),a=n(2),s=i(a),c=n(3),l=i(c),u=n(4);i(u);document.addEventListener("DOMContentLoaded",function(){Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)}),Modernizr.addTest("standalone",function(){return!!navigator.standalone}),r["default"].attach(document.body);var e=window.matchMedia("(min-width: 1200px)"),t=function(){e.matches?n.listen():n.unlisten()},n=new s["default"](".md-sidebar--primary");t();var i=new s["default"](".md-sidebar--secondary");i.listen();var o=new l["default"](".md-sidebar--secondary .md-nav--secondary .md-nav__link");o.listen(),window.addEventListener("resize",t);var a=0,c=document.getElementById("search");c.addEventListener("click",function(e){var t=document.body.classList,n=!matchMedia("only screen and (min-width: 960px)").matches;t.contains("md-js__body--locked")?(t.remove("md-js__body--locked"),n&&setTimeout(function(){window.scrollTo(0,a)},100)):(a=window.scrollY,n&&setTimeout(function(){window.scrollTo(0,0)},400),setTimeout(function(){this.checked&&(n&&t.add("md-js__body--locked"),setTimeout(function(){document.getElementById("md-search").focus()},200))}.bind(this),450))});var u=document.querySelectorAll(".md-nav__item--nested > .md-nav__link");[].forEach.call(u,function(e){var t=e.nextElementSibling;t.style.maxHeight=t.getBoundingClientRect().height+"px",e.addEventListener("click",function(){var e=t.getBoundingClientRect().height;e?(console.log("closing"),t.style.maxHeight=e+"px",requestAnimationFrame(function(){t.classList.add("md-nav--transitioning"),t.style.maxHeight="0px"})):!function(){console.log("opening"),t.style.maxHeight="",t.classList.add("md-nav--toggled");var e=t.getBoundingClientRect().height;t.classList.remove("md-nav--toggled"),t.style.maxHeight="0px",requestAnimationFrame(function(){t.classList.add("md-nav--transitioning"),t.style.maxHeight=e+"px"})}()}),t.addEventListener("transitionend",function(){this.classList.remove("md-nav--transitioning"),this.getBoundingClientRect().height>0&&(this.style.maxHeight="100%")})}),fetch("https://api.github.com/repos/squidfunk/mkdocs-material").then(function(e){return e.json()}).then(function(e){var t=e.stargazers_count,n=e.forks_count,i=document.querySelectorAll(".md-source__facts");[].forEach.call(i,function(e){var i=document.createElement("li");i.className="md-source__fact md-source__fact--hidden",i.innerText=t+" Stars",e.appendChild(i),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},100,i),i=document.createElement("li"),i.className="md-source__fact md-source__fact--hidden",i.innerText=n+" Forks",e.appendChild(i),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},500,i)})})["catch"](function(e){console.log("parsing failed",e)})})},function(e,t,n){var i;!function(){"use strict";/** * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. * * @codingstandard ftlabs-jsv2 * @copyright The Financial Times Limited [All Rights Reserved] * @license MIT License (see LICENSE.txt) */ -function o(e,t){function n(e,t){return function(){return e.apply(t,arguments)}}var i;if(t=t||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=t.touchBoundary||10,this.layer=e,this.tapDelay=t.tapDelay||200,this.tapTimeout=t.tapTimeout||700,!o.notNeeded(e)){for(var r=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],s=this,c=0,l=r.length;c=0,a=navigator.userAgent.indexOf("Android")>0&&!r,s=/iP(ad|hone|od)/.test(navigator.userAgent)&&!r,c=s&&/OS 4_\d(_\d)?/.test(navigator.userAgent),l=s&&/OS [6-7]_\d/.test(navigator.userAgent),u=navigator.userAgent.indexOf("BB10")>0;o.prototype.needsClick=function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(s&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(e.className)},o.prototype.needsFocus=function(e){switch(e.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!a;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return/\bneedsfocus\b/.test(e.className)}},o.prototype.sendClick=function(e,t){var n,i;document.activeElement&&document.activeElement!==e&&document.activeElement.blur(),i=t.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(e),!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,e.dispatchEvent(n)},o.prototype.determineEventType=function(e){return a&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},o.prototype.focus=function(e){var t;s&&e.setSelectionRange&&0!==e.type.indexOf("date")&&"time"!==e.type&&"month"!==e.type?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},o.prototype.updateScrollParent=function(e){var t,n;if(t=e.fastClickScrollParent,!t||!t.contains(e)){n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.fastClickScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.fastClickLastScrollTop=t.scrollTop)},o.prototype.getTargetElementFromEventTarget=function(e){return e.nodeType===Node.TEXT_NODE?e.parentNode:e},o.prototype.onTouchStart=function(e){var t,n,i;if(e.targetTouches.length>1)return!0;if(t=this.getTargetElementFromEventTarget(e.target),n=e.targetTouches[0],s){if(i=window.getSelection(),i.rangeCount&&!i.isCollapsed)return!0;if(!c){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return e.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(t)}}return this.trackingClick=!0,this.trackingClickStart=e.timeStamp,this.targetElement=t,this.touchStartX=n.pageX,this.touchStartY=n.pageY,e.timeStamp-this.lastClickTimen||Math.abs(t.pageY-this.touchStartY)>n},o.prototype.onTouchMove=function(e){return!this.trackingClick||((this.targetElement!==this.getTargetElementFromEventTarget(e.target)||this.touchHasMoved(e))&&(this.trackingClick=!1,this.targetElement=null),!0)},o.prototype.findControl=function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},o.prototype.onTouchEnd=function(e){var t,n,i,o,r,u=this.targetElement;if(!this.trackingClick)return!0;if(e.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=e.timeStamp,n=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,l&&(r=e.changedTouches[0],u=document.elementFromPoint(r.pageX-window.pageXOffset,r.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),i=u.tagName.toLowerCase(),"label"===i){if(t=this.findControl(u)){if(this.focus(u),a)return!1;u=t}}else if(this.needsFocus(u))return e.timeStamp-n>100||s&&window.top!==window&&"input"===i?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,e),s&&"select"===i||(this.targetElement=null,e.preventDefault()),!1);return!(!s||c||(o=u.fastClickScrollParent,!o||o.fastClickLastScrollTop===o.scrollTop))||(this.needsClick(u)||(e.preventDefault(),this.sendClick(u,e)),!1)},o.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},o.prototype.onMouse=function(e){return!this.targetElement||(!!e.forwardedTouchEvent||(!e.cancelable||(!(!this.needsClick(this.targetElement)||this.cancelNextClick)||(e.stopImmediatePropagation?e.stopImmediatePropagation():e.propagationStopped=!0,e.stopPropagation(),e.preventDefault(),!1))))},o.prototype.onClick=function(e){var t;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===e.target.type&&0===e.detail||(t=this.onMouse(e),t||(this.targetElement=null),t)},o.prototype.destroy=function(){var e=this.layer;a&&(e.removeEventListener("mouseover",this.onMouse,!0),e.removeEventListener("mousedown",this.onMouse,!0),e.removeEventListener("mouseup",this.onMouse,!0)),e.removeEventListener("click",this.onClick,!0),e.removeEventListener("touchstart",this.onTouchStart,!1),e.removeEventListener("touchmove",this.onTouchMove,!1),e.removeEventListener("touchend",this.onTouchEnd,!1),e.removeEventListener("touchcancel",this.onTouchCancel,!1)},o.notNeeded=function(e){var t,n,i,o;if("undefined"==typeof window.ontouchstart)return!0;if(n=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!a)return!0;if(t=document.querySelector("meta[name=viewport]")){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(n>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(u&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(t=document.querySelector("meta[name=viewport]")))){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===e.style.msTouchAction||"manipulation"===e.style.touchAction||(o=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],!!(o>=27&&(t=document.querySelector("meta[name=viewport]"),t&&(t.content.indexOf("user-scalable=no")!==-1||document.documentElement.scrollWidth<=window.outerWidth)))||("none"===e.style.touchAction||"manipulation"===e.style.touchAction))},o.attach=function(e,t){return new o(e,t)},i=function(){return o}.call(t,n,t,e),!(void 0!==i&&(e.exports=i))}()},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n0&&this.el_[t-1].classList.add("md-nav__link--marked"),this.index_=t}else for(var i=this.index_;i>=0;i--){var o=document.querySelector(this.el_[i].hash);if(!(o.offsetTop>window.pageYOffset)){this.index_=i;break}i>0&&this.el_[i-1].classList.remove("md-nav__link--marked")}this.offset_=window.pageYOffset}},{key:"reset",value:function(){[].forEach.call(this.el_,function(e){e.classList.remove("md-nav__link--marked")})}},{key:"listen",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.addEventListener(t,e.handler_,!1)}),this.update()}},{key:"unlisten",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.removeEventListener(t,e.handler_,!1)}),this.reset()}}]),e}();t["default"]=o}]); \ No newline at end of file +function o(e,t){function n(e,t){return function(){return e.apply(t,arguments)}}var i;if(t=t||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=t.touchBoundary||10,this.layer=e,this.tapDelay=t.tapDelay||200,this.tapTimeout=t.tapTimeout||700,!o.notNeeded(e)){for(var r=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],s=this,c=0,l=r.length;c=0,a=navigator.userAgent.indexOf("Android")>0&&!r,s=/iP(ad|hone|od)/.test(navigator.userAgent)&&!r,c=s&&/OS 4_\d(_\d)?/.test(navigator.userAgent),l=s&&/OS [6-7]_\d/.test(navigator.userAgent),u=navigator.userAgent.indexOf("BB10")>0;o.prototype.needsClick=function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(s&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(e.className)},o.prototype.needsFocus=function(e){switch(e.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!a;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return/\bneedsfocus\b/.test(e.className)}},o.prototype.sendClick=function(e,t){var n,i;document.activeElement&&document.activeElement!==e&&document.activeElement.blur(),i=t.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(e),!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,e.dispatchEvent(n)},o.prototype.determineEventType=function(e){return a&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},o.prototype.focus=function(e){var t;s&&e.setSelectionRange&&0!==e.type.indexOf("date")&&"time"!==e.type&&"month"!==e.type?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},o.prototype.updateScrollParent=function(e){var t,n;if(t=e.fastClickScrollParent,!t||!t.contains(e)){n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.fastClickScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.fastClickLastScrollTop=t.scrollTop)},o.prototype.getTargetElementFromEventTarget=function(e){return e.nodeType===Node.TEXT_NODE?e.parentNode:e},o.prototype.onTouchStart=function(e){var t,n,i;if(e.targetTouches.length>1)return!0;if(t=this.getTargetElementFromEventTarget(e.target),n=e.targetTouches[0],s){if(i=window.getSelection(),i.rangeCount&&!i.isCollapsed)return!0;if(!c){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return e.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(t)}}return this.trackingClick=!0,this.trackingClickStart=e.timeStamp,this.targetElement=t,this.touchStartX=n.pageX,this.touchStartY=n.pageY,e.timeStamp-this.lastClickTimen||Math.abs(t.pageY-this.touchStartY)>n},o.prototype.onTouchMove=function(e){return!this.trackingClick||((this.targetElement!==this.getTargetElementFromEventTarget(e.target)||this.touchHasMoved(e))&&(this.trackingClick=!1,this.targetElement=null),!0)},o.prototype.findControl=function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},o.prototype.onTouchEnd=function(e){var t,n,i,o,r,u=this.targetElement;if(!this.trackingClick)return!0;if(e.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=e.timeStamp,n=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,l&&(r=e.changedTouches[0],u=document.elementFromPoint(r.pageX-window.pageXOffset,r.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),i=u.tagName.toLowerCase(),"label"===i){if(t=this.findControl(u)){if(this.focus(u),a)return!1;u=t}}else if(this.needsFocus(u))return e.timeStamp-n>100||s&&window.top!==window&&"input"===i?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,e),s&&"select"===i||(this.targetElement=null,e.preventDefault()),!1);return!(!s||c||(o=u.fastClickScrollParent,!o||o.fastClickLastScrollTop===o.scrollTop))||(this.needsClick(u)||(e.preventDefault(),this.sendClick(u,e)),!1)},o.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},o.prototype.onMouse=function(e){return!this.targetElement||(!!e.forwardedTouchEvent||(!e.cancelable||(!(!this.needsClick(this.targetElement)||this.cancelNextClick)||(e.stopImmediatePropagation?e.stopImmediatePropagation():e.propagationStopped=!0,e.stopPropagation(),e.preventDefault(),!1))))},o.prototype.onClick=function(e){var t;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===e.target.type&&0===e.detail||(t=this.onMouse(e),t||(this.targetElement=null),t)},o.prototype.destroy=function(){var e=this.layer;a&&(e.removeEventListener("mouseover",this.onMouse,!0),e.removeEventListener("mousedown",this.onMouse,!0),e.removeEventListener("mouseup",this.onMouse,!0)),e.removeEventListener("click",this.onClick,!0),e.removeEventListener("touchstart",this.onTouchStart,!1),e.removeEventListener("touchmove",this.onTouchMove,!1),e.removeEventListener("touchend",this.onTouchEnd,!1),e.removeEventListener("touchcancel",this.onTouchCancel,!1)},o.notNeeded=function(e){var t,n,i,o;if("undefined"==typeof window.ontouchstart)return!0;if(n=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!a)return!0;if(t=document.querySelector("meta[name=viewport]")){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(n>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(u&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(t=document.querySelector("meta[name=viewport]")))){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===e.style.msTouchAction||"manipulation"===e.style.touchAction||(o=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],!!(o>=27&&(t=document.querySelector("meta[name=viewport]"),t&&(t.content.indexOf("user-scalable=no")!==-1||document.documentElement.scrollWidth<=window.outerWidth)))||("none"===e.style.touchAction||"manipulation"===e.style.touchAction))},o.attach=function(e,t){return new o(e,t)},i=function(){return o}.call(t,n,t,e),!(void 0!==i&&(e.exports=i))}()},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n0&&this.el_[t-1].classList.add("md-nav__link--marked"),this.index_=t}else for(var i=this.index_;i>=0;i--){var o=document.querySelector(this.el_[i].hash);if(!(o.offsetTop>window.pageYOffset)){this.index_=i;break}i>0&&this.el_[i-1].classList.remove("md-nav__link--marked")}this.offset_=window.pageYOffset}},{key:"reset",value:function(){[].forEach.call(this.el_,function(e){e.classList.remove("md-nav__link--marked")})}},{key:"listen",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.addEventListener(t,e.handler_,!1)}),this.update()}},{key:"unlisten",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.removeEventListener(t,e.handler_,!1)}),this.reset()}}]),e}();t["default"]=o},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;ncode{font-size:inherit}.md-typeset>div>pre::-webkit-scrollbar,.md-typeset>pre>code::-webkit-scrollbar{width:.4rem;height:.4rem}.md-typeset>div>pre::-webkit-scrollbar-thumb,.md-typeset>pre>code::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-typeset kbd{display:inline-block;padding:.4rem .5rem .5rem;border:.1rem solid #c9c9c9;border-radius:.3rem;border-bottom-color:#bcbcbc;background-color:#fcfcfc;color:#555;font-size:85%;line-height:1rem;box-shadow:inset 0 -.1rem 0 #b0b0b0;vertical-align:.1rem;word-break:break-word}.md-typeset small{opacity:.75}.md-typeset sub,.md-typeset sup{margin-left:.1rem}.md-typeset blockquote{padding-left:1.2rem;border-left:.4rem solid rgba(0,0,0,.26);color:rgba(0,0,0,.54)}.md-typeset ul{list-style-type:disc}.md-typeset ol ol{list-style-type:lower-alpha}.md-typeset ol ol ol{list-style-type:lower-roman}.md-typeset ol,.md-typeset ul{margin-left:1rem;padding:0}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em;margin-left:2rem}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:1rem;margin-left:1rem;padding-top:1rem}html{height:100%;font-size:62.5%}body{position:relative;min-height:100%}body.md-js__body--locked{height:100%;overflow:hidden}hr{display:block;height:.1rem;padding:0;border:0}.md-grid{max-width:120rem;margin-right:auto;margin-left:auto}.md-container,.md-main{overflow:auto}.md-main{margin-top:5.6rem}.md-main__inner{margin-top:3rem;margin-bottom:9.2rem;overflow:auto}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;-webkit-transition:width 0s .25s,height 0s .25s,opacity .25s;transition:width 0s .25s,height 0s .25s,opacity .25s;background:rgba(0,0,0,.54);opacity:0;z-index:2}.md-flex{display:table}.md-flex__cell{display:table-cell;position:relative;vertical-align:top}.md-flex__cell--shrink{width:0}.md-flex__cell--stretch{display:table;width:100%;table-layout:fixed}.md-flex__ellipsis{display:table-cell;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-content__inner{margin:2.4rem 1.6rem}.md-content__copyright{display:block}.md-header{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:fixed;top:0;right:0;left:0;height:5.6rem;background:#3f51b5;color:#fff;z-index:1}.md-header-nav{padding:.4rem}.md-header-nav__icon{position:relative;-webkit-transition:opacity .25s;transition:opacity .25s;z-index:1}.md-header-nav__icon:hover{opacity:.7}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-header-nav__source{display:none}.md-footer{position:absolute;bottom:0;width:100%}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{padding:.4rem;overflow:auto}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem;-webkit-transition:opacity .25s;transition:opacity .25s}.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}.md-footer-nav__link--next{width:75%;float:right;text-align:right}.md-footer-nav__icon{-webkit-transition:background .25s;transition:background .25s}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-2rem;padding:0 .4rem;color:hsla(0,0%,100%,.7);font-size:1.5rem}.md-nav{font-size:1.28rem;line-height:1.3}.md-nav--secondary{border-left:.4rem solid #3f51b5}.md-nav__title{display:block;padding:1.2rem 1.2rem 0;font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-nav__title:before{display:none;content:"arrow_back"}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:.625em 1.2rem 0}.md-nav__item:last-child{padding-bottom:1.2rem}.md-nav__item .md-nav__item{padding-right:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__link{display:block;-webkit-transition:color .125s;transition:color .125s;text-overflow:ellipsis;cursor:pointer;overflow:hidden}.md-nav__item--nested>.md-nav__link:after{content:"expand_more"}html .md-nav__link[for=toc],html .md-nav__link[for=toc]+.md-nav__link:after,html .md-nav__link[for=toc]~.md-nav{display:none}.md-nav__link--marked{color:rgba(0,0,0,.54)}.md-nav__link--active,.md-nav__link:active,.md-nav__link:hover{color:#536dfe}.md-nav__source{display:none}.md-search{padding:.8rem .8rem 0}.md-search__overlay{display:none}.md-search__form{position:relative;border-radius:.2rem;text-align:right}.md-search__icon{position:absolute;top:.8rem;left:1.2rem;-webkit-transition:color .25s;transition:color .25s;font-size:2.4rem;cursor:pointer}.md-search__input{padding:0 1.6rem 0 6.4rem;border-radius:.2rem;text-overflow:ellipsis}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::placeholder{color:rgba(0,0,0,.54)}.md-sidebar{position:relative;width:24.2rem;float:left;overflow:visible}.md-sidebar.md-js__sidebar--locked{position:fixed;top:5.6rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{margin:2.4rem .4rem;overflow-y:scroll}.js .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-source{display:block;-webkit-transition:opacity .25s;transition:opacity .25s;font-size:1.3rem;line-height:1.2;white-space:nowrap}.md-source:hover{opacity:.7}.md-source--bitbucket:before,.md-source--github:before,.md-source--gitlab:before{display:inline-block;width:4.8rem;height:4.8rem;background-repeat:no-repeat;background-position:50%;background-size:2.4rem 2.4rem;content:"";vertical-align:middle}.md-source--bitbucket:before{background-image:url(../images/icons/bitbucket-white-42306ad0de.svg)}.md-source--github:before{background-image:url(../images/icons/github-white-1cfc8ff99e.svg)}.md-source--gitlab:before{background-image:url(../images/icons/gitlab-white-d65054b8fe.svg)}.md-source__repository{display:inline-block;max-width:100%;margin-left:-4.4rem;padding-left:4rem;font-weight:700;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.md-source__facts{margin:0;padding:0;font-size:1.1rem;font-weight:700;opacity:.75;list-style-type:none}.md-source__fact{float:left;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1),-webkit-transform .25s cubic-bezier(.1,.7,.1,1);opacity:1}.md-source__fact--hidden{-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}.md-source__fact:before{margin:0 .2rem;content:"\00B7"}.md-source__fact:first-child:before{display:none}.admonition{position:relative;margin:2rem 0;padding:.8rem 1.6rem;border-left:3.2rem solid #448aff;border-radius:.2rem;background:rgba(68,138,255,.05)}.admonition:before{display:block;position:absolute;top:.2rem;left:-2.6rem;float:left;color:#fff;font-family:Material Icons;font-size:2rem;font-weight:400;content:"edit";vertical-align:-.1em}.admonition-title{color:#2979ff;font-size:1.28rem;font-weight:700;line-height:2;text-transform:uppercase}html .admonition-title{margin-bottom:1.6rem}html .admonition-title+*{margin-top:1.6rem}.admonition :first-child{margin-top:0}.admonition :last-child{margin-bottom:0}.admonition.summary,.admonition.tldr{border-color:#00b0ff;background:rgba(0,176,255,.05)}.admonition.summary:before,.admonition.tldr:before{content:"subject"}.admonition.summary .admonition-title,.admonition.tldr .admonition-title{color:#00b0ff}.admonition.idea,.admonition.tip{border-color:#00bfa5;background:rgba(0,191,165,.05)}.admonition.idea:before,.admonition.tip:before{content:"whatshot"}.admonition.idea .admonition-title,.admonition.tip .admonition-title{color:#00bfa5}.admonition.check,.admonition.done,.admonition.success{border-color:#00e676;background:rgba(0,230,118,.05)}.admonition.check:before,.admonition.done:before,.admonition.success:before{content:"done"}.admonition.check .admonition-title,.admonition.done .admonition-title,.admonition.success .admonition-title{color:#00e676}.admonition.warn,.admonition.warning{border-color:#ff9100;background:rgba(255,145,0,.05)}.admonition.warn:before,.admonition.warning:before{content:"warning"}.admonition.warn .admonition-title,.admonition.warning .admonition-title{color:#ff9100}.admonition.fail,.admonition.failure,.admonition.missing{border-color:#ff5252;background:rgba(255,82,82,.05)}.admonition.fail:before,.admonition.failure:before,.admonition.missing:before{content:"clear"}.admonition.fail .admonition-title,.admonition.failure .admonition-title,.admonition.missing .admonition-title{color:#ff5252}.admonition.danger,.admonition.fatal{border-color:#ff1744;background:rgba(255,23,68,.05)}.admonition.danger:before,.admonition.fatal:before{content:"flash_on"}.admonition.danger .admonition-title,.admonition.fatal .admonition-title{color:#ff1744}.admonition.bug,.admonition.error{border-color:#f50057;background:rgba(245,0,87,.05)}.admonition.bug:before,.admonition.error:before{content:"bug_report"}.admonition.bug .admonition-title,.admonition.error .admonition-title{color:#f50057}.code .err,.codehilite .err{color:#a61717}.code .o,.codehilite .o{color:inherit}.code .ge,.codehilite .ge{color:#000}.code .gr,.codehilite .gr{color:#a00}.code .gh,.codehilite .gh{color:#999}.code .go,.codehilite .go{color:#888}.code .gp,.codehilite .gp{color:#555}.code .gs,.codehilite .gs{color:inherit}.code .gu,.codehilite .gu{color:#aaa}.code .gt,.codehilite .gt{color:#a00}.code .k,.code .kc,.code .kd,.code .kn,.code .kp,.codehilite .k,.codehilite .kc,.codehilite .kd,.codehilite .kn,.codehilite .kp{color:#a71d5d}.code .kr,.code .kt,.codehilite .kr,.codehilite .kt{color:#0086b3}.code .c,.code .cm,.codehilite .c,.codehilite .cm{color:#969896}.code .cp,.codehilite .cp{color:#666}.code .c1,.code .cs,.codehilite .c1,.codehilite .cs{color:#969896}.code .bp,.code .na,.code .nb,.code .nc,.code .nd,.code .ne,.code .nf,.code .ni,.code .nl,.code .nn,.code .no,.code .nt,.code .nv,.code .vc,.code .vg,.code .vi,.codehilite .bp,.codehilite .na,.codehilite .nb,.codehilite .nc,.codehilite .nd,.codehilite .ne,.codehilite .nf,.codehilite .ni,.codehilite .nl,.codehilite .nn,.codehilite .no,.codehilite .nt,.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi{color:#795da3}.code .ow,.codehilite .ow{color:inherit}.code .il,.code .m,.code .mf,.code .mh,.code .mi,.code .mo,.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#0086b3}.code .s,.code .s2,.code .sb,.code .sc,.code .sd,.code .se,.code .sh,.code .si,.code .sx,.codehilite .s,.codehilite .s2,.codehilite .sb,.codehilite .sc,.codehilite .sd,.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx{color:#183691}.code .sr,.codehilite .sr{color:#009926}.code .s1,.codehilite .s1{color:#d01040}.code .ss,.codehilite .ss{color:#990073}.code .gd,.codehilite .gd{background-color:#fdd}.code .gi,.codehilite .gi{background-color:#dfd}.code .w,.codehilite .w{color:transparent}.footnote{color:rgba(0,0,0,.54);font-size:80%}.footnote ol{margin-left:0}.footnote li:hover .footnote-backref,.footnote li:target .footnote-backref{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.footnote li:hover .footnote-backref:hover,.footnote li:target .footnote-backref{color:#536dfe}.footnote-ref:before{position:absolute;margin-top:-8rem;padding-top:8rem;content:"";pointer-events:none}.footnote-backref{position:absolute;-webkit-transform:translate3d(.5rem,0,0);transform:translate3d(.5rem,0,0);-webkit-transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s;color:rgba(0,0,0,.26);font-size:2rem;opacity:0;vertical-align:middle}.footnote-backref:first-letter{font-size:0}.footnote-backref:after{content:"keyboard_return"}.md-typeset .headerlink{display:inline-block;margin-left:1rem;-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s;color:rgba(0,0,0,.26);opacity:0}.md-typeset [id] .headerlink:focus,.md-typeset [id]:hover .headerlink,.md-typeset [id]:target .headerlink{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.md-typeset [id] .headerlink:focus,.md-typeset [id]:hover .headerlink:hover,.md-typeset [id]:target .headerlink{color:#536dfe}.md-typeset h1[id]:before{display:block;margin-top:-11rem;padding-top:11rem;content:""}.md-typeset h2[id]:before{display:block;margin-top:-8.2rem;padding-top:8.2rem;content:""}.md-typeset h3[id]:before{display:block;margin-top:-8.4rem;padding-top:8.4rem;content:""}.md-typeset h4[id]:before{display:block;margin-top:-8.6rem;padding-top:8.6rem;content:""}.md-typeset h5[id]:before,.md-typeset h6[id]:before{display:block;margin-top:-9rem;padding-top:9rem;content:""}.md-search__suggest{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);background:#fff;border-radius:0 0 .3rem .3rem;color:#000;text-align:left;border-top:.1rem solid rgba(0,0,0,.07);display:none;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.md-search__input:focus~.md-search__suggest{display:block;opacity:1}.md-search__input:focus{border-radius:.3rem .3rem 0 0}.md-search-term{position:relative;padding:0 .8rem 0 4.8rem;line-height:4rem;font-size:1.6rem;-webkit-transition:background .25s;transition:background .25s;cursor:pointer}.md-search-term:before{position:absolute;content:"access_time";font-size:2.4rem;line-height:4rem;left:1.2rem;color:rgba(0,0,0,.26)}.md-search-term:hover{background:#eceef8}.checklist li{position:relative;list-style-type:none}.checklist li:before{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:blue;content:"check_box";font-size:2.4rem}.checklist input[type=checkbox]:checked{width:20px}del.critic,ins.critic,mark{margin:0 .4rem;padding:.1rem 0;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.2rem}ins.critic{background:#dfd;box-shadow:.4rem 0 0 #dfd,-.4rem 0 0 #dfd;text-decoration:none}del.critic{background:#fdd;box-shadow:.4rem 0 0 #fdd,-.4rem 0 0 #fdd}mark{background:#ff0;box-shadow:.4rem 0 0 #ff0,-.4rem 0 0 #ff0;overflow:auto}.critic.comment{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f0f0f0;color:#37474f;box-shadow:.4rem 0 0 #f0f0f0,-.4rem 0 0 #f0f0f0;-webkit-box-decoration-break:clone;box-decoration-break:clone}.critic.comment:before{color:rgba(0,0,0,.26);content:"chat";font-size:1.6rem;padding-right:.2rem;vertical-align:-.2rem}.md-button{float:right;margin-top:9px;font-size:13px;padding-left:2.6rem;font-weight:700;text-transform:uppercase}.task-list-item{list-style-type:none}.task-list-item input{margin:0 4px .25em -20px;vertical-align:middle}.task-list-item{position:relative}.task-list-item input[type=checkbox]{opacity:0}.task-list-item input[type=checkbox]+label{display:block;position:absolute;top:50%;left:-24px;width:16px;margin-top:-8px;height:16px;border-radius:2px;background:#ccc}.task-list-item input[type=checkbox]:checked+label:before{display:block;margin-top:-4px;margin-left:2px;font-size:1.2em;line-height:1;border-radius:2px;content:"✔";color:#1ebb52}.codehilite .hll{background:#ff0;display:block;margin:0 -16px;padding:0 16px}@media only screen and (max-width:44.9375em){.md-typeset>div>pre,.md-typeset>pre>code{margin:1em -1.6rem;padding:1rem 1.6rem;border-radius:0}.md-search__overlay{display:block;position:absolute;top:.4rem;left:.4rem;width:4rem;height:4rem;-webkit-transform-origin:center;transform-origin:center;-webkit-transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:transform .3s .1s,opacity .2s .2s;transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s;border-radius:2rem;background:#eee;opacity:0;overflow:hidden;z-index:0}.md-toggle--search:checked~.md-header .md-search__overlay{-webkit-transform:scale(40);transform:scale(40);-webkit-transition:opacity .1s,-webkit-transform .4s;transition:opacity .1s,-webkit-transform .4s;transition:transform .4s,opacity .1s;transition:transform .4s,opacity .1s,-webkit-transform .4s;opacity:1;z-index:1}.md-search__form{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.md-search__icon{top:1.2rem}.md-search__icon:before{content:"arrow_back"}.md-search__input{width:100%;height:4.8rem;font-size:1.8rem}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:56px;opacity:0;z-index:2;-webkit-transform:translate3d(5%,0,0);transform:translate3d(5%,0,0);-webkit-transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s}.md-toggle--search:checked~.md-header .md-search__inner{-webkit-transform:translateZ(0);transform:translateZ(0);left:0;opacity:1}.md-search__suggest{position:relative;z-index:2}}@media only screen and (min-width:100em){html{font-size:68.75%}}@media only screen and (min-width:125em){html{font-size:75%}}@media only screen and (max-width:74.9375em){.md-toggle--drawer:checked~.md-overlay{width:100%;height:100%;-webkit-transition:width 0s,height 0s,opacity .25s;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-nav--primary,.md-nav--primary .md-nav{display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;top:0;right:0;left:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;z-index:1}.md-nav--primary{background:#fff}.md-nav--primary .md-nav__toggle~.md-nav{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4);left:.4rem;background:#fff}html .md-nav--primary .md-nav__title{position:relative;padding:.4rem 1.6rem .4rem 5.6rem;background:rgba(0,0,0,.07);color:rgba(0,0,0,.54);font-size:1.8rem;font-weight:400;line-height:4.8rem;white-space:nowrap;cursor:pointer}html .md-nav--primary .md-nav__title:before{display:block;position:absolute;left:.4rem;width:4rem;height:4rem;color:rgba(0,0,0,.54)}html .md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{border-top:0}.md-nav--primary .md-nav__list{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll}.md-nav--primary .md-nav__item{padding:0;border-top:.1rem solid rgba(0,0,0,.07)}.md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:4.8rem}.md-nav--primary .md-nav__link{position:relative;padding:1.6rem}.md-nav--primary .md-nav__link:after{position:absolute;top:50%;right:1.2rem;-webkit-transform:translateY(-50%) rotate(-90deg);transform:translateY(-50%) rotate(-90deg);-webkit-transition:inherit;transition:inherit;color:rgba(0,0,0,.54);font-size:2.4rem}.md-nav--primary .md-nav__link:hover:after{color:#536dfe}.md-nav--primary .md-nav--secondary .md-nav{position:static}.md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:2.8rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:4rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:5.2rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:6.4rem}.md-nav__toggle~.md-nav{display:none}.csstransforms3d .md-nav__toggle~.md-nav{display:block;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s;transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);opacity:0}.md-nav__toggle:checked~.md-nav{display:block}.csstransforms3d .md-nav__toggle:checked~.md-nav{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1}.md-nav .md-nav__item,.md-nav .md-nav__title{font-size:1.6rem;line-height:1.4}.md-sidebar--primary{position:fixed;top:0;left:-24.2rem;width:24.2rem;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);background:#fff;z-index:2}.no-csstransforms3d .md-sidebar--primary{display:none}.md-toggle--drawer:checked~.md-container .md-sidebar--primary{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);-webkit-transform:translate3d(24.2rem,0,0);transform:translate3d(24.2rem,0,0)}.no-csstransforms3d .md-toggle--drawer:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden;margin:0}}@media only screen and (min-width:60em){.md-content{margin-right:24.2rem}.md-header-nav__source{display:block;width:23rem;max-width:23rem;padding-right:1.2rem}.md-sidebar--secondary{display:block;float:right}.md-sidebar--secondary.md-js__sidebar--locked{margin-left:100%;-webkit-transform:translate(-100%);transform:translate(-100%)}}@media only screen and (min-width:75em){.md-content{margin-left:24.2rem}.md-content__inner{margin:2.4rem}.md-nav__toggle~.md-nav{max-height:0;overflow:hidden}.md-nav__toggle:checked~.md-nav{max-height:100%}.md-nav__title+.md-nav__list .md-nav__title{display:none}.md-nav__item--nested>.md-nav__link:after{display:inline-block;-webkit-transform-origin:.5em .475em;transform-origin:.5em .475em;-webkit-transition:-webkit-transform .25s;transition:-webkit-transform .25s;transition:transform .25s;transition:transform .25s,-webkit-transform .25s;vertical-align:-.125em}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link:after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.md-sidebar__inner{border-right:.1rem solid rgba(0,0,0,.07)}}@media only screen and (min-width:45em){.md-header-nav__icon.md-icon--search{display:none}.md-search{padding:.4rem;padding-right:3.2rem}.md-search__input{width:23rem;height:4rem;padding-left:4.8rem;-webkit-transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;background:rgba(0,0,0,.26);color:#fff;font-size:1.6rem}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input:hover{background:hsla(0,0%,100%,.12)}.md-search__input:focus{width:66.8rem;background:#fff;color:rgba(0,0,0,.87);text-overflow:none}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::placeholder{color:rgba(0,0,0,.54)}}@media only screen and (min-width:30em){.md-footer-nav__link{width:50%}}@media only screen and (max-width:29.9375em){.md-footer-nav__link--prev .md-footer-nav__title{display:none}}@media only screen and (max-width:59.9375em){.md-nav--secondary{border-left:0}html .md-nav__link[for=toc]{display:block}html .md-nav__link[for=toc]:after{-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#536dfe;content:"toc"}html .md-nav__link[for=toc]+.md-nav__link{display:none}html .md-nav__link[for=toc]~.md-nav{display:-webkit-box;display:-ms-flexbox;display:flex}.md-nav__source{display:block;padding:.4rem;background:rgba(0,0,0,.87);color:#fff}}@media only screen and (min-width:60em) and (min-width:75em){.md-sidebar--secondary.md-js__sidebar--locked{margin-left:120rem}} \ No newline at end of file +@charset "UTF-8";.checklist li:before,.critic.comment:before,.footnote-backref,.md-icon,.md-nav__link:after,.md-nav__title:before,.md-search-term:before{font-family:Material Icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none;white-space:nowrap;speak:none;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-footer-nav__icon,.md-header-nav__icon,.md-nav__title:before{display:inline-block;margin:.4rem;padding:.8rem;font-size:2.4rem;cursor:pointer}.md-icon--back:before{content:"arrow_back"}.md-icon--forward:before{content:"arrow_forward"}.md-icon--close:before{content:"close"}.md-icon--menu:before{content:"menu"}.md-icon--search:before{content:"search"}html{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}*,:after,:before{box-sizing:inherit;-moz-box-sizing:inherit;-webkit-box-sizing:inherit}html{-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}body{margin:0}article,aside,figcaption,figure,footer,header,main,nav,section{display:block}hr{overflow:visible;box-sizing:content-box}a{color:inherit;text-decoration:none}a:active,a:hover{outline-width:0}a{-webkit-text-decoration-skip:objects}a,button,input,label{-webkit-tap-highlight-color:transparent}small,sub,sup{font-size:80%}sub,sup{position:relative;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}table{border-collapse:collapse;border-spacing:0}td,th{font-weight:400;text-align:left;vertical-align:top}button{padding:0;background:transparent;font-size:inherit}button,input{border:0;outline:0}body{color:rgba(0,0,0,.87);font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;-webkit-font-feature-settings:"kern","onum","liga";font-feature-settings:"kern","onum","liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.no-fontface body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code,kbd,pre{color:rgba(0,0,0,.87);font-family:Roboto Mono,Courier New,Courier,monospace;font-weight:400;-webkit-font-feature-settings:"kern","onum","liga";font-feature-settings:"kern","onum","liga"}.no-fontface code,.no-fontface kbd,.no-fontface pre{font-family:Courier New,Courier,monospace}.md-typeset{font-size:1.6rem;line-height:1.6}.md-typeset blockquote,.md-typeset ol,.md-typeset p,.md-typeset ul{margin:1em 0}.md-typeset h1{margin:0 0 4rem;color:rgba(0,0,0,.54);font-size:3.125rem;line-height:1.3}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{margin:4rem 0 1.6rem;font-size:2.5rem;line-height:1.4}.md-typeset h3{margin:3.2rem 0 1.6rem;font-size:2rem;font-weight:400;letter-spacing:-.01em;line-height:1.5}.md-typeset h2+h3{margin-top:1.6rem}.md-typeset h4{font-size:1.6rem}.md-typeset h4,.md-typeset h5,.md-typeset h6{margin:1.6rem 0;font-weight:700;letter-spacing:-.01em}.md-typeset h5,.md-typeset h6{color:rgba(0,0,0,.54);font-size:1.28rem}.md-typeset h5{text-transform:uppercase}.md-typeset hr{margin:2.4rem 0;border-bottom:.1rem dotted rgba(0,0,0,.26)}.md-typeset a{color:#3f51b5}.md-typeset a,.md-typeset a:before{-webkit-transition:color .125s;transition:color .125s}.md-typeset a:active,.md-typeset a:hover{color:#536dfe}.md-typeset code{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f7f7f7;color:#37474f;font-size:85%;box-shadow:.4rem 0 0 #f7f7f7,-.4rem 0 0 #f7f7f7;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset h1 code,.md-typeset h2 code,.md-typeset h3 code,.md-typeset h4 code,.md-typeset h5 code,.md-typeset h6 code{margin:0;background:transparent;box-shadow:none}.md-typeset pre{margin:1em 0;padding:1rem 1.2rem;border-radius:.2rem;background:#f7f7f7;color:#37474f;font-size:85%;line-height:1.4;overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset pre>code{font-size:inherit}.md-typeset>div>pre::-webkit-scrollbar,.md-typeset>pre>code::-webkit-scrollbar{width:.4rem;height:.4rem}.md-typeset>div>pre::-webkit-scrollbar-thumb,.md-typeset>pre>code::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-typeset kbd{display:inline-block;padding:.4rem .5rem .5rem;border:.1rem solid #c9c9c9;border-radius:.3rem;border-bottom-color:#bcbcbc;background-color:#fcfcfc;color:#555;font-size:85%;line-height:1rem;box-shadow:inset 0 -.1rem 0 #b0b0b0;vertical-align:.1rem;word-break:break-word}.md-typeset small{opacity:.75}.md-typeset sub,.md-typeset sup{margin-left:.1rem}.md-typeset blockquote{padding-left:1.2rem;border-left:.4rem solid rgba(0,0,0,.26);color:rgba(0,0,0,.54)}.md-typeset ul{list-style-type:disc}.md-typeset ol ol{list-style-type:lower-alpha}.md-typeset ol ol ol{list-style-type:lower-roman}.md-typeset ol,.md-typeset ul{margin-left:1rem;padding:0}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em;margin-left:2rem}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:1rem;margin-left:1rem;padding-top:1rem}html{height:100%;font-size:62.5%}body{position:relative;min-height:100%}body.md-js__body--locked{height:100%;overflow:hidden}hr{display:block;height:.1rem;padding:0;border:0}.md-grid{max-width:120rem;margin-right:auto;margin-left:auto}.md-container,.md-main{overflow:auto}.md-main{margin-top:5.6rem}.md-main__inner{margin-top:3rem;margin-bottom:9.2rem;overflow:auto}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;-webkit-transition:width 0s .25s,height 0s .25s,opacity .25s;transition:width 0s .25s,height 0s .25s,opacity .25s;background:rgba(0,0,0,.54);opacity:0;z-index:2}.md-flex{display:table}.md-flex__cell{display:table-cell;position:relative;vertical-align:top}.md-flex__cell--shrink{width:0}.md-flex__cell--stretch{display:table;width:100%;table-layout:fixed}.md-flex__ellipsis{display:table-cell;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-content__inner{margin:2.4rem 1.6rem}.md-content__copyright{display:block}.md-header{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:fixed;top:0;right:0;left:0;height:5.6rem;background:#3f51b5;color:#fff;z-index:1}.md-header-nav{padding:.4rem}.md-header-nav__icon{position:relative;-webkit-transition:opacity .25s;transition:opacity .25s;z-index:1}.md-header-nav__icon:hover{opacity:.7}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-header-nav__source{display:none}.md-footer{position:absolute;bottom:0;width:100%}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{padding:.4rem;overflow:auto}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem;-webkit-transition:opacity .25s;transition:opacity .25s}.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}.md-footer-nav__link--next{width:75%;float:right;text-align:right}.md-footer-nav__icon{-webkit-transition:background .25s;transition:background .25s}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-2rem;padding:0 .4rem;color:hsla(0,0%,100%,.7);font-size:1.5rem}.md-nav{font-size:1.28rem;line-height:1.3}.md-nav--secondary{border-left:.4rem solid #3f51b5}.md-nav__title{display:block;padding:1.2rem 1.2rem 0;font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-nav__title:before{display:none;content:"arrow_back"}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:.625em 1.2rem 0}.md-nav__item:last-child{padding-bottom:1.2rem}.md-nav__item .md-nav__item{padding-right:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__link{display:block;-webkit-transition:color .125s;transition:color .125s;text-overflow:ellipsis;cursor:pointer;overflow:hidden}.md-nav__item--nested>.md-nav__link:after{content:"expand_more"}html .md-nav__link[for=toc],html .md-nav__link[for=toc]+.md-nav__link:after,html .md-nav__link[for=toc]~.md-nav{display:none}.md-nav__link--marked{color:rgba(0,0,0,.54)}.md-nav__link--active,.md-nav__link:active,.md-nav__link:hover{color:#536dfe}.md-nav__source{display:none}.md-search{padding:.8rem .8rem 0}.md-search__overlay{display:none}.md-search__form{position:relative;border-radius:.2rem;text-align:right}.md-search__icon{position:absolute;top:.8rem;left:1.2rem;-webkit-transition:color .25s;transition:color .25s;font-size:2.4rem;cursor:pointer}.md-search__input{padding:0 1.6rem 0 6.4rem;border-radius:.2rem;text-overflow:ellipsis}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::placeholder{color:rgba(0,0,0,.54)}.md-sidebar{position:relative;width:24.2rem;float:left;overflow:visible}.md-sidebar.md-js__sidebar--locked{position:fixed;top:5.6rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{margin:2.4rem .4rem;overflow-y:scroll}.js .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-source{display:block;-webkit-transition:opacity .25s;transition:opacity .25s;font-size:1.3rem;line-height:1.2;white-space:nowrap}.md-source:hover{opacity:.7}.md-source--bitbucket:before,.md-source--github:before,.md-source--gitlab:before{display:inline-block;width:4.8rem;height:4.8rem;background-repeat:no-repeat;background-position:50%;background-size:2.4rem 2.4rem;content:"";vertical-align:middle}.md-source--bitbucket:before{background-image:url(../images/icons/bitbucket-white-42306ad0de.svg)}.md-source--github:before{background-image:url(../images/icons/github-white-1cfc8ff99e.svg)}.md-source--gitlab:before{background-image:url(../images/icons/gitlab-white-d65054b8fe.svg)}.md-source__repository{display:inline-block;max-width:100%;margin-left:-4.4rem;padding-left:4rem;font-weight:700;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.md-source__facts{margin:0;padding:0;font-size:1.1rem;font-weight:700;opacity:.75;list-style-type:none}.md-source__fact{float:left;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1),-webkit-transform .25s cubic-bezier(.1,.7,.1,1);opacity:1}.md-source__fact--hidden{-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}.md-source__fact:before{margin:0 .2rem;content:"\00B7"}.md-source__fact:first-child:before{display:none}.admonition{position:relative;margin:2rem 0;padding:.8rem 1.6rem;border-left:3.2rem solid #448aff;border-radius:.2rem;background:rgba(68,138,255,.05)}.admonition:before{display:block;position:absolute;top:.2rem;left:-2.6rem;float:left;color:#fff;font-family:Material Icons;font-size:2rem;font-weight:400;content:"edit";vertical-align:-.1em}.admonition-title{color:#2979ff;font-size:1.28rem;font-weight:700;line-height:2;text-transform:uppercase}html .admonition-title{margin-bottom:1.6rem}html .admonition-title+*{margin-top:1.6rem}.admonition :first-child{margin-top:0}.admonition :last-child{margin-bottom:0}.admonition.summary,.admonition.tldr{border-color:#00b0ff;background:rgba(0,176,255,.05)}.admonition.summary:before,.admonition.tldr:before{content:"subject"}.admonition.summary .admonition-title,.admonition.tldr .admonition-title{color:#00b0ff}.admonition.idea,.admonition.tip{border-color:#00bfa5;background:rgba(0,191,165,.05)}.admonition.idea:before,.admonition.tip:before{content:"whatshot"}.admonition.idea .admonition-title,.admonition.tip .admonition-title{color:#00bfa5}.admonition.check,.admonition.done,.admonition.success{border-color:#00e676;background:rgba(0,230,118,.05)}.admonition.check:before,.admonition.done:before,.admonition.success:before{content:"done"}.admonition.check .admonition-title,.admonition.done .admonition-title,.admonition.success .admonition-title{color:#00e676}.admonition.warn,.admonition.warning{border-color:#ff9100;background:rgba(255,145,0,.05)}.admonition.warn:before,.admonition.warning:before{content:"warning"}.admonition.warn .admonition-title,.admonition.warning .admonition-title{color:#ff9100}.admonition.fail,.admonition.failure,.admonition.missing{border-color:#ff5252;background:rgba(255,82,82,.05)}.admonition.fail:before,.admonition.failure:before,.admonition.missing:before{content:"clear"}.admonition.fail .admonition-title,.admonition.failure .admonition-title,.admonition.missing .admonition-title{color:#ff5252}.admonition.danger,.admonition.fatal{border-color:#ff1744;background:rgba(255,23,68,.05)}.admonition.danger:before,.admonition.fatal:before{content:"flash_on"}.admonition.danger .admonition-title,.admonition.fatal .admonition-title{color:#ff1744}.admonition.bug,.admonition.error{border-color:#f50057;background:rgba(245,0,87,.05)}.admonition.bug:before,.admonition.error:before{content:"bug_report"}.admonition.bug .admonition-title,.admonition.error .admonition-title{color:#f50057}.code .err,.codehilite .err{color:#a61717}.code .o,.codehilite .o{color:inherit}.code .ge,.codehilite .ge{color:#000}.code .gr,.codehilite .gr{color:#a00}.code .gh,.codehilite .gh{color:#999}.code .go,.codehilite .go{color:#888}.code .gp,.codehilite .gp{color:#555}.code .gs,.codehilite .gs{color:inherit}.code .gu,.codehilite .gu{color:#aaa}.code .gt,.codehilite .gt{color:#a00}.code .k,.code .kc,.code .kd,.code .kn,.code .kp,.codehilite .k,.codehilite .kc,.codehilite .kd,.codehilite .kn,.codehilite .kp{color:#a71d5d}.code .kr,.code .kt,.codehilite .kr,.codehilite .kt{color:#0086b3}.code .c,.code .cm,.codehilite .c,.codehilite .cm{color:#969896}.code .cp,.codehilite .cp{color:#666}.code .c1,.code .cs,.codehilite .c1,.codehilite .cs{color:#969896}.code .bp,.code .na,.code .nb,.code .nc,.code .nd,.code .ne,.code .nf,.code .ni,.code .nl,.code .nn,.code .no,.code .nt,.code .nv,.code .vc,.code .vg,.code .vi,.codehilite .bp,.codehilite .na,.codehilite .nb,.codehilite .nc,.codehilite .nd,.codehilite .ne,.codehilite .nf,.codehilite .ni,.codehilite .nl,.codehilite .nn,.codehilite .no,.codehilite .nt,.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi{color:#795da3}.code .ow,.codehilite .ow{color:inherit}.code .il,.code .m,.code .mf,.code .mh,.code .mi,.code .mo,.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#0086b3}.code .s,.code .s2,.code .sb,.code .sc,.code .sd,.code .se,.code .sh,.code .si,.code .sx,.codehilite .s,.codehilite .s2,.codehilite .sb,.codehilite .sc,.codehilite .sd,.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx{color:#183691}.code .sr,.codehilite .sr{color:#009926}.code .s1,.codehilite .s1{color:#d01040}.code .ss,.codehilite .ss{color:#990073}.code .gd,.codehilite .gd{background-color:#fdd}.code .gi,.codehilite .gi{background-color:#dfd}.code .w,.codehilite .w{color:transparent}.footnote{color:rgba(0,0,0,.54);font-size:80%}.footnote ol{margin-left:0}.footnote li:hover .footnote-backref,.footnote li:target .footnote-backref{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.footnote li:hover .footnote-backref:hover,.footnote li:target .footnote-backref{color:#536dfe}.footnote-ref:before{position:absolute;margin-top:-8rem;padding-top:8rem;content:"";pointer-events:none}.footnote-backref{position:absolute;-webkit-transform:translate3d(.5rem,0,0);transform:translate3d(.5rem,0,0);-webkit-transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s;color:rgba(0,0,0,.26);font-size:2rem;opacity:0;vertical-align:middle}.footnote-backref:first-letter{font-size:0}.footnote-backref:after{content:"keyboard_return"}.md-typeset .headerlink{display:inline-block;margin-left:1rem;-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s;color:rgba(0,0,0,.26);opacity:0}.md-typeset [id] .headerlink:focus,.md-typeset [id]:hover .headerlink,.md-typeset [id]:target .headerlink{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.md-typeset [id] .headerlink:focus,.md-typeset [id]:hover .headerlink:hover,.md-typeset [id]:target .headerlink{color:#536dfe}.md-typeset h1[id]:before{display:block;margin-top:-11rem;padding-top:11rem;content:""}.md-typeset h2[id]:before{display:block;margin-top:-8.2rem;padding-top:8.2rem;content:""}.md-typeset h3[id]:before{display:block;margin-top:-8.4rem;padding-top:8.4rem;content:""}.md-typeset h4[id]:before{display:block;margin-top:-8.6rem;padding-top:8.6rem;content:""}.md-typeset h5[id]:before,.md-typeset h6[id]:before{display:block;margin-top:-9rem;padding-top:9rem;content:""}.md-search__suggest{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);background:#fff;border-radius:0 0 .3rem .3rem;color:#000;text-align:left;border-top:.1rem solid rgba(0,0,0,.07);display:none;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.md-search__input:focus~.md-search__suggest{display:block;opacity:1}.md-search__input:focus{border-radius:.3rem .3rem 0 0}.md-search-term{position:relative;padding:0 .8rem 0 4.8rem;line-height:4rem;font-size:1.6rem;-webkit-transition:background .25s;transition:background .25s;cursor:pointer}.md-search-term:before{position:absolute;content:"access_time";font-size:2.4rem;line-height:4rem;left:1.2rem;color:rgba(0,0,0,.26)}.md-search-term:hover{background:#eceef8}.checklist li{position:relative;list-style-type:none}.checklist li:before{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:blue;content:"check_box";font-size:2.4rem}.checklist input[type=checkbox]:checked{width:20px}del.critic,ins.critic,mark{margin:0 .4rem;padding:.1rem 0;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.2rem}ins.critic{background:#dfd;box-shadow:.4rem 0 0 #dfd,-.4rem 0 0 #dfd;text-decoration:none}del.critic{background:#fdd;box-shadow:.4rem 0 0 #fdd,-.4rem 0 0 #fdd}mark{background:#ff0;box-shadow:.4rem 0 0 #ff0,-.4rem 0 0 #ff0;overflow:auto}.critic.comment{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f0f0f0;color:#37474f;box-shadow:.4rem 0 0 #f0f0f0,-.4rem 0 0 #f0f0f0;-webkit-box-decoration-break:clone;box-decoration-break:clone}.critic.comment:before{color:rgba(0,0,0,.26);content:"chat";font-size:1.6rem;padding-right:.2rem;vertical-align:-.2rem}.md-button{float:right;margin-top:9px;font-size:13px;padding-left:2.6rem;font-weight:700;text-transform:uppercase}.task-list-item{list-style-type:none}.task-list-item input{margin:0 4px .25em -20px;vertical-align:middle}.task-list-item{position:relative}.task-list-item input[type=checkbox]{opacity:0}.task-list-item input[type=checkbox]+label{display:block;position:absolute;top:50%;left:-24px;width:16px;margin-top:-8px;height:16px;border-radius:2px;background:#ccc}.task-list-item input[type=checkbox]:checked+label:before{display:block;margin-top:-4px;margin-left:2px;font-size:1.2em;line-height:1;border-radius:2px;content:"✔";color:#1ebb52}.codehilite .hll{background:#ff0;display:block;margin:0 -16px;padding:0 16px}@media only screen and (max-width:44.9375em){.md-typeset>div>pre,.md-typeset>pre>code{margin:1em -1.6rem;padding:1rem 1.6rem;border-radius:0}.md-search__overlay{display:block;position:absolute;top:.4rem;left:.4rem;width:4rem;height:4rem;-webkit-transform-origin:center;transform-origin:center;-webkit-transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:transform .3s .1s,opacity .2s .2s;transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s;border-radius:2rem;background:#eee;opacity:0;overflow:hidden;z-index:0}.md-toggle--search:checked~.md-header .md-search__overlay{-webkit-transform:scale(40);transform:scale(40);-webkit-transition:opacity .1s,-webkit-transform .4s;transition:opacity .1s,-webkit-transform .4s;transition:transform .4s,opacity .1s;transition:transform .4s,opacity .1s,-webkit-transform .4s;opacity:1;z-index:1}.md-search__form{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.md-search__icon{top:1.2rem}.md-search__icon:before{content:"arrow_back"}.md-search__input{width:100%;height:4.8rem;font-size:1.8rem}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:56px;opacity:0;z-index:2;-webkit-transform:translate3d(5%,0,0);transform:translate3d(5%,0,0);-webkit-transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s}.md-toggle--search:checked~.md-header .md-search__inner{-webkit-transform:translateZ(0);transform:translateZ(0);left:0;opacity:1}.md-search__suggest{position:relative;z-index:2}}@media only screen and (min-width:100em){html{font-size:68.75%}}@media only screen and (min-width:125em){html{font-size:75%}}@media only screen and (max-width:74.9375em){.md-toggle--drawer:checked~.md-overlay{width:100%;height:100%;-webkit-transition:width 0s,height 0s,opacity .25s;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-nav--primary,.md-nav--primary .md-nav{display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;top:0;right:0;left:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;z-index:1}.md-nav--primary{background:#fff}.md-nav--primary .md-nav__toggle~.md-nav{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4);left:.4rem;background:#fff}html .md-nav--primary .md-nav__title{position:relative;padding:.4rem 1.6rem .4rem 5.6rem;background:rgba(0,0,0,.07);color:rgba(0,0,0,.54);font-size:1.8rem;font-weight:400;line-height:4.8rem;white-space:nowrap;cursor:pointer}html .md-nav--primary .md-nav__title:before{display:block;position:absolute;left:.4rem;width:4rem;height:4rem;color:rgba(0,0,0,.54)}html .md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{border-top:0}.md-nav--primary .md-nav__list{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll}.md-nav--primary .md-nav__item{padding:0;border-top:.1rem solid rgba(0,0,0,.07)}.md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:4.8rem}.md-nav--primary .md-nav__link{position:relative;padding:1.6rem}.md-nav--primary .md-nav__link:after{position:absolute;top:50%;right:1.2rem;-webkit-transform:translateY(-50%) rotate(-90deg);transform:translateY(-50%) rotate(-90deg);-webkit-transition:inherit;transition:inherit;color:rgba(0,0,0,.54);font-size:2.4rem}.md-nav--primary .md-nav__link:hover:after{color:#536dfe}.md-nav--primary .md-nav--secondary .md-nav{position:static}.md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:2.8rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:4rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:5.2rem}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:6.4rem}.md-nav__toggle~.md-nav{display:none}.csstransforms3d .md-nav__toggle~.md-nav{display:block;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s;transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);opacity:0}.md-nav__toggle:checked~.md-nav{display:block}.csstransforms3d .md-nav__toggle:checked~.md-nav{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1}.md-nav .md-nav__item,.md-nav .md-nav__title{font-size:1.6rem;line-height:1.4}.md-sidebar--primary{position:fixed;top:0;left:-24.2rem;width:24.2rem;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);background:#fff;z-index:2}.no-csstransforms3d .md-sidebar--primary{display:none}.md-toggle--drawer:checked~.md-container .md-sidebar--primary{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);-webkit-transform:translate3d(24.2rem,0,0);transform:translate3d(24.2rem,0,0)}.no-csstransforms3d .md-toggle--drawer:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden;margin:0}}@media only screen and (min-width:60em){.md-content{margin-right:24.2rem}.md-header-nav__source{display:block;width:23rem;max-width:23rem;padding-right:1.2rem}.md-sidebar--secondary{display:block;float:right}.md-sidebar--secondary.md-js__sidebar--locked{margin-left:100%;-webkit-transform:translate(-100%);transform:translate(-100%)}}@media only screen and (min-width:75em){.md-content{margin-left:24.2rem}.md-content__inner{margin:2.4rem}.md-nav.md-nav--transitioning{-webkit-transition:max-height .4s cubic-bezier(.86,0,.07,1);transition:max-height .4s cubic-bezier(.86,0,.07,1)}.md-nav__toggle~.md-nav{max-height:0;overflow:hidden}.md-nav.md-nav--toggled,.md-nav__toggle:checked~.md-nav{max-height:100%}.md-nav__title+.md-nav__list .md-nav__title{display:none}.md-nav__item--nested>.md-nav__link:after{display:inline-block;-webkit-transform-origin:.45em .485em;transform-origin:.45em .485em;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform .4s;transition:-webkit-transform .4s;transition:transform .4s;transition:transform .4s,-webkit-transform .4s;vertical-align:-.125em}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link:after{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.md-sidebar__inner{border-right:.1rem solid rgba(0,0,0,.07)}}@media only screen and (min-width:45em){.md-header-nav__icon.md-icon--search{display:none}.md-search{padding:.4rem;padding-right:3.2rem}.md-search__input{width:23rem;height:4rem;padding-left:4.8rem;-webkit-transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;background:rgba(0,0,0,.26);color:#fff;font-size:1.6rem}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input:hover{background:hsla(0,0%,100%,.12)}.md-search__input:focus{width:66.8rem;background:#fff;color:rgba(0,0,0,.87);text-overflow:none}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::placeholder{color:rgba(0,0,0,.54)}}@media only screen and (min-width:30em){.md-footer-nav__link{width:50%}}@media only screen and (max-width:29.9375em){.md-footer-nav__link--prev .md-footer-nav__title{display:none}}@media only screen and (max-width:59.9375em){.md-nav--secondary{border-left:0}html .md-nav__link[for=toc]{display:block}html .md-nav__link[for=toc]:after{-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#536dfe;content:"toc"}html .md-nav__link[for=toc]+.md-nav__link{display:none}html .md-nav__link[for=toc]~.md-nav{display:-webkit-box;display:-ms-flexbox;display:flex}.md-nav__source{display:block;padding:.4rem;background:rgba(0,0,0,.87);color:#fff}}@media only screen and (min-width:60em) and (min-width:75em){.md-sidebar--secondary.md-js__sidebar--locked{margin-left:120rem}} \ No newline at end of file diff --git a/material/base.html b/material/base.html index 9b52b0e34..6697f882e 100644 --- a/material/base.html +++ b/material/base.html @@ -91,7 +91,7 @@ var base_url = '{{ base_url }}'; var repo_url = '{{ repo_url }}'; - + {% for path in extra_javascript %} {% endfor %} diff --git a/material/partials/nav-item.html b/material/partials/nav-item.html index ab2b4cb58..02649573c 100644 --- a/material/partials/nav-item.html +++ b/material/partials/nav-item.html @@ -1,39 +1,37 @@ -{% if nav_item.children or nav_item == current_page %} +{% if nav_item.children %}
  • - {% if nav_item == current_page %} - {% set path = "toc" %} - {% endif %} - {% if nav_item.active and not nav_item == current_page %} + {% if nav_item.active %} {% else %} {% endif %} - {% if nav_item == current_page %} -
  • +{% elif nav_item == current_page %} +
  • + + + + {{ nav_item.title }} + + {% include "partials/toc.html" %}
  • {% else %}
  • diff --git a/src/assets/javascripts/application.js b/src/assets/javascripts/application.js index e5b4ee6ab..305af4437 100644 --- a/src/assets/javascripts/application.js +++ b/src/assets/javascripts/application.js @@ -29,6 +29,7 @@ import FastClick from 'fastclick'; import Sidebar from './components/sidebar'; import ScrollSpy from './components/scrollspy'; +import Expander from './components/expander'; /* ---------------------------------------------------------------------------- * Application @@ -118,16 +119,78 @@ document.addEventListener('DOMContentLoaded', function() { } }); + // var toc = new Sidebar('.md-sidebar--secondary'); + // toc.listen(); + + var toggles = document.querySelectorAll('.md-nav__item--nested > .md-nav__link'); + [].forEach.call(toggles, (toggle) => { + let nav = toggle.nextElementSibling; + + // 1. + + nav.style.maxHeight = nav.getBoundingClientRect().height + 'px'; + + toggle.addEventListener('click', function () { + let first = nav.getBoundingClientRect().height; + if (first) { + console.log('closing'); + nav.style.maxHeight = first + 'px'; // reset! + requestAnimationFrame(() => { + + nav.classList.add('md-nav--transitioning'); + nav.style.maxHeight = '0px'; + }); + } else { + console.log('opening'); + + /* Toggle and read height */ + nav.style.maxHeight = ''; + + nav.classList.add('md-nav--toggled'); + let last = nav.getBoundingClientRect().height; + nav.classList.remove('md-nav--toggled'); + + // Initial state + nav.style.maxHeight = '0px'; + + /* Enable animations */ + requestAnimationFrame(() => { + nav.classList.add('md-nav--transitioning'); + nav.style.maxHeight = last + 'px'; + }); + } + + }); + + // Capture the end with transitionend + nav.addEventListener('transitionend', function() { + this.classList.remove('md-nav--transitioning'); + if (this.getBoundingClientRect().height > 0) { + this.style.maxHeight = '100%'; + } + }); + }); + // document.querySelector('[for="nav-3"]').addEventListener('click', function() { // var el = document.querySelector('[for="nav-3"] + nav'); // // // TODO: do via class and disable transforms!!! - // el.style.maxHeight = '100%'; - // var rect = el.getBoundingClientRect(); - // el.style.maxHeight = '0'; + // el.style.maxHeight = '100%'; // class !? // - // // console.log(rect.height); - // el.style.maxHeight = '120px'; + // var rect = el.getBoundingClientRect(); + // + // console.log(rect); + // + // el.style.maxHeight = '0px'; + // requestAnimationFrame(function() { + // el.classList.add('md-nav--transitioning'); + // el.style.maxHeight = rect.height + 'px'; + // }); + // + // // Capture the end with transitionend + // el.addEventListener('transitionend', function() { + // el.classList.remove('md-nav--transitioning'); + // }); // }); diff --git a/src/assets/javascripts/components/expander.js b/src/assets/javascripts/components/expander.js new file mode 100644 index 000000000..0375f65cc --- /dev/null +++ b/src/assets/javascripts/components/expander.js @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2016 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +'use strict'; + +/* ---------------------------------------------------------------------------- + * Navigation expander + * ------------------------------------------------------------------------- */ + +class Expander { + + /** + * Constructor + * + * @constructor + * @param {(string|HTMLElement)} el - Selector or HTML element + */ + constructor(el) { + this.el_ = (typeof el === 'string') ? document.querySelector(el) : el; + + /* Event listener */ + this.handler_ = ev => { + this.update(ev); + }; + }; + + /** + * Update state of expandable element + * + * @param {Event} ev - Event + */ + update(ev) { + console.log("foo"); + }; + + /** + * Reset state of expandable element + */ + reset() { + // this.el_.classList.remove('md-js__sidebar--locked'); + // this.el_.style.height = ''; + // + // /* Reset parameters */ + // this.height_ = 0; + // this.locked_ = false; + }; + + /** + * Register listener for all relevant events + */ + listen() { + ['click'].forEach(name => { + window.addEventListener(name, this.handler_, false); + }); + }; + + /** + * Unregister listener for all relevant events + */ + unlisten() { + ['click'].forEach(name => { + window.removeEventListener(name, this.handler_, false); + }); + + /* Perform reset */ + this.reset(); + }; +} + +/* ---------------------------------------------------------------------------- + * Exports + * ------------------------------------------------------------------------- */ + +export default Expander; \ No newline at end of file diff --git a/src/assets/javascripts/components/scrollspy.js b/src/assets/javascripts/components/scrollspy.js index 46e95e9d0..1a58a4b58 100644 --- a/src/assets/javascripts/components/scrollspy.js +++ b/src/assets/javascripts/components/scrollspy.js @@ -42,7 +42,7 @@ class ScrollSpy { this.offset_ = window.pageYOffset; /* Event listener */ - this.handler_ = (ev) => { + this.handler_ = ev => { this.update(ev); }; } @@ -57,7 +57,7 @@ class ScrollSpy { /* Scroll direction is down */ if (this.offset_ <= window.pageYOffset) { for (let i = this.index_ + 1; i < this.el_.length; i++) { - let anchor = document.querySelector(this.el_[i].hash); + let anchor = document.querySelector(this.el_[i].hash); // TODO: improve performance by caching if (anchor.offsetTop <= window.pageYOffset) { if (i > 0) this.el_[i - 1].classList.add('md-nav__link--marked'); @@ -89,7 +89,7 @@ class ScrollSpy { * Reset state of sidebar */ reset() { - [].forEach.call(this.el_, (el) => { + [].forEach.call(this.el_, el => { el.classList.remove('md-nav__link--marked'); }); } @@ -98,7 +98,7 @@ class ScrollSpy { * Register listener for all relevant events */ listen() { - ['scroll', 'resize', 'orientationchange'].forEach((name) => { + ['scroll', 'resize', 'orientationchange'].forEach(name => { window.addEventListener(name, this.handler_, false); }); @@ -110,7 +110,7 @@ class ScrollSpy { * Unregister listener for all relevant events */ unlisten() { - ['scroll', 'resize', 'orientationchange'].forEach((name) => { + ['scroll', 'resize', 'orientationchange'].forEach(name => { window.removeEventListener(name, this.handler_, false); }); diff --git a/src/assets/javascripts/components/sidebar.js b/src/assets/javascripts/components/sidebar.js index 709eec72c..92a2d74a9 100644 --- a/src/assets/javascripts/components/sidebar.js +++ b/src/assets/javascripts/components/sidebar.js @@ -42,7 +42,7 @@ class Sidebar { this.locked_ = false; /* Event listener */ - this.handler_ = (ev) => { + this.handler_ = ev => { this.update(ev); }; }; @@ -103,7 +103,7 @@ class Sidebar { * Register listener for all relevant events */ listen() { - ['scroll', 'resize', 'orientationchange'].forEach((name) => { + ['scroll', 'resize', 'orientationchange'].forEach(name => { window.addEventListener(name, this.handler_, false); }); @@ -115,7 +115,7 @@ class Sidebar { * Unregister listener for all relevant events */ unlisten() { - ['scroll', 'resize', 'orientationchange'].forEach((name) => { + ['scroll', 'resize', 'orientationchange'].forEach(name => { window.removeEventListener(name, this.handler_, false); }); diff --git a/src/assets/stylesheets/layout/_nav.scss b/src/assets/stylesheets/layout/_nav.scss index 0324a1ebb..b647b40cb 100644 --- a/src/assets/stylesheets/layout/_nav.scss +++ b/src/assets/stylesheets/layout/_nav.scss @@ -330,6 +330,12 @@ // [screen +]: Tree-like navigation @include break-from-device(screen) { + // Animation is only possible if JavaScript is available, as the max-height + // property must be calculated before transitioning. + &.md-nav--transitioning { + transition: max-height 0.4s cubic-bezier(0.86, 0.0, 0.07, 1.0); + } + // Hide nested navigation by default .md-nav__toggle ~ & { max-height: 0; @@ -337,7 +343,8 @@ } // Expand nested navigation, if toggle is checked - .md-nav__toggle:checked ~ & { + .md-nav__toggle:checked ~ &, + &.md-nav--toggled { max-height: 100%; } @@ -356,14 +363,15 @@ // Item contains a nested list .md-nav__item--nested > &::after { display: inline-block; - transform-origin: 0.5em 0.475em; - transition: transform 0.25s; + transform-origin: 0.45em 0.485em; + transform-style: preserve-3d; + transition: transform 0.4s; vertical-align: -0.125em; } // Rotate icon for expanded lists .md-nav__item--nested .md-nav__toggle:checked ~ &::after { - transform: rotate(180deg); + transform: rotateX(180deg); } } } diff --git a/src/partials/nav-item.html b/src/partials/nav-item.html index 45fb0d7e3..e96cafae7 100644 --- a/src/partials/nav-item.html +++ b/src/partials/nav-item.html @@ -21,14 +21,11 @@ --> -{% if nav_item.children or nav_item == current_page %} +{% if nav_item.children %}
  • - {% if nav_item == current_page %} - {% set path = "toc" %} - {% endif %} - {% if nav_item.active and not nav_item == current_page %} + {% if nav_item.active %} {% else %} @@ -37,38 +34,44 @@ {% endif %} - {% if nav_item == current_page %} -
  • + + + + + + + + {{ nav_item.title }} + + + + {% include "partials/toc.html" %}