diff --git a/CHANGELOG b/CHANGELOG index 95881f06a..4b382d2ff 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,23 @@ +mkdocs-material-0.2.4 (2016-06-26) + + * Fixed improperly set default favicon + * Fixed #33: Protocol relative URL for web fonts doesn't work with file:// + * Fixed #34: IE11 on Windows 7 doesn't honor max-width on main tag + * Fixed #35: Add styling for blockquotes + +mkdocs-material-0.2.3 (2016-05-16) + + * Fixed #25: Highlight inline fenced blocks + * Fixed #26: Better highlighting for keystrokes + * Fixed #30: Suboptimal syntax highlighting for PHP + +mkdocs-material-0.2.2 (2016-03-20) + + * Fixed #15: Document pygments dependency for codehilite + * Fixed #16: Favicon could not be set through mkdocs.yml + * Fixed #17: Put version into own container for styling + * Fixed #20: Fix rounded borders for tables + mkdocs-material-0.2.1 (2016-03-12) * Fixed #10: Invisible header after closing search bar with ESC key diff --git a/Gulpfile.js b/Gulpfile.js index e759bf410..13fc4133a 100755 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -41,14 +41,17 @@ var minimage = require('gulp-image-optimization'); var modernizr = require('gulp-modernizr'); var mqpacker = require('css-mqpacker'); var notifier = require('node-notifier'); +var path = require('path'); var plumber = require('gulp-plumber'); var postcss = require('gulp-postcss'); var rev = require('gulp-rev'); var sass = require('gulp-sass'); var sourcemaps = require('gulp-sourcemaps'); +var stream = require('webpack-stream'); var uglify = require('gulp-uglify'); var util = require('gulp-util'); var vinyl = require('vinyl-paths'); +var webpack = require('webpack'); /* ---------------------------------------------------------------------------- * Locals @@ -72,9 +75,10 @@ gulp.src = function() { util.log(util.colors.red( 'Error (' + error.plugin + '): ' + error.message )); + var file = error.relativePath.split('/').pop(); notifier.notify({ - title: 'Error (' + error.plugin + ')', - message: error.message.split('\n')[0] + title: 'Error (' + error.plugin + '): ' + file, + message: error.messageOriginal }); this.emit('end'); })); @@ -93,9 +97,9 @@ gulp.task('assets:stylesheets', function() { .pipe( sass({ includePaths: [ - 'bower_components/bourbon/app/assets/stylesheets/', - 'bower_components/quantum-colors/', - 'bower_components/quantum-shadows/' + 'bower_components/modular-scale/stylesheets', + 'bower_components/quantum-colors', + 'bower_components/quantum-shadows' ] })) .pipe( @@ -105,29 +109,60 @@ gulp.task('assets:stylesheets', function() { ])) .pipe(gulpif(args.sourcemaps, sourcemaps.write())) .pipe(gulpif(args.production, mincss())) - .pipe(gulp.dest('material/assets/stylesheets/')); + .pipe(gulp.dest('material/assets/stylesheets')); }); /* - * Build javascripts from Bower components and source. + * Build javascripts by transpiling ES6 with babel. */ gulp.task('assets:javascripts', function() { - return gulp.src([ - - /* Bower components */ - 'bower_components/classlist/classList.js', - 'bower_components/fastclick/lib/fastclick.js', - 'bower_components/pegasus/dist/pegasus.js', - 'bower_components/lunr.js/lunr.js', - - /* Application javascripts */ - 'src/assets/javascripts/application.js', - 'src/assets/javascripts/standalone.js' - ]).pipe(gulpif(args.sourcemaps, sourcemaps.init())) - .pipe(concat('application.js')) - .pipe(gulpif(args.sourcemaps, sourcemaps.write())) - .pipe(gulpif(args.production, uglify())) - .pipe(gulp.dest('material/assets/javascripts/')); + return gulp.src('src/assets/javascripts/**/*.js') + .pipe( + stream({ + entry: 'application.js', + output: { + filename: 'application.js' + }, + module: { + loaders: [{ + loader: 'babel-loader', + test: path.join(__dirname, 'src/assets/javascripts'), + query: { + presets: 'es2015' + } + }] + }, + plugins: [ + new webpack.NoErrorsPlugin(), + new webpack.ResolverPlugin( + new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin( + '.bower.json', ['main'] + ) + ) + ].concat( + args.production ? [ + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + } + }) + ] : []), + stats: { + colors: true + }, + resolve: { + modulesDirectories: [ + 'src/assets/javascripts', + 'node_modules', + 'bower_components' + ], + extensions: [ + '', '.js' + ] + }, + devtool: args.sourcemaps ? 'source-map' : '' + })) + .pipe(gulp.dest('material/assets/javascripts')); }); /* @@ -138,8 +173,8 @@ gulp.task('assets:modernizr', [ 'assets:javascripts' ], function() { return gulp.src([ - 'material/assets/stylesheets/application.css', - 'material/assets/javascripts/application.js' + 'material/assets/stylesheets/*.css', + 'material/assets/javascripts/*.js' ]).pipe( modernizr({ options: [ @@ -150,7 +185,6 @@ gulp.task('assets:modernizr', [ 'testProp' /* Test for properties */ ] })) - .pipe(addsrc.append('bower_components/respond/dest/respond.src.js')) .pipe(concat('modernizr.js')) .pipe(gulpif(args.production, uglify())) .pipe(gulp.dest('material/assets/javascripts')); @@ -168,7 +202,7 @@ gulp.task('assets:static', function() { interlaced: true }))) .pipe(addsrc.append('src/assets/{fonts,images}/*.{ico,eot,svg,ttf,woff}')) - .pipe(gulp.dest('material/assets/')); + .pipe(gulp.dest('material/assets')); }); /* diff --git a/bower.json b/bower.json index c43fd6fe4..c812ef7f4 100644 --- a/bower.json +++ b/bower.json @@ -16,15 +16,8 @@ "node_modules" ], "private": true, - "dependencies": { - "classlist": "^2014.12.13", - "fastclick": "^1.0.6", - "lunr.js": "^0.6.0", - "pegasus": "^0.3.2", - "respond": "^1.4.2" - }, "devDependencies": { - "bourbon": "^4.2.6", + "modular-scale": "^2.1.1", "quantum-colors": "^1.0.1", "quantum-shadows": "^1.0.0" } diff --git a/docs/getting-started.md b/docs/getting-started.md index cf6cd16f4..40825b89f 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -123,8 +123,6 @@ _deep purple_, _indigo_, _blue_, _light blue_, _cyan_, _teal_, _green_, _light green_, _lime_, _yellow_, _amber_, _orange_, _deep orange_, _brown_, _grey_ and _blue grey_. The last three colors can only be used as a primary color. -![Material Screenshot](images/colors.png) - If the color is set via this configuration, an additional CSS file called `palettes.css` is included that defines the color palettes. If you want to keep things lean, clone the repository and recompile the theme with your @@ -203,14 +201,14 @@ MkDocs supports several [Markdown extensions][]. The following extensions are not enabled by default (see the link for which are enabled by default), so you have to switch them on explicitly. -### CodeHilite (recommended) +### CodeHilite recommended This extensions adds code highlighting to fenced code blocks. It might not be the best code highlighter, but it works without JavaScript and on the server: ``` yaml markdown_extensions: - - codehilite(css_class=code) + - codehilite ``` If you want more extensive highlighting, you can use a JavaScript library like @@ -257,20 +255,28 @@ The Material template adds a neutral color for the `note` class and a red color for the `warning` class. You can also add a custom title: ``` markdown -!!! warning "Don't try this at home" - If you do, you will regret it. +!!! warning + MkDocs supports several [Markdown extensions][]. The following extensions are + not enabled by default (see the link for which are enabled by default), so you + have to switch them on explicitly. ``` This will print: -!!! warning "Don't try this at home" - If you do, you will regret it. +!!! warning + MkDocs supports several [Markdown extensions][]. The following extensions are + not enabled by default (see the link for which are enabled by default), so you + have to switch them on explicitly. More colors can be freely defined. +> MkDocs supports several [Markdown extensions][]. The following extensions are +> not enabled by default (see the link for which are enabled by default), so you +> have to switch them on explicitly. + ## Full example -Below is a full example configuration for a mkdocs.yml: +Below is a full example configuration for a `mkdocs.yml`: ``` yaml # Project information diff --git a/docs/index.md b/docs/index.md index 9fdad9c4f..5fbc03212 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -# Material for MkDocs +# Material for MkDocs ## Beautiful documentation @@ -7,8 +7,6 @@ towards project documentation. It is built using Google's [material design][] guidelines, full responsive, optimized for touch and pointer devices as well as all sorts of screen sizes. -![Material Screenshot](images/screen.png) - Material is very lightweight – it is built from scratch using Javascript and CSS that weighs less than 30kb (minified, gzipped and excluding Google Fonts and Analytics). Yet, it is highly customizable and degrades gracefully in older diff --git a/docs/specimen.md b/docs/specimen.md new file mode 100644 index 000000000..e920c8c4b --- /dev/null +++ b/docs/specimen.md @@ -0,0 +1,106 @@ +# Specimen + +## Typography + +### Body copy + +Material's typographical system follows the idea of __vertical rhythm__, which +means it tries to establish a _consistent visual rhythm_ to the content of the +page to make reading pleasant and easy on the eyes. It's a simple concept but +rather hard to implement correctly. Luckily, the Material theme has already +done this for you, so sit back, relax, and start writing your documentation. + +Naturally, the Material theme defines __bold__ and _italic_ styles, makes it +easy to write `fenced inline code blocks`, [links](#) and Keyboard ++ Commands. + +### Headings w/ or w/o secondary text + +Besides the default HTML headings `

` to `

`, the representational +classes `.h2` to `.h6` are defined to allow easy inline styling. The `

` +should be only defined once and is integrated into the collapsing header. + +Secondary text can be introduced to all headings (including `

`) by using +the `` tag directly inside Markdown. + +## Blockquotes + +> Text can also be written in blockquotes, for example to paraphrase +> something or someone. +> +> > And blockquotes can be nested? +> +> This is correct. Furthermore, they can contain __bold__ and _italic_ text, +> `fenced inline code blocks`, [links](#), headings and all kind of stuff. + +## Lists + +### Ordered lists + +### Unordered lists + +## Code + +### Listing + +Pre-formatted code blocks can host code examples and use the pygments extension +(if installed and enabled in `mkdocs.yml`) for syntax highlighting: + +``` c +/*! + * Scan a buffer for a valid variable-sized integer. + * + * This function checks if an underrun might happen reading a variable-sized + * integer from a buffer. Only underruns can be checked using this method, + * overflows may still happen, but are properly reported by the unpack + * functions. SSE2 intrinsics are used if the compiler supports it. + * + * \param[in] data[] Source buffer + * \param[in] left Remaining bytes + * \return Bytes read + */ +extern size_t +pb_varint_scan(const uint8_t data[], size_t left) { + assert(data && left); + left = left > 10 ? 10 : left; + +#ifdef __SSE2__ + + /* Mapping: remaining bytes ==> bitmask */ + static const int mask_map[] = { + 0x0000, 0x0001, 0x0003, 0x0007, + 0x000F, 0x001F, 0x003F, 0x007F, + 0x00FF, 0x01FF, 0x03FF + }; + + /* Load buffer into 128-bit integer and create high-bit mask */ + __m128i temp = _mm_loadu_si128((const __m128i *)data); + __m128i high = _mm_set1_epi8(0x80); + + /* Intersect and extract mask with high-bits set */ + int mask = _mm_movemask_epi8(_mm_and_si128(temp, high)); + mask = (mask & mask_map[left]) ^ mask_map[left]; + + /* Count trailing zeroes */ + return mask ? __builtin_ctz(mask) + 1 : 0; + +#else + + /* Linear scan */ + size_t size = 0; + while (data[size++] & 0x80) + if (!--left) + return 0; + return size; + +#endif /* __SSE2__ */ + +} +``` + +### Inline + +Code can also be written within `fenced inline code blocks`, however syntax +highlighting will only work on code listings. + +## Tables \ No newline at end of file diff --git a/material/404.html b/material/404.html new file mode 100644 index 000000000..2fd9f9570 --- /dev/null +++ b/material/404.html @@ -0,0 +1 @@ +TBD \ No newline at end of file diff --git a/material/__init__.py b/material/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/material/assets/javascripts/application-997097ee0c.js b/material/assets/javascripts/application-997097ee0c.js deleted file mode 100644 index 1199f2e1d..000000000 --- a/material/assets/javascripts/application-997097ee0c.js +++ /dev/null @@ -1 +0,0 @@ -function pegasus(t,e){return e=new XMLHttpRequest,e.open("GET",t),t=[],e.onreadystatechange=e.then=function(n,o,i,r){if(n&&n.call&&(t=[,n,o]),4==e.readyState&&(i=t[0|e.status/200])){try{r=JSON.parse(e.responseText)}catch(s){r=null}i(r,e)}},e.send(),e}if("document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var n,o=arguments.length;for(n=0;o>n;n++)t=arguments[n],e.call(this,t)}};e("add"),e("remove")}if(t.classList.toggle("c3",!1),t.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:n.call(this,t)}}t=null}():!function(t){"use strict";if("Element"in t){var e="classList",n="prototype",o=t.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},s=Array[n].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},c=function(t,e){if(""===e)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(e))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return s.call(t,e)},l=function(t){for(var e=r.call(t.getAttribute("class")||""),n=e?e.split(/\s+/):[],o=0,i=n.length;i>o;o++)this.push(n[o]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},u=l[n]=[],d=function(){return new l(this)};if(a[n]=Error[n],u.item=function(t){return this[t]||null},u.contains=function(t){return t+="",-1!==c(this,t)},u.add=function(){var t,e=arguments,n=0,o=e.length,i=!1;do t=e[n]+"",-1===c(this,t)&&(this.push(t),i=!0);while(++nc;c++)a[s[c]]=i(a[s[c]],a);n&&(e.addEventListener("mouseover",this.onMouse,!0),e.addEventListener("mousedown",this.onMouse,!0),e.addEventListener("mouseup",this.onMouse,!0)),e.addEventListener("click",this.onClick,!0),e.addEventListener("touchstart",this.onTouchStart,!1),e.addEventListener("touchmove",this.onTouchMove,!1),e.addEventListener("touchend",this.onTouchEnd,!1),e.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(e.removeEventListener=function(t,n,o){var i=Node.prototype.removeEventListener;"click"===t?i.call(e,t,n.hijacked||n,o):i.call(e,t,n,o)},e.addEventListener=function(t,n,o){var i=Node.prototype.addEventListener;"click"===t?i.call(e,t,n.hijacked||(n.hijacked=function(t){t.propagationStopped||n(t)}),o):i.call(e,t,n,o)}),"function"==typeof e.onclick&&(r=e.onclick,e.addEventListener("click",function(t){r(t)},!1),e.onclick=null)}}var e=navigator.userAgent.indexOf("Windows Phone")>=0,n=navigator.userAgent.indexOf("Android")>0&&!e,o=/iP(ad|hone|od)/.test(navigator.userAgent)&&!e,i=o&&/OS 4_\d(_\d)?/.test(navigator.userAgent),r=o&&/OS [6-7]_\d/.test(navigator.userAgent),s=navigator.userAgent.indexOf("BB10")>0;t.prototype.needsClick=function(t){switch(t.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(t.disabled)return!0;break;case"input":if(o&&"file"===t.type||t.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(t.className)},t.prototype.needsFocus=function(t){switch(t.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!n;case"input":switch(t.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!t.disabled&&!t.readOnly;default:return/\bneedsfocus\b/.test(t.className)}},t.prototype.sendClick=function(t,e){var n,o;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),o=e.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(t),!0,!0,window,1,o.screenX,o.screenY,o.clientX,o.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,t.dispatchEvent(n)},t.prototype.determineEventType=function(t){return n&&"select"===t.tagName.toLowerCase()?"mousedown":"click"},t.prototype.focus=function(t){var e;o&&t.setSelectionRange&&0!==t.type.indexOf("date")&&"time"!==t.type&&"month"!==t.type?(e=t.value.length,t.setSelectionRange(e,e)):t.focus()},t.prototype.updateScrollParent=function(t){var e,n;if(e=t.fastClickScrollParent,!e||!e.contains(t)){n=t;do{if(n.scrollHeight>n.offsetHeight){e=n,t.fastClickScrollParent=n;break}n=n.parentElement}while(n)}e&&(e.fastClickLastScrollTop=e.scrollTop)},t.prototype.getTargetElementFromEventTarget=function(t){return t.nodeType===Node.TEXT_NODE?t.parentNode:t},t.prototype.onTouchStart=function(t){var e,n,r;if(t.targetTouches.length>1)return!0;if(e=this.getTargetElementFromEventTarget(t.target),n=t.targetTouches[0],o){if(r=window.getSelection(),r.rangeCount&&!r.isCollapsed)return!0;if(!i){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return t.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(e)}}return this.trackingClick=!0,this.trackingClickStart=t.timeStamp,this.targetElement=e,this.touchStartX=n.pageX,this.touchStartY=n.pageY,t.timeStamp-this.lastClickTimen||Math.abs(e.pageY-this.touchStartY)>n?!0:!1},t.prototype.onTouchMove=function(t){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(t.target)||this.touchHasMoved(t))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},t.prototype.findControl=function(t){return void 0!==t.control?t.control:t.htmlFor?document.getElementById(t.htmlFor):t.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},t.prototype.onTouchEnd=function(t){var e,s,a,c,l,u=this.targetElement;if(!this.trackingClick)return!0;if(t.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=t.timeStamp,s=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,r&&(l=t.changedTouches[0],u=document.elementFromPoint(l.pageX-window.pageXOffset,l.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),a=u.tagName.toLowerCase(),"label"===a){if(e=this.findControl(u)){if(this.focus(u),n)return!1;u=e}}else if(this.needsFocus(u))return t.timeStamp-s>100||o&&window.top!==window&&"input"===a?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,t),o&&"select"===a||(this.targetElement=null,t.preventDefault()),!1);return o&&!i&&(c=u.fastClickScrollParent,c&&c.fastClickLastScrollTop!==c.scrollTop)?!0:(this.needsClick(u)||(t.preventDefault(),this.sendClick(u,t)),!1)},t.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},t.prototype.onMouse=function(t){return this.targetElement?t.forwardedTouchEvent?!0:t.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(t.stopImmediatePropagation?t.stopImmediatePropagation():t.propagationStopped=!0,t.stopPropagation(),t.preventDefault(),!1):!0:!0},t.prototype.onClick=function(t){var e;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===t.target.type&&0===t.detail?!0:(e=this.onMouse(t),e||(this.targetElement=null),e)},t.prototype.destroy=function(){var t=this.layer;n&&(t.removeEventListener("mouseover",this.onMouse,!0),t.removeEventListener("mousedown",this.onMouse,!0),t.removeEventListener("mouseup",this.onMouse,!0)),t.removeEventListener("click",this.onClick,!0),t.removeEventListener("touchstart",this.onTouchStart,!1),t.removeEventListener("touchmove",this.onTouchMove,!1),t.removeEventListener("touchend",this.onTouchEnd,!1),t.removeEventListener("touchcancel",this.onTouchCancel,!1)},t.notNeeded=function(t){var e,o,i,r;if("undefined"==typeof window.ontouchstart)return!0;if(o=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!n)return!0;if(e=document.querySelector("meta[name=viewport]")){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(o>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(s&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(e=document.querySelector("meta[name=viewport]")))){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===t.style.msTouchAction||"manipulation"===t.style.touchAction?!0:(r=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],r>=27&&(e=document.querySelector("meta[name=viewport]"),e&&(-1!==e.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===t.style.touchAction||"manipulation"===t.style.touchAction?!0:!1)},t.attach=function(e,n){return new t(e,n)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return t}):"undefined"!=typeof module&&module.exports?(module.exports=t.attach,module.exports.FastClick=t):window.FastClick=t}(),function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.6.0",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.utils.asString=function(t){return void 0===t||null===t?"":t.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(e){return arguments.length&&null!=e&&void 0!=e?Array.isArray(e)?e.map(function(e){return t.utils.asString(e).toLowerCase()}):e.toString().trim().toLowerCase().split(t.tokenizer.seperator):[]},t.tokenizer.seperator=/[\s\-]+/,t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var o=t.Pipeline.registeredFunctions[e];if(!o)throw new Error("Cannot load un-registered function: "+e);n.add(o)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var o=this._stack.indexOf(e);if(-1==o)throw new Error("Cannot find existingFn");o+=1,this._stack.splice(o,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var o=this._stack.indexOf(e);if(-1==o)throw new Error("Cannot find existingFn");this._stack.splice(o,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,o=this._stack.length,i=0;n>i;i++){for(var r=t[i],s=0;o>s&&(r=this._stack[s](r,i,t),void 0!==r&&""!==r);s++);void 0!==r&&""!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var o=this.list;if(!o)return this.list=new t.Vector.Node(e,n,o),this.length++;if(en.idx?n=n.next:(o+=e.val*n.val,e=e.next,n=n.next);return o},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return i;t>r&&(e=i),r>t&&(n=i),o=n-e,i=e+Math.floor(o/2),r=this.elements[i]}return r===t?i:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,o=n-e,i=e+Math.floor(o/2),r=this.elements[i];o>1;)t>r&&(e=i),r>t&&(n=i),o=n-e,i=e+Math.floor(o/2),r=this.elements[i];return r>t?i:t>r?i+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,o=0,i=0,r=this.length,s=e.length,a=this.elements,c=e.elements;;){if(o>r-1||i>s-1)break;a[o]!==c[i]?a[o]c[i]&&i++:(n.add(a[o]),o++,i++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,o;return this.length>=t.length?(e=this,n=t):(e=t,n=this),o=e.clone(),o.add.apply(o,n.toArray()),o},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var o={},i=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));o[n.name]=r,t.SortedSet.prototype.add.apply(i,r)},this),this.documentStore.set(r,i),t.SortedSet.prototype.add.apply(this.corpusTokens,i.toArray());for(var s=0;s0&&(o=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=o},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),o=new t.Vector,i=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,c=this,l=this.tokenStore.expand(e).reduce(function(n,i){var r=c.corpusTokens.indexOf(i),s=c.idf(i),l=1,u=new t.SortedSet;if(i!==e){var d=Math.max(3,i.length-e.length);l=1/Math.log(d)}r>-1&&o.insert(r,a*s*l);for(var h=c.tokenStore.get(i),f=Object.keys(h),p=f.length,m=0;p>m;m++)u.add(h[f[m]].ref);return n.union(u)},new t.SortedSet);i.push(l)},this);var a=i.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:o.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),o=n.length,i=new t.Vector,r=0;o>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,c=this.idf(s);i.insert(this.corpusTokens.indexOf(s),a*c)}return i},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,o){return n[o]=t.SortedSet.load(e.store[o]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",o="[aeiouy]",i=n+"[^aeiouy]*",r=o+"[aeiou]*",s="^("+i+")?"+r+i,a="^("+i+")?"+r+i+"("+r+")?$",c="^("+i+")?"+r+i+r+i,l="^("+i+")?"+o,u=new RegExp(s),d=new RegExp(c),h=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,y=/.$/,w=/(at|bl|iz)$/,S=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+i+o+"[^aeiouwxy]$"),E=/^(.+?[^aeiou])y$/,x=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,b=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,C=/^(.+?)(s|t)(ion)$/,L=/^(.+?)e$/,_=/ll$/,A=new RegExp("^"+i+o+"[^aeiouwxy]$"),O=function(n){var o,i,r,s,a,c,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=g,s.test(n)){var O=s.exec(n);s=u,s.test(O[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var O=a.exec(n);o=O[1],a=f,a.test(o)&&(n=o,a=w,c=S,l=k,a.test(n)?n+="e":c.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=E,s.test(n)){var O=s.exec(n);o=O[1],n=o+"i"}if(s=x,s.test(n)){var O=s.exec(n);o=O[1],i=O[2],s=u,s.test(o)&&(n=o+t[i])}if(s=b,s.test(n)){var O=s.exec(n);o=O[1],i=O[2],s=u,s.test(o)&&(n=o+e[i])}if(s=T,a=C,s.test(n)){var O=s.exec(n);o=O[1],s=d,s.test(o)&&(n=o)}else if(a.test(n)){var O=a.exec(n);o=O[1]+O[2],a=d,a.test(o)&&(n=o)}if(s=L,s.test(n)){var O=s.exec(n);o=O[1],s=d,a=h,c=A,(s.test(o)||a.test(o)&&!c.test(o))&&(n=o)}return s=_,a=d,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return O}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){return t&&e[t]!==t?t:void 0}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,o=t.charAt(0),i=t.slice(1);return o in n||(n[o]={docs:{}}),0===i.length?(n[o].docs[e.ref]=e,void(this.length+=1)):this.add(i,e,n[o])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;nt){for(;" "!=this[t]&&--t>0;);return this.substring(0,t)+"…"}return this},HTMLElement.prototype.wrap=function(t){t.length||(t=[t]);for(var e=t.length-1;e>=0;e--){var n=e>0?this.cloneNode(!0):this,o=t[e],i=o.parentNode,r=o.nextSibling;n.appendChild(o),r?i.insertBefore(n,r):i.appendChild(n)}},document.addEventListener("DOMContentLoaded",function(){"use strict";Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)}),Modernizr.addTest("standalone",function(){return!!navigator.standalone}),FastClick.attach(document.body);var t=document.getElementById("toggle-search"),e=(document.getElementById("reset-search"),document.querySelector(".drawer")),n=document.querySelectorAll(".anchor"),o=document.querySelector(".search .field"),i=document.querySelector(".query"),r=document.querySelector(".results .meta");Array.prototype.forEach.call(n,function(t){t.querySelector("a").addEventListener("click",function(){document.getElementById("toggle-drawer").checked=!1,document.body.classList.remove("toggle-drawer")})});var s=window.pageYOffset,a=function(){var t=window.pageYOffset+window.innerHeight,n=Math.max(0,window.innerHeight-e.offsetHeight);t>document.body.clientHeight-(96-n)?"absolute"!=e.style.position&&(e.style.position="absolute",e.style.top=null,e.style.bottom=0):e.offsetHeighte.offsetTop+e.offsetHeight?(e.style.position="fixed",e.style.top=null,e.style.bottom="-96px"):window.pageYOffsets?e.style.top&&(e.style.position="absolute",e.style.top=Math.max(0,s)+"px",e.style.bottom=null):e.style.bottom&&(e.style.position="absolute",e.style.top=t-e.offsetHeight+"px",e.style.bottom=null),s=Math.max(0,window.pageYOffset)},c=function(){var t=document.querySelector(".main");window.removeEventListener("scroll",a),matchMedia("only screen and (max-width: 959px)").matches?(e.style.position=null,e.style.top=null,e.style.bottom=null):e.offsetHeight+96o;o++)t1e4?n=(n/1e3).toFixed(0)+"k":n>1e3&&(n=(n/1e3).toFixed(1)+"k");var o=document.querySelector(".repo-stars .count");o.innerHTML=n},function(t,e){console.error(t,e.status)})}),"standalone"in window.navigator&&window.navigator.standalone){var node,remotes=!1;document.addEventListener("click",function(t){for(node=t.target;"A"!==node.nodeName&&"HTML"!==node.nodeName;)node=node.parentNode;"href"in node&&-1!==node.href.indexOf("http")&&(-1!==node.href.indexOf(document.location.host)||remotes)&&(t.preventDefault(),document.location.href=node.href)},!1)} \ No newline at end of file diff --git a/material/assets/javascripts/application-a7f7c32389.js b/material/assets/javascripts/application-a7f7c32389.js new file mode 100644 index 000000000..f95f41d54 --- /dev/null +++ b/material/assets/javascripts/application-a7f7c32389.js @@ -0,0 +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-nav--toc .md-nav__item a");o.listen(),window.addEventListener("resize",t)})},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 diff --git a/material/assets/javascripts/application.js b/material/assets/javascripts/application.js index 1199f2e1d..f95f41d54 100644 --- a/material/assets/javascripts/application.js +++ b/material/assets/javascripts/application.js @@ -1 +1,8 @@ -function pegasus(t,e){return e=new XMLHttpRequest,e.open("GET",t),t=[],e.onreadystatechange=e.then=function(n,o,i,r){if(n&&n.call&&(t=[,n,o]),4==e.readyState&&(i=t[0|e.status/200])){try{r=JSON.parse(e.responseText)}catch(s){r=null}i(r,e)}},e.send(),e}if("document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var n,o=arguments.length;for(n=0;o>n;n++)t=arguments[n],e.call(this,t)}};e("add"),e("remove")}if(t.classList.toggle("c3",!1),t.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:n.call(this,t)}}t=null}():!function(t){"use strict";if("Element"in t){var e="classList",n="prototype",o=t.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},s=Array[n].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},c=function(t,e){if(""===e)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(e))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return s.call(t,e)},l=function(t){for(var e=r.call(t.getAttribute("class")||""),n=e?e.split(/\s+/):[],o=0,i=n.length;i>o;o++)this.push(n[o]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},u=l[n]=[],d=function(){return new l(this)};if(a[n]=Error[n],u.item=function(t){return this[t]||null},u.contains=function(t){return t+="",-1!==c(this,t)},u.add=function(){var t,e=arguments,n=0,o=e.length,i=!1;do t=e[n]+"",-1===c(this,t)&&(this.push(t),i=!0);while(++nc;c++)a[s[c]]=i(a[s[c]],a);n&&(e.addEventListener("mouseover",this.onMouse,!0),e.addEventListener("mousedown",this.onMouse,!0),e.addEventListener("mouseup",this.onMouse,!0)),e.addEventListener("click",this.onClick,!0),e.addEventListener("touchstart",this.onTouchStart,!1),e.addEventListener("touchmove",this.onTouchMove,!1),e.addEventListener("touchend",this.onTouchEnd,!1),e.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(e.removeEventListener=function(t,n,o){var i=Node.prototype.removeEventListener;"click"===t?i.call(e,t,n.hijacked||n,o):i.call(e,t,n,o)},e.addEventListener=function(t,n,o){var i=Node.prototype.addEventListener;"click"===t?i.call(e,t,n.hijacked||(n.hijacked=function(t){t.propagationStopped||n(t)}),o):i.call(e,t,n,o)}),"function"==typeof e.onclick&&(r=e.onclick,e.addEventListener("click",function(t){r(t)},!1),e.onclick=null)}}var e=navigator.userAgent.indexOf("Windows Phone")>=0,n=navigator.userAgent.indexOf("Android")>0&&!e,o=/iP(ad|hone|od)/.test(navigator.userAgent)&&!e,i=o&&/OS 4_\d(_\d)?/.test(navigator.userAgent),r=o&&/OS [6-7]_\d/.test(navigator.userAgent),s=navigator.userAgent.indexOf("BB10")>0;t.prototype.needsClick=function(t){switch(t.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(t.disabled)return!0;break;case"input":if(o&&"file"===t.type||t.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(t.className)},t.prototype.needsFocus=function(t){switch(t.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!n;case"input":switch(t.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!t.disabled&&!t.readOnly;default:return/\bneedsfocus\b/.test(t.className)}},t.prototype.sendClick=function(t,e){var n,o;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),o=e.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(t),!0,!0,window,1,o.screenX,o.screenY,o.clientX,o.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,t.dispatchEvent(n)},t.prototype.determineEventType=function(t){return n&&"select"===t.tagName.toLowerCase()?"mousedown":"click"},t.prototype.focus=function(t){var e;o&&t.setSelectionRange&&0!==t.type.indexOf("date")&&"time"!==t.type&&"month"!==t.type?(e=t.value.length,t.setSelectionRange(e,e)):t.focus()},t.prototype.updateScrollParent=function(t){var e,n;if(e=t.fastClickScrollParent,!e||!e.contains(t)){n=t;do{if(n.scrollHeight>n.offsetHeight){e=n,t.fastClickScrollParent=n;break}n=n.parentElement}while(n)}e&&(e.fastClickLastScrollTop=e.scrollTop)},t.prototype.getTargetElementFromEventTarget=function(t){return t.nodeType===Node.TEXT_NODE?t.parentNode:t},t.prototype.onTouchStart=function(t){var e,n,r;if(t.targetTouches.length>1)return!0;if(e=this.getTargetElementFromEventTarget(t.target),n=t.targetTouches[0],o){if(r=window.getSelection(),r.rangeCount&&!r.isCollapsed)return!0;if(!i){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return t.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(e)}}return this.trackingClick=!0,this.trackingClickStart=t.timeStamp,this.targetElement=e,this.touchStartX=n.pageX,this.touchStartY=n.pageY,t.timeStamp-this.lastClickTimen||Math.abs(e.pageY-this.touchStartY)>n?!0:!1},t.prototype.onTouchMove=function(t){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(t.target)||this.touchHasMoved(t))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},t.prototype.findControl=function(t){return void 0!==t.control?t.control:t.htmlFor?document.getElementById(t.htmlFor):t.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},t.prototype.onTouchEnd=function(t){var e,s,a,c,l,u=this.targetElement;if(!this.trackingClick)return!0;if(t.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=t.timeStamp,s=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,r&&(l=t.changedTouches[0],u=document.elementFromPoint(l.pageX-window.pageXOffset,l.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),a=u.tagName.toLowerCase(),"label"===a){if(e=this.findControl(u)){if(this.focus(u),n)return!1;u=e}}else if(this.needsFocus(u))return t.timeStamp-s>100||o&&window.top!==window&&"input"===a?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,t),o&&"select"===a||(this.targetElement=null,t.preventDefault()),!1);return o&&!i&&(c=u.fastClickScrollParent,c&&c.fastClickLastScrollTop!==c.scrollTop)?!0:(this.needsClick(u)||(t.preventDefault(),this.sendClick(u,t)),!1)},t.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},t.prototype.onMouse=function(t){return this.targetElement?t.forwardedTouchEvent?!0:t.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(t.stopImmediatePropagation?t.stopImmediatePropagation():t.propagationStopped=!0,t.stopPropagation(),t.preventDefault(),!1):!0:!0},t.prototype.onClick=function(t){var e;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===t.target.type&&0===t.detail?!0:(e=this.onMouse(t),e||(this.targetElement=null),e)},t.prototype.destroy=function(){var t=this.layer;n&&(t.removeEventListener("mouseover",this.onMouse,!0),t.removeEventListener("mousedown",this.onMouse,!0),t.removeEventListener("mouseup",this.onMouse,!0)),t.removeEventListener("click",this.onClick,!0),t.removeEventListener("touchstart",this.onTouchStart,!1),t.removeEventListener("touchmove",this.onTouchMove,!1),t.removeEventListener("touchend",this.onTouchEnd,!1),t.removeEventListener("touchcancel",this.onTouchCancel,!1)},t.notNeeded=function(t){var e,o,i,r;if("undefined"==typeof window.ontouchstart)return!0;if(o=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!n)return!0;if(e=document.querySelector("meta[name=viewport]")){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(o>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(s&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(e=document.querySelector("meta[name=viewport]")))){if(-1!==e.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===t.style.msTouchAction||"manipulation"===t.style.touchAction?!0:(r=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],r>=27&&(e=document.querySelector("meta[name=viewport]"),e&&(-1!==e.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===t.style.touchAction||"manipulation"===t.style.touchAction?!0:!1)},t.attach=function(e,n){return new t(e,n)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return t}):"undefined"!=typeof module&&module.exports?(module.exports=t.attach,module.exports.FastClick=t):window.FastClick=t}(),function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.6.0",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.utils.asString=function(t){return void 0===t||null===t?"":t.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(e){return arguments.length&&null!=e&&void 0!=e?Array.isArray(e)?e.map(function(e){return t.utils.asString(e).toLowerCase()}):e.toString().trim().toLowerCase().split(t.tokenizer.seperator):[]},t.tokenizer.seperator=/[\s\-]+/,t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var o=t.Pipeline.registeredFunctions[e];if(!o)throw new Error("Cannot load un-registered function: "+e);n.add(o)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var o=this._stack.indexOf(e);if(-1==o)throw new Error("Cannot find existingFn");o+=1,this._stack.splice(o,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var o=this._stack.indexOf(e);if(-1==o)throw new Error("Cannot find existingFn");this._stack.splice(o,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,o=this._stack.length,i=0;n>i;i++){for(var r=t[i],s=0;o>s&&(r=this._stack[s](r,i,t),void 0!==r&&""!==r);s++);void 0!==r&&""!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var o=this.list;if(!o)return this.list=new t.Vector.Node(e,n,o),this.length++;if(en.idx?n=n.next:(o+=e.val*n.val,e=e.next,n=n.next);return o},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return i;t>r&&(e=i),r>t&&(n=i),o=n-e,i=e+Math.floor(o/2),r=this.elements[i]}return r===t?i:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,o=n-e,i=e+Math.floor(o/2),r=this.elements[i];o>1;)t>r&&(e=i),r>t&&(n=i),o=n-e,i=e+Math.floor(o/2),r=this.elements[i];return r>t?i:t>r?i+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,o=0,i=0,r=this.length,s=e.length,a=this.elements,c=e.elements;;){if(o>r-1||i>s-1)break;a[o]!==c[i]?a[o]c[i]&&i++:(n.add(a[o]),o++,i++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,o;return this.length>=t.length?(e=this,n=t):(e=t,n=this),o=e.clone(),o.add.apply(o,n.toArray()),o},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var o={},i=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));o[n.name]=r,t.SortedSet.prototype.add.apply(i,r)},this),this.documentStore.set(r,i),t.SortedSet.prototype.add.apply(this.corpusTokens,i.toArray());for(var s=0;s0&&(o=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=o},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),o=new t.Vector,i=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,c=this,l=this.tokenStore.expand(e).reduce(function(n,i){var r=c.corpusTokens.indexOf(i),s=c.idf(i),l=1,u=new t.SortedSet;if(i!==e){var d=Math.max(3,i.length-e.length);l=1/Math.log(d)}r>-1&&o.insert(r,a*s*l);for(var h=c.tokenStore.get(i),f=Object.keys(h),p=f.length,m=0;p>m;m++)u.add(h[f[m]].ref);return n.union(u)},new t.SortedSet);i.push(l)},this);var a=i.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:o.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),o=n.length,i=new t.Vector,r=0;o>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,c=this.idf(s);i.insert(this.corpusTokens.indexOf(s),a*c)}return i},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,o){return n[o]=t.SortedSet.load(e.store[o]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",o="[aeiouy]",i=n+"[^aeiouy]*",r=o+"[aeiou]*",s="^("+i+")?"+r+i,a="^("+i+")?"+r+i+"("+r+")?$",c="^("+i+")?"+r+i+r+i,l="^("+i+")?"+o,u=new RegExp(s),d=new RegExp(c),h=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,y=/.$/,w=/(at|bl|iz)$/,S=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+i+o+"[^aeiouwxy]$"),E=/^(.+?[^aeiou])y$/,x=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,b=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,C=/^(.+?)(s|t)(ion)$/,L=/^(.+?)e$/,_=/ll$/,A=new RegExp("^"+i+o+"[^aeiouwxy]$"),O=function(n){var o,i,r,s,a,c,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=g,s.test(n)){var O=s.exec(n);s=u,s.test(O[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var O=a.exec(n);o=O[1],a=f,a.test(o)&&(n=o,a=w,c=S,l=k,a.test(n)?n+="e":c.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=E,s.test(n)){var O=s.exec(n);o=O[1],n=o+"i"}if(s=x,s.test(n)){var O=s.exec(n);o=O[1],i=O[2],s=u,s.test(o)&&(n=o+t[i])}if(s=b,s.test(n)){var O=s.exec(n);o=O[1],i=O[2],s=u,s.test(o)&&(n=o+e[i])}if(s=T,a=C,s.test(n)){var O=s.exec(n);o=O[1],s=d,s.test(o)&&(n=o)}else if(a.test(n)){var O=a.exec(n);o=O[1]+O[2],a=d,a.test(o)&&(n=o)}if(s=L,s.test(n)){var O=s.exec(n);o=O[1],s=d,a=h,c=A,(s.test(o)||a.test(o)&&!c.test(o))&&(n=o)}return s=_,a=d,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return O}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){return t&&e[t]!==t?t:void 0}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,o=t.charAt(0),i=t.slice(1);return o in n||(n[o]={docs:{}}),0===i.length?(n[o].docs[e.ref]=e,void(this.length+=1)):this.add(i,e,n[o])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;nt){for(;" "!=this[t]&&--t>0;);return this.substring(0,t)+"…"}return this},HTMLElement.prototype.wrap=function(t){t.length||(t=[t]);for(var e=t.length-1;e>=0;e--){var n=e>0?this.cloneNode(!0):this,o=t[e],i=o.parentNode,r=o.nextSibling;n.appendChild(o),r?i.insertBefore(n,r):i.appendChild(n)}},document.addEventListener("DOMContentLoaded",function(){"use strict";Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)}),Modernizr.addTest("standalone",function(){return!!navigator.standalone}),FastClick.attach(document.body);var t=document.getElementById("toggle-search"),e=(document.getElementById("reset-search"),document.querySelector(".drawer")),n=document.querySelectorAll(".anchor"),o=document.querySelector(".search .field"),i=document.querySelector(".query"),r=document.querySelector(".results .meta");Array.prototype.forEach.call(n,function(t){t.querySelector("a").addEventListener("click",function(){document.getElementById("toggle-drawer").checked=!1,document.body.classList.remove("toggle-drawer")})});var s=window.pageYOffset,a=function(){var t=window.pageYOffset+window.innerHeight,n=Math.max(0,window.innerHeight-e.offsetHeight);t>document.body.clientHeight-(96-n)?"absolute"!=e.style.position&&(e.style.position="absolute",e.style.top=null,e.style.bottom=0):e.offsetHeighte.offsetTop+e.offsetHeight?(e.style.position="fixed",e.style.top=null,e.style.bottom="-96px"):window.pageYOffsets?e.style.top&&(e.style.position="absolute",e.style.top=Math.max(0,s)+"px",e.style.bottom=null):e.style.bottom&&(e.style.position="absolute",e.style.top=t-e.offsetHeight+"px",e.style.bottom=null),s=Math.max(0,window.pageYOffset)},c=function(){var t=document.querySelector(".main");window.removeEventListener("scroll",a),matchMedia("only screen and (max-width: 959px)").matches?(e.style.position=null,e.style.top=null,e.style.bottom=null):e.offsetHeight+96o;o++)t1e4?n=(n/1e3).toFixed(0)+"k":n>1e3&&(n=(n/1e3).toFixed(1)+"k");var o=document.querySelector(".repo-stars .count");o.innerHTML=n},function(t,e){console.error(t,e.status)})}),"standalone"in window.navigator&&window.navigator.standalone){var node,remotes=!1;document.addEventListener("click",function(t){for(node=t.target;"A"!==node.nodeName&&"HTML"!==node.nodeName;)node=node.parentNode;"href"in node&&-1!==node.href.indexOf("http")&&(-1!==node.href.indexOf(document.location.host)||remotes)&&(t.preventDefault(),document.location.href=node.href)},!1)} \ No newline at end of file +!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-nav--toc .md-nav__item a");o.listen(),window.addEventListener("resize",t)})},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 diff --git a/material/assets/javascripts/modernizr-4ab42b99fd.js b/material/assets/javascripts/modernizr-4ab42b99fd.js deleted file mode 100644 index e82c90988..000000000 --- a/material/assets/javascripts/modernizr-4ab42b99fd.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t,n){function r(e,t){return typeof e===t}function i(){var e,t,n,i,o,a,s;for(var l in x)if(x.hasOwnProperty(l)){if(e=[],t=x[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;nf;f++)if(h=e[f],g=_.style[h],l(h,"-")&&(h=m(h)),_.style[h]!==n){if(o||r(i,"undefined"))return a(),"pfx"==t?h:!0;try{_.style[h]=i}catch(y){}if(_.style[h]!=g)return a(),"pfx"==t?h:!0}return a(),!1}function g(e,t,n){var i;for(var o in e)if(e[o]in t)return n===!1?e[o]:(i=t[e[o]],r(i,"function")?s(i,n||t):i);return!1}function v(e,t,n,i,o){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+P.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,i,o):(s=(e+" "+A.join(a+" ")+a).split(" "),g(s,t,n))}function y(e,t,r){return v(e,n,n,t,r)}var x=[],E={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){x.push({name:e,fn:t,options:n})},addAsyncTest:function(e){x.push({name:null,fn:e})}},S=function(){};S.prototype=E,S=new S;var b,w=[],C=t.documentElement,T="svg"===C.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;b=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),E._l={},E.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),S.hasOwnProperty(e)&&setTimeout(function(){S._trigger(e,S[e])},0)},E._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=C.elements;return"string"==typeof e?e.split(" "):e}function i(e,t){var n=C.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),C.elements=n+" "+e,u(t)}function o(e){var t=w[e[S]];return t||(t={},b++,e[S]=b,w[b]=t),t}function a(e,n,r){if(n||(n=t),g)return n.createElement(e);r||(r=o(n));var i;return i=r.cache[e]?r.cache[e].cloneNode():E.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!i.canHaveChildren||x.test(e)||i.tagUrn?i:r.frag.appendChild(i)}function s(e,n){if(e||(e=t),g)return e.createDocumentFragment();n=n||o(e);for(var i=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)i.createElement(s[a]);return i}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return C.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(C,t.frag)}function u(e){e||(e=t);var r=o(e);return!C.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),g||l(e,r),e}function c(e){for(var t,n=e.getElementsByTagName("*"),i=n.length,o=RegExp("^(?:"+r().join("|")+")$","i"),a=[];i--;)t=n[i],o.test(t.nodeName)&&a.push(t.applyElement(f(t)));return a}function f(e){for(var t,n=e.attributes,r=n.length,i=e.ownerDocument.createElement(N+":"+e.nodeName);r--;)t=n[r],t.specified&&i.setAttribute(t.nodeName,t.nodeValue);return i.style.cssText=e.style.cssText,i}function d(e){for(var t,n=e.split("{"),i=n.length,o=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+N+"\\:$2";i--;)t=n[i]=n[i].split("}"),t[t.length-1]=t[t.length-1].replace(o,a),n[i]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,i,a=o(e),s=e.namespaces,l=e.parentWindow;return!_||e.printShived?e:("undefined"==typeof s[N]&&s.add(N),l.attachEvent("onbeforeprint",function(){t();for(var o,a,s,l=e.styleSheets,u=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{o=s.imports,a=o.length}catch(m){a=0}for(f=0;a>f;f++)p.push(o[f]);try{u.push(s.cssText)}catch(m){}}u=d(u.reverse().join("")),i=c(e),r=n(e,u)}),l.attachEvent("onafterprint",function(){p(i),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,g,v="3.7.3",y=e.html5||{},x=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,E=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,S="_html5shiv",b=0,w={};!function(){try{var e=t.createElement("a");e.innerHTML="",h="hidden"in e,g=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,g=!0}}();var C={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:v,shivCSS:y.shivCSS!==!1,supportsUnknownElements:g,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:u,createElement:a,createDocumentFragment:s,addElements:i};e.html5=C,u(t);var T=/^$|\b(?:all|print)\b/,N="html5shiv",_=!g&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();C.type+=" print",C.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=C)}("undefined"!=typeof e?e:this,t);var N={elem:u("modernizr")};S._q.push(function(){delete N.elem});var _={style:N.elem.style};S._q.unshift(function(){delete _.style});var z=(E.testProp=function(e,t,r){return h([e],n,t,r)},function(){function e(e,t){var i;return e?(t&&"string"!=typeof t||(t=u(t||"div")),e="on"+e,i=e in t,!i&&r&&(t.setAttribute||(t=u("div")),t.setAttribute(e,""),i="function"==typeof t[e],t[e]!==n&&(t[e]=n),t.removeAttribute(e)),i):!1}var r=!("onblur"in t.documentElement);return e}());E.hasEvent=z,S.addTest("inputsearchevent",z("search"));var k=E.testStyles=f,$=function(){var e=navigator.userAgent,t=e.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),n=e.match(/w(eb)?osbrowser/gi),r=e.match(/windows phone/gi)&&e.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,i=533>t&&e.match(/android/gi);return n||i||r}();$?S.addTest("fontface",!1):k('@font-face {font-family:"font";src:url("https://")}',function(e,n){var r=t.getElementById("smodernizr"),i=r.sheet||r.styleSheet,o=i?i.cssRules&&i.cssRules[0]?i.cssRules[0].cssText:i.cssText||"":"",a=/src/i.test(o)&&0===o.indexOf(n.split(" ")[0]);S.addTest("fontface",a)});var j="Moz O ms Webkit",P=E._config.usePrefixes?j.split(" "):[];E._cssomPrefixes=P;var A=E._config.usePrefixes?j.toLowerCase().split(" "):[];E._domPrefixes=A,E.testAllProps=v,E.testAllProps=y;var R="CSS"in e&&"supports"in e.CSS,F="supportsCSS"in e;S.addTest("supports",R||F),S.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=S._config.usePrefixes;if(e&&(!t||"webkitPerspective"in C.style)){var n,r="#modernizr{width:0;height:0}";S.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",k(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),S.addTest("json","JSON"in e&&"parse"in JSON&&"stringify"in JSON),S.addTest("checked",function(){return k("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=u("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),S.addTest("target",function(){var t=e.document;if(!("querySelectorAll"in t))return!1;try{return t.querySelectorAll(":target"),!0}catch(n){return!1}}),S.addTest("contains",r(String.prototype.contains,"function")),i(),o(w),delete E.addTest,delete E.addAsyncTest;for(var M=0;M #mq-test-1 { width: 42px; }',r.insertBefore(o,i),n=42===a.offsetWidth,r.removeChild(o),{matches:n,media:e}}}(e.document)}(this),function(e){"use strict";function t(){E(!0)}var n={};e.respond=n,n.update=function(){};var r=[],i=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),o=function(e,t){var n=i();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))};if(n.ajax=o,n.queue=r,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var a,s,l,u=e.document,c=u.documentElement,f=[],d=[],p=[],m={},h=30,g=u.getElementsByTagName("head")[0]||c,v=u.getElementsByTagName("base")[0],y=g.getElementsByTagName("link"),x=function(){var e,t=u.createElement("div"),n=u.body,r=c.style.fontSize,i=n&&n.style.fontSize,o=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=o=u.createElement("body"),n.style.background="none"),c.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),o&&c.insertBefore(n,c.firstChild),e=t.offsetWidth,o?c.removeChild(n):n.removeChild(t),c.style.fontSize=r,i&&(n.style.fontSize=i),e=l=parseFloat(e)},E=function(t){var n="clientWidth",r=c[n],i="CSS1Compat"===u.compatMode&&r||u.body[n]||r,o={},m=y[y.length-1],v=(new Date).getTime();if(t&&a&&h>v-a)return e.clearTimeout(s),void(s=e.setTimeout(E,h));a=v;for(var S in f)if(f.hasOwnProperty(S)){var b=f[S],w=b.minw,C=b.maxw,T=null===w,N=null===C,_="em";w&&(w=parseFloat(w)*(w.indexOf(_)>-1?l||x():1)),C&&(C=parseFloat(C)*(C.indexOf(_)>-1?l||x():1)),b.hasquery&&(T&&N||!(T||i>=w)||!(N||C>=i))||(o[b.media]||(o[b.media]=[]),o[b.media].push(d[b.rules]))}for(var z in p)p.hasOwnProperty(z)&&p[z]&&p[z].parentNode===g&&g.removeChild(p[z]);p.length=0;for(var k in o)if(o.hasOwnProperty(k)){var $=u.createElement("style"),j=o[k].join("\n");$.type="text/css",$.media=k,g.insertBefore($,m.nextSibling),$.styleSheet?$.styleSheet.cssText=j:$.appendChild(u.createTextNode(j)),p.push($)}},S=function(e,t,r){var i=e.replace(n.regex.keyframes,"").match(n.regex.media),o=i&&i.length||0;t=t.substring(0,t.lastIndexOf("/"));var a=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},s=!o&&r;t.length&&(t+="/"),s&&(o=1);for(var l=0;o>l;l++){var u,c,p,m;s?(u=r,d.push(a(e))):(u=i[l].match(n.regex.findStyles)&&RegExp.$1,d.push(RegExp.$2&&a(RegExp.$2))),p=u.split(","),m=p.length;for(var h=0;m>h;h++)c=p[h],f.push({media:c.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:d.length-1,hasquery:c.indexOf("(")>-1,minw:c.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:c.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}E()},b=function(){if(r.length){var t=r.shift();o(t.href,function(n){S(n,t.href,t.media),m[t.href]=!0,e.setTimeout(function(){b()},0)})}},w=function(){for(var t=0;tu;u++)if(h=e[u],g=N.style[h],l(h,"-")&&(h=m(h)),N.style[h]!==n){if(i||r(o,"undefined"))return a(),"pfx"==t?h:!0;try{N.style[h]=o}catch(y){}if(N.style[h]!=g)return a(),"pfx"==t?h:!0}return a(),!1}function g(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?s(o,n||t):o);return!1}function v(e,t,n,o,i){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+z.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,o,i):(s=(e+" "+F.join(a+" ")+a).split(" "),g(s,t,n))}function y(e,t,r){return v(e,n,n,t,r)}var E=[],S={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){E.push({name:e,fn:t,options:n})},addAsyncTest:function(e){E.push({name:null,fn:e})}},b=function(){};b.prototype=S,b=new b;var w,C=[],x=t.documentElement,T="svg"===x.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;w=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),S._l={},S.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),b.hasOwnProperty(e)&&setTimeout(function(){b._trigger(e,b[e])},0)},S._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=x.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=x.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),x.elements=n+" "+e,c(t)}function i(e){var t=C[e[b]];return t||(t={},w++,e[b]=w,C[w]=t),t}function a(e,n,r){if(n||(n=t),g)return n.createElement(e);r||(r=i(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():S.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||E.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),g)return e.createDocumentFragment();n=n||i(e);for(var o=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)o.createElement(s[a]);return o}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return x.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(x,t.frag)}function c(e){e||(e=t);var r=i(e);return!x.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),g||l(e,r),e}function f(e){for(var t,n=e.getElementsByTagName("*"),o=n.length,i=RegExp("^(?:"+r().join("|")+")$","i"),a=[];o--;)t=n[o],i.test(t.nodeName)&&a.push(t.applyElement(u(t)));return a}function u(e){for(var t,n=e.attributes,r=n.length,o=e.ownerDocument.createElement(_+":"+e.nodeName);r--;)t=n[r],t.specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function d(e){for(var t,n=e.split("{"),o=n.length,i=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+_+"\\:$2";o--;)t=n[o]=n[o].split("}"),t[t.length-1]=t[t.length-1].replace(i,a),n[o]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,a=i(e),s=e.namespaces,l=e.parentWindow;return!N||e.printShived?e:("undefined"==typeof s[_]&&s.add(_),l.attachEvent("onbeforeprint",function(){t();for(var i,a,s,l=e.styleSheets,c=[],u=l.length,p=Array(u);u--;)p[u]=l[u];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(u=0;a>u;u++)p.push(i[u]);try{c.push(s.cssText)}catch(m){}}c=d(c.reverse().join("")),o=f(e),r=n(e,c)}),l.attachEvent("onafterprint",function(){p(o),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,g,v="3.7.3",y=e.html5||{},E=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,S=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,b="_html5shiv",w=0,C={};!function(){try{var e=t.createElement("a");e.innerHTML="",h="hidden"in e,g=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,g=!0}}();var x={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:v,shivCSS:y.shivCSS!==!1,supportsUnknownElements:g,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:c,createElement:a,createDocumentFragment:s,addElements:o};e.html5=x,c(t);var T=/^$|\b(?:all|print)\b/,_="html5shiv",N=!g&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();x.type+=" print",x.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=x)}("undefined"!=typeof e?e:this,t);var _={elem:c("modernizr")};b._q.push(function(){delete _.elem});var N={style:_.elem.style};b._q.unshift(function(){delete N.style});var j=(S.testProp=function(e,t,r){return h([e],n,t,r)},S.testStyles=u),P=function(){var e=navigator.userAgent,t=e.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),n=e.match(/w(eb)?osbrowser/gi),r=e.match(/windows phone/gi)&&e.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,o=533>t&&e.match(/android/gi);return n||o||r}();P?b.addTest("fontface",!1):j('@font-face {font-family:"font";src:url("https://")}',function(e,n){var r=t.getElementById("smodernizr"),o=r.sheet||r.styleSheet,i=o?o.cssRules&&o.cssRules[0]?o.cssRules[0].cssText:o.cssText||"":"",a=/src/i.test(i)&&0===i.indexOf(n.split(" ")[0]);b.addTest("fontface",a)});var k="Moz O ms Webkit",z=S._config.usePrefixes?k.split(" "):[];S._cssomPrefixes=z;var F=S._config.usePrefixes?k.toLowerCase().split(" "):[];S._domPrefixes=F,S.testAllProps=v,S.testAllProps=y;var $="CSS"in e&&"supports"in e.CSS,A="supportsCSS"in e;b.addTest("supports",$||A),b.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=b._config.usePrefixes;if(e&&(!t||"webkitPerspective"in x.style)){var n,r="#modernizr{width:0;height:0}";b.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",j(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),b.addTest("target",function(){var t=e.document;if(!("querySelectorAll"in t))return!1;try{return t.querySelectorAll(":target"),!0}catch(n){return!1}}),b.addTest("contains",r(String.prototype.contains,"function")),o(),i(C),delete S.addTest,delete S.addAsyncTest;for(var q=0;qf;f++)if(h=e[f],g=_.style[h],l(h,"-")&&(h=m(h)),_.style[h]!==n){if(o||r(i,"undefined"))return a(),"pfx"==t?h:!0;try{_.style[h]=i}catch(y){}if(_.style[h]!=g)return a(),"pfx"==t?h:!0}return a(),!1}function g(e,t,n){var i;for(var o in e)if(e[o]in t)return n===!1?e[o]:(i=t[e[o]],r(i,"function")?s(i,n||t):i);return!1}function v(e,t,n,i,o){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+P.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,i,o):(s=(e+" "+A.join(a+" ")+a).split(" "),g(s,t,n))}function y(e,t,r){return v(e,n,n,t,r)}var x=[],E={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){x.push({name:e,fn:t,options:n})},addAsyncTest:function(e){x.push({name:null,fn:e})}},S=function(){};S.prototype=E,S=new S;var b,w=[],C=t.documentElement,T="svg"===C.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;b=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),E._l={},E.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),S.hasOwnProperty(e)&&setTimeout(function(){S._trigger(e,S[e])},0)},E._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=C.elements;return"string"==typeof e?e.split(" "):e}function i(e,t){var n=C.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),C.elements=n+" "+e,u(t)}function o(e){var t=w[e[S]];return t||(t={},b++,e[S]=b,w[b]=t),t}function a(e,n,r){if(n||(n=t),g)return n.createElement(e);r||(r=o(n));var i;return i=r.cache[e]?r.cache[e].cloneNode():E.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!i.canHaveChildren||x.test(e)||i.tagUrn?i:r.frag.appendChild(i)}function s(e,n){if(e||(e=t),g)return e.createDocumentFragment();n=n||o(e);for(var i=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)i.createElement(s[a]);return i}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return C.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(C,t.frag)}function u(e){e||(e=t);var r=o(e);return!C.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),g||l(e,r),e}function c(e){for(var t,n=e.getElementsByTagName("*"),i=n.length,o=RegExp("^(?:"+r().join("|")+")$","i"),a=[];i--;)t=n[i],o.test(t.nodeName)&&a.push(t.applyElement(f(t)));return a}function f(e){for(var t,n=e.attributes,r=n.length,i=e.ownerDocument.createElement(N+":"+e.nodeName);r--;)t=n[r],t.specified&&i.setAttribute(t.nodeName,t.nodeValue);return i.style.cssText=e.style.cssText,i}function d(e){for(var t,n=e.split("{"),i=n.length,o=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+N+"\\:$2";i--;)t=n[i]=n[i].split("}"),t[t.length-1]=t[t.length-1].replace(o,a),n[i]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,i,a=o(e),s=e.namespaces,l=e.parentWindow;return!_||e.printShived?e:("undefined"==typeof s[N]&&s.add(N),l.attachEvent("onbeforeprint",function(){t();for(var o,a,s,l=e.styleSheets,u=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{o=s.imports,a=o.length}catch(m){a=0}for(f=0;a>f;f++)p.push(o[f]);try{u.push(s.cssText)}catch(m){}}u=d(u.reverse().join("")),i=c(e),r=n(e,u)}),l.attachEvent("onafterprint",function(){p(i),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,g,v="3.7.3",y=e.html5||{},x=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,E=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,S="_html5shiv",b=0,w={};!function(){try{var e=t.createElement("a");e.innerHTML="",h="hidden"in e,g=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,g=!0}}();var C={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:v,shivCSS:y.shivCSS!==!1,supportsUnknownElements:g,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:u,createElement:a,createDocumentFragment:s,addElements:i};e.html5=C,u(t);var T=/^$|\b(?:all|print)\b/,N="html5shiv",_=!g&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();C.type+=" print",C.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=C)}("undefined"!=typeof e?e:this,t);var N={elem:u("modernizr")};S._q.push(function(){delete N.elem});var _={style:N.elem.style};S._q.unshift(function(){delete _.style});var z=(E.testProp=function(e,t,r){return h([e],n,t,r)},function(){function e(e,t){var i;return e?(t&&"string"!=typeof t||(t=u(t||"div")),e="on"+e,i=e in t,!i&&r&&(t.setAttribute||(t=u("div")),t.setAttribute(e,""),i="function"==typeof t[e],t[e]!==n&&(t[e]=n),t.removeAttribute(e)),i):!1}var r=!("onblur"in t.documentElement);return e}());E.hasEvent=z,S.addTest("inputsearchevent",z("search"));var k=E.testStyles=f,$=function(){var e=navigator.userAgent,t=e.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),n=e.match(/w(eb)?osbrowser/gi),r=e.match(/windows phone/gi)&&e.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,i=533>t&&e.match(/android/gi);return n||i||r}();$?S.addTest("fontface",!1):k('@font-face {font-family:"font";src:url("https://")}',function(e,n){var r=t.getElementById("smodernizr"),i=r.sheet||r.styleSheet,o=i?i.cssRules&&i.cssRules[0]?i.cssRules[0].cssText:i.cssText||"":"",a=/src/i.test(o)&&0===o.indexOf(n.split(" ")[0]);S.addTest("fontface",a)});var j="Moz O ms Webkit",P=E._config.usePrefixes?j.split(" "):[];E._cssomPrefixes=P;var A=E._config.usePrefixes?j.toLowerCase().split(" "):[];E._domPrefixes=A,E.testAllProps=v,E.testAllProps=y;var R="CSS"in e&&"supports"in e.CSS,F="supportsCSS"in e;S.addTest("supports",R||F),S.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=S._config.usePrefixes;if(e&&(!t||"webkitPerspective"in C.style)){var n,r="#modernizr{width:0;height:0}";S.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",k(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),S.addTest("json","JSON"in e&&"parse"in JSON&&"stringify"in JSON),S.addTest("checked",function(){return k("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=u("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),S.addTest("target",function(){var t=e.document;if(!("querySelectorAll"in t))return!1;try{return t.querySelectorAll(":target"),!0}catch(n){return!1}}),S.addTest("contains",r(String.prototype.contains,"function")),i(),o(w),delete E.addTest,delete E.addAsyncTest;for(var M=0;M #mq-test-1 { width: 42px; }',r.insertBefore(o,i),n=42===a.offsetWidth,r.removeChild(o),{matches:n,media:e}}}(e.document)}(this),function(e){"use strict";function t(){E(!0)}var n={};e.respond=n,n.update=function(){};var r=[],i=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}(),o=function(e,t){var n=i();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))};if(n.ajax=o,n.queue=r,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var a,s,l,u=e.document,c=u.documentElement,f=[],d=[],p=[],m={},h=30,g=u.getElementsByTagName("head")[0]||c,v=u.getElementsByTagName("base")[0],y=g.getElementsByTagName("link"),x=function(){var e,t=u.createElement("div"),n=u.body,r=c.style.fontSize,i=n&&n.style.fontSize,o=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=o=u.createElement("body"),n.style.background="none"),c.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),o&&c.insertBefore(n,c.firstChild),e=t.offsetWidth,o?c.removeChild(n):n.removeChild(t),c.style.fontSize=r,i&&(n.style.fontSize=i),e=l=parseFloat(e)},E=function(t){var n="clientWidth",r=c[n],i="CSS1Compat"===u.compatMode&&r||u.body[n]||r,o={},m=y[y.length-1],v=(new Date).getTime();if(t&&a&&h>v-a)return e.clearTimeout(s),void(s=e.setTimeout(E,h));a=v;for(var S in f)if(f.hasOwnProperty(S)){var b=f[S],w=b.minw,C=b.maxw,T=null===w,N=null===C,_="em";w&&(w=parseFloat(w)*(w.indexOf(_)>-1?l||x():1)),C&&(C=parseFloat(C)*(C.indexOf(_)>-1?l||x():1)),b.hasquery&&(T&&N||!(T||i>=w)||!(N||C>=i))||(o[b.media]||(o[b.media]=[]),o[b.media].push(d[b.rules]))}for(var z in p)p.hasOwnProperty(z)&&p[z]&&p[z].parentNode===g&&g.removeChild(p[z]);p.length=0;for(var k in o)if(o.hasOwnProperty(k)){var $=u.createElement("style"),j=o[k].join("\n");$.type="text/css",$.media=k,g.insertBefore($,m.nextSibling),$.styleSheet?$.styleSheet.cssText=j:$.appendChild(u.createTextNode(j)),p.push($)}},S=function(e,t,r){var i=e.replace(n.regex.keyframes,"").match(n.regex.media),o=i&&i.length||0;t=t.substring(0,t.lastIndexOf("/"));var a=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},s=!o&&r;t.length&&(t+="/"),s&&(o=1);for(var l=0;o>l;l++){var u,c,p,m;s?(u=r,d.push(a(e))):(u=i[l].match(n.regex.findStyles)&&RegExp.$1,d.push(RegExp.$2&&a(RegExp.$2))),p=u.split(","),m=p.length;for(var h=0;m>h;h++)c=p[h],f.push({media:c.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:d.length-1,hasquery:c.indexOf("(")>-1,minw:c.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:c.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}E()},b=function(){if(r.length){var t=r.shift();o(t.href,function(n){S(n,t.href,t.media),m[t.href]=!0,e.setTimeout(function(){b()},0)})}},w=function(){for(var t=0;tu;u++)if(h=e[u],g=N.style[h],l(h,"-")&&(h=m(h)),N.style[h]!==n){if(i||r(o,"undefined"))return a(),"pfx"==t?h:!0;try{N.style[h]=o}catch(y){}if(N.style[h]!=g)return a(),"pfx"==t?h:!0}return a(),!1}function g(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?s(o,n||t):o);return!1}function v(e,t,n,o,i){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+z.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,o,i):(s=(e+" "+F.join(a+" ")+a).split(" "),g(s,t,n))}function y(e,t,r){return v(e,n,n,t,r)}var E=[],S={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){E.push({name:e,fn:t,options:n})},addAsyncTest:function(e){E.push({name:null,fn:e})}},b=function(){};b.prototype=S,b=new b;var w,C=[],x=t.documentElement,T="svg"===x.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;w=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),S._l={},S.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),b.hasOwnProperty(e)&&setTimeout(function(){b._trigger(e,b[e])},0)},S._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=x.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=x.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),x.elements=n+" "+e,c(t)}function i(e){var t=C[e[b]];return t||(t={},w++,e[b]=w,C[w]=t),t}function a(e,n,r){if(n||(n=t),g)return n.createElement(e);r||(r=i(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():S.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||E.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),g)return e.createDocumentFragment();n=n||i(e);for(var o=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)o.createElement(s[a]);return o}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return x.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(x,t.frag)}function c(e){e||(e=t);var r=i(e);return!x.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),g||l(e,r),e}function f(e){for(var t,n=e.getElementsByTagName("*"),o=n.length,i=RegExp("^(?:"+r().join("|")+")$","i"),a=[];o--;)t=n[o],i.test(t.nodeName)&&a.push(t.applyElement(u(t)));return a}function u(e){for(var t,n=e.attributes,r=n.length,o=e.ownerDocument.createElement(_+":"+e.nodeName);r--;)t=n[r],t.specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function d(e){for(var t,n=e.split("{"),o=n.length,i=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+_+"\\:$2";o--;)t=n[o]=n[o].split("}"),t[t.length-1]=t[t.length-1].replace(i,a),n[o]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,a=i(e),s=e.namespaces,l=e.parentWindow;return!N||e.printShived?e:("undefined"==typeof s[_]&&s.add(_),l.attachEvent("onbeforeprint",function(){t();for(var i,a,s,l=e.styleSheets,c=[],u=l.length,p=Array(u);u--;)p[u]=l[u];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(u=0;a>u;u++)p.push(i[u]);try{c.push(s.cssText)}catch(m){}}c=d(c.reverse().join("")),o=f(e),r=n(e,c)}),l.attachEvent("onafterprint",function(){p(o),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,g,v="3.7.3",y=e.html5||{},E=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,S=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,b="_html5shiv",w=0,C={};!function(){try{var e=t.createElement("a");e.innerHTML="",h="hidden"in e,g=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,g=!0}}();var x={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:v,shivCSS:y.shivCSS!==!1,supportsUnknownElements:g,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:c,createElement:a,createDocumentFragment:s,addElements:o};e.html5=x,c(t);var T=/^$|\b(?:all|print)\b/,_="html5shiv",N=!g&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();x.type+=" print",x.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=x)}("undefined"!=typeof e?e:this,t);var _={elem:c("modernizr")};b._q.push(function(){delete _.elem});var N={style:_.elem.style};b._q.unshift(function(){delete N.style});var j=(S.testProp=function(e,t,r){return h([e],n,t,r)},S.testStyles=u),P=function(){var e=navigator.userAgent,t=e.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),n=e.match(/w(eb)?osbrowser/gi),r=e.match(/windows phone/gi)&&e.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,o=533>t&&e.match(/android/gi);return n||o||r}();P?b.addTest("fontface",!1):j('@font-face {font-family:"font";src:url("https://")}',function(e,n){var r=t.getElementById("smodernizr"),o=r.sheet||r.styleSheet,i=o?o.cssRules&&o.cssRules[0]?o.cssRules[0].cssText:o.cssText||"":"",a=/src/i.test(i)&&0===i.indexOf(n.split(" ")[0]);b.addTest("fontface",a)});var k="Moz O ms Webkit",z=S._config.usePrefixes?k.split(" "):[];S._cssomPrefixes=z;var F=S._config.usePrefixes?k.toLowerCase().split(" "):[];S._domPrefixes=F,S.testAllProps=v,S.testAllProps=y;var $="CSS"in e&&"supports"in e.CSS,A="supportsCSS"in e;b.addTest("supports",$||A),b.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=b._config.usePrefixes;if(e&&(!t||"webkitPerspective"in x.style)){var n,r="#modernizr{width:0;height:0}";b.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",j(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),b.addTest("target",function(){var t=e.document;if(!("querySelectorAll"in t))return!1;try{return t.querySelectorAll(":target"),!0}catch(n){return!1}}),b.addTest("contains",r(String.prototype.contains,"function")),o(),i(C),delete S.addTest,delete S.addAsyncTest;for(var q=0;qli:before{content:"\e602";display:block;float:left;font-family:Icon;font-size:16px;width:1.2em;margin-left:-1.2em;vertical-align:-.1em}.article p>code{white-space:nowrap}.article hr{margin-top:1.5em}.article img{max-width:100%}.article pre{padding:16px;margin:1.5em -16px 0;line-height:1.5em;overflow:auto;-webkit-overflow-scrolling:touch}.article table{margin:3em 0 1.5em;font-size:13px}.no-js .article table{display:inline-block;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.article table th{min-width:100px;font-size:12px;text-align:left}.article table td,.article table th{padding:12px 16px;vertical-align:top}.article .data{margin:1.5em -16px;padding:1.5em 0;overflow:auto;-webkit-overflow-scrolling:touch;text-align:center}.article .data table{display:inline-block;margin:0 16px;text-align:left}.footer{position:absolute;bottom:0;left:0;right:0;padding:0 4px}.copyright{margin:1.5em 0}.pagination{max-width:1184px;height:92px;padding:4px 0;margin-left:auto;margin-right:auto;overflow:hidden}.pagination a{display:block;height:100%}.pagination .next,.pagination .previous{position:relative;float:left;height:100%}.pagination .previous{width:25%}.pagination .previous .direction,.pagination .previous .stretch{display:none}.pagination .next{width:75%;text-align:right}.pagination .page{display:table;position:absolute;bottom:4px}.pagination .direction{display:block;position:absolute;bottom:40px;width:100%;font-size:15px;line-height:20px;padding:0 52px}.pagination .stretch{padding:0 4px}.pagination .stretch .title{font-size:18px;padding:11px 0 13px}.admonition{margin:20px -16px 0;padding:20px 16px}.admonition>:first-child{margin-top:0}.admonition .admonition-title{font-size:20px}.admonition .admonition-title:before{content:"\e611";display:block;float:left;font-family:Icon;font-size:24px;vertical-align:-.1em;margin-right:5px}.admonition.warning .admonition-title:before{content:"\e610"}.article h3{font-weight:700}.article h4{font-weight:400;font-style:italic}.article h2 a,.article h3 a,.article h4 a,.article h5 a,.article h6 a{font-weight:400;font-style:normal}.bar{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .2s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),transform .4s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1)}#toggle-search:checked~.header .bar,.toggle-search .bar{-webkit-transform:translate3d(0,-56px,0);transform:translate3d(0,-56px,0)}.bar.search .button-reset{-webkit-transform:scale(.5);transform:scale(.5);-webkit-transition:opacity .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),transform .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);opacity:0}.bar.search.non-empty .button-reset{-webkit-transform:scale(1);transform:scale(1);opacity:1}.results{-webkit-transition:opacity .3s .1s,width 0s .4s,height 0s .4s;transition:opacity .3s .1s,width 0s .4s,height 0s .4s}#toggle-search:checked~.main .results,.toggle-search .results{-webkit-transition:opacity .4s,width 0s,height 0s;transition:opacity .4s,width 0s,height 0s}.results .list a{-webkit-transition:background .25s;transition:background .25s}.no-csstransforms3d .bar.default{display:table}.no-csstransforms3d .bar.search{display:none;margin-top:0}.no-csstransforms3d #toggle-search:checked~.header .bar.default,.no-csstransforms3d .toggle-search .bar.default{display:none}.no-csstransforms3d #toggle-search:checked~.header .bar.search,.no-csstransforms3d .toggle-search .bar.search{display:table}.bar.search{opacity:0}.bar.search .query{background:transparent;color:rgba(0,0,0,.87)}.bar.search .query::-webkit-input-placeholder{color:rgba(0,0,0,.26)}.bar.search .query:-moz-placeholder,.bar.search .query::-moz-placeholder{color:rgba(0,0,0,.26)}.bar.search .query:-ms-input-placeholder{color:rgba(0,0,0,.26)}.bar.search .button .icon:active{background:rgba(0,0,0,.12)}.results{box-shadow:0 4px 7px rgba(0,0,0,.23),0 8px 25px rgba(0,0,0,.05);background:#fff;color:rgba(0,0,0,.87);opacity:0}#toggle-search:checked~.main .results,.toggle-search .results{opacity:1}.results .meta{background:#e84e40;color:#fff}.results .list a{border-bottom:1px solid rgba(0,0,0,.12)}.results .list a:last-child{border-bottom:none}.results .list a:active{background:rgba(0,0,0,.12)}.result span{color:rgba(0,0,0,.54)}#toggle-search:checked~.header,.toggle-search .header{background:#fff;color:rgba(0,0,0,.54)}#toggle-search:checked~.header:before,.toggle-search .header:before{background:rgba(0,0,0,.54)}#toggle-search:checked~.header .bar.default,.toggle-search .header .bar.default{opacity:0}#toggle-search:checked~.header .bar.search,.toggle-search .header .bar.search{opacity:1}.bar.search{margin-top:8px}.bar.search .query{font-size:18px;padding:13px 0;margin:0;width:100%;height:48px}.bar.search .query::-ms-clear{display:none}.results{position:fixed;top:0;left:0;width:0;height:100%;z-index:1;overflow-y:scroll;-webkit-overflow-scrolling:touch}.results .scrollable{top:56px}#toggle-search:checked~.main .results,.toggle-search .results{width:100%;overflow-y:visible}.results .meta{font-weight:700}.results .meta strong{display:block;font-size:11px;max-width:1200px;margin-left:auto;margin-right:auto;padding:16px}.results .list a{display:block}.result{max-width:1200px;margin-left:auto;margin-right:auto;padding:12px 16px 16px}.result h1{line-height:24px}.result h1,.result span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.result span{font-size:12px}.no-csstransforms3d .results{display:none}.no-csstransforms3d #toggle-search:checked~.main .results,.no-csstransforms3d .toggle-search .results{display:block;overflow:auto}.meta{text-transform:uppercase;font-weight:700}@media only screen and (min-width:960px){.backdrop{background:#f2f2f2}.backdrop-paper:after{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05)}.button-menu{display:none}.drawer{float:left;height:auto;margin-bottom:96px;padding-top:80px}.drawer,.drawer .scrollable{position:static}.article{margin-left:262px}.footer{z-index:4}.copyright{margin-bottom:64px}.results{height:auto;top:64px}.results .scrollable{position:static;max-height:413px}}@media only screen and (max-width:959px){#toggle-drawer:checked~.overlay,.toggle-drawer .overlay{width:100%;height:100%}.drawer{-webkit-transform:translate3d(-262px,0,0);transform:translate3d(-262px,0,0);-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1)}.no-csstransforms3d .drawer{display:none}.drawer{background:#fff}.project{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);background:#e84e40;color:#fff}.drawer{position:fixed;z-index:4}#toggle-search:checked~.main .results,.drawer,.toggle-search .results{height:100%}}@media only screen and (min-width:720px){.header{height:64px;padding:8px}.header .stretch{padding:0 16px}.header .stretch .title{font-size:20px;padding:12px 0}.project .name{margin:26px 0 0 5px}.article .wrapper{padding:128px 24px 96px}.article .data{margin:1.5em -24px}.article .data table{margin:0 24px}.article h2{padding-top:100px;margin-top:-64px}.ios.standalone .article h2{padding-top:28px;margin-top:8px}.article h3,.article h4{padding-top:84px;margin-top:-64px}.ios.standalone .article h3,.ios.standalone .article h4{padding-top:20px;margin-top:0}.article pre{padding:1.5em 24px;margin:1.5em -24px 0}.footer{padding:0 8px}.pagination{height:96px;padding:8px 0}.pagination .direction{padding:0 56px;bottom:40px}.pagination .stretch{padding:0 8px}.admonition{margin:20px -24px 0;padding:20px 24px}.bar.search .query{font-size:20px;padding:12px 0}.results .scrollable{top:64px}.results .meta strong{padding:16px 24px}.result{padding:16px 24px 20px}}@media only screen and (min-width:1200px){.header{width:100%}.drawer .scrollable .wrapper hr{width:48px}}@media only screen and (orientation:portrait){.ios.standalone .header{height:76px;padding-top:24px}.ios.standalone .header:before{content:" ";position:absolute;top:0;left:0;z-index:3;width:100%;height:20px}.ios.standalone .drawer .scrollable{top:124px}.ios.standalone .project{padding-top:20px}.ios.standalone .project:before{content:" ";position:absolute;top:0;left:0;z-index:3;width:100%;height:20px}.ios.standalone .article{position:absolute;top:76px;right:0;bottom:0;left:0}.ios.standalone .results .scrollable{top:76px}}@media only screen and (orientation:portrait) and (min-width:720px){.ios.standalone .header{height:84px;padding-top:28px}.ios.standalone .results .scrollable{top:84px}}@media only screen and (max-width:719px){.bar .path{display:none}}@media only screen and (max-width:479px){.button-github,.button-twitter{display:none}}@media only screen and (min-width:720px) and (max-width:959px){.header .stretch{padding:0 24px}}@media only screen and (min-width:480px){.pagination .next,.pagination .previous{width:50%}.pagination .previous .direction{display:block}.pagination .previous .stretch{display:table}}@media print{.drawer,.footer,.header,.headerlink{display:none}.article .wrapper{padding-top:0}.article pre,.article pre *{color:rgba(0,0,0,.87)!important}.article pre{border:1px solid rgba(0,0,0,.12)}.article table{border-radius:none;box-shadow:none}.article table th{color:#e84e40}} \ No newline at end of file diff --git a/material/assets/stylesheets/application-fe75383308.css b/material/assets/stylesheets/application-fe75383308.css new file mode 100644 index 000000000..2077cd44f --- /dev/null +++ b/material/assets/stylesheets/application-fe75383308.css @@ -0,0 +1 @@ +.md-icon{font-family:Icon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-icon--search:before{content:"\e600"}.md-icon--back:before{content:"\e601"}.md-icon--link:before{content:"\e602"}.md-icon--close:before{content:"\e603"}.md-icon--menu:before{content:"\e604"}.md-icon--forward:before{content:"\e605"}.md-icon--twitter:before{content:"\e606"}.md-icon--github:before{content:"\e607"}.md-icon--download:before{content:"\e608"}.md-icon--star:before{content:"\e609"}.md-icon--warning:before{content:"\e610"}.md-icon--note:before{content:"\e611"}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{font-size:62.5%;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}a,abbr,acronym,address,article,aside,audio,b,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,main,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0}table{border-collapse:collapse;border-spacing:0}td,th{text-align:left;font-weight:400;vertical-align:top}button{padding:0;background:transparent;font-size:inherit}button,input{outline:0;border:0}input{-webkit-appearance:none;-moz-appearance:none;appearance:none}a{text-decoration:none;color:inherit}a,button,input,label{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}body,kbd{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,.no-fontface kbd{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code,pre{font-family:Roboto Mono,Courier New,Courier,monospace}.no-fontface code,.no-fontface pre{font-family:Courier New,Courier,monospace}.md-content--typeset{font-size:1.6rem;line-height:1.6}.md-content--typeset p{margin:2rem 0}.md-content--typeset h1{font-size:3.125rem;font-weight:300;line-height:1.3;letter-spacing:-.01em;color:rgba(0,0,0,.54)}.md-content--typeset h1:before{content:" ";display:block;padding-top:11rem;margin-top:-11rem}.md-content--typeset h2{font-size:2.5rem;font-weight:300;line-height:1.4;margin-top:4rem;letter-spacing:-.01em}.md-content--typeset h2:before{content:" ";display:block;padding-top:8.2rem;margin-top:-8.2rem}.md-content--typeset h3{font-size:2rem;font-weight:400;line-height:1.5;margin-top:3.2rem;letter-spacing:-.01em}.md-content--typeset h3:before{content:" ";display:block;padding-top:8.4rem;margin-top:-8.4rem}.md-content--typeset h2+h3{margin-top:1.6rem}.md-content--typeset h4{font-size:1.6rem;font-weight:700;margin-top:1.6rem;letter-spacing:-.01em}.md-content--typeset h4:before{position:relative;z-index:-4;content:" ";display:block;padding-top:8.8rem;margin-top:-8.8rem}.md-content--typeset h5,.md-content--typeset h6{font-size:1.28rem;font-weight:700;margin-top:1.6rem;letter-spacing:-.01em;color:rgba(0,0,0,.54)}.md-content--typeset h5:before,.md-content--typeset h6:before{position:relative;z-index:-5;content:" ";display:block;padding-top:9rem;margin-top:-9rem}.md-content--typeset h5{text-transform:uppercase}.md-content--typeset a{color:#3f51b5;-webkit-transition:color .125s;transition:color .125s}.md-content--typeset a:active,.md-content--typeset a:hover{color:#536dfe}.md-content--typeset code{font-size:85%;font-weight:400;word-break:break-word;padding:.1rem .4rem;background:#f7f7f7;color:#37474f}.md-content--typeset pre{font-size:85%;line-height:1.4;padding:1rem 1.2rem;overflow-x:scroll;background:#f7f7f7;color:#37474f}.md-content--typeset kbd{display:inline-block;font-size:85%;line-height:1rem;word-break:break-word;padding:.4rem .5rem .5rem;vertical-align:.1rem;color:#555;background-color:#fcfcfc;border:.1rem solid #ccc;border-bottom-color:#bbb;border-radius:.3rem;box-shadow:inset 0 -.1rem 0 #bbb}.md-content--typeset small{color:rgba(0,0,0,.54)}.md-content--typeset hr{margin:2.4rem 0;border-bottom:.1rem dotted rgba(0,0,0,.26)}.md-content--typeset blockquote{padding-left:1.2rem;border-left:.4rem solid rgba(0,0,0,.26);color:rgba(0,0,0,.54)}.md-content--typeset ul{list-style-type:disc}.md-content--typeset ol ol{list-style-type:lower-alpha}.md-content--typeset ol ol ol{list-style-type:lower-roman}.md-content--typeset ol,.md-content--typeset ul{margin-left:1rem}.md-content--typeset ol li,.md-content--typeset ul li{margin-bottom:1rem;margin-left:2rem}.md-content--typeset ol li:last-child,.md-content--typeset ul li:last-child{margin-bottom:0}.md-content--typeset ol li ol,.md-content--typeset ol li ul,.md-content--typeset ul li ol,.md-content--typeset ul li ul{padding-top:1rem;margin-bottom:1rem;margin-left:1rem}html{height:100%}body{position:relative;min-height:100%}hr{display:block;height:1px;padding:0;border:0}.md-grid{max-width:120rem;margin-left:auto;margin-right: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!important}.md-overlay{position:fixed;top:0;width:0;height:0;z-index:2;opacity:0;background:rgba(0,0,0,.54);-webkit-transition:opacity .25s,width 0s .25s,height 0s .25s;transition:opacity .25s,width 0s .25s,height 0s .25s}.md-flex{display:table}.md-flex__cell{display:table-cell;vertical-align:top}.md-flex__cell--shrink{width:1%}.md-flex__cell--stretch{display:table;table-layout:fixed;width:100%}.md-flex__ellipsis{display:table-cell;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-content__inner{margin:2.4rem 1.6rem}.md-content__copyright{display:block}.md-header{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);position:fixed;top:0;left:0;right:0;height:5.6rem;z-index:1;background:#3f51b5;color:#fff}.md-header-nav{padding:.4rem}.md-header-nav__icon{display:inline-block;font-size:2.4rem;padding:.8rem;margin:.4rem;cursor:pointer;border-radius:100%;-webkit-transition:background .25s;transition:background .25s}.md-header-nav__icon:active{background:hsla(0,0%,100%,.12)}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-footer{position:absolute;width:100%;bottom:0}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{overflow:auto;padding:.4rem}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem}.md-footer-nav__link--prev{float:left;width:25%}.md-footer-nav__link--next{float:right;width:75%;text-align:right}.md-footer-nav__icon{display:inline-block;font-size:2.4rem;padding:.8rem;margin:.4rem;cursor:pointer;border-radius:100%;-webkit-transition:background .25s;transition:background .25s}.md-footer-nav__icon:active{background:hsla(0,0%,100%,.12)}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;left:0;right:0;padding:0 .4rem;margin-top:-2rem;font-size:1.5rem;color:hsla(0,0%,100%,.7)}.md-nav,.md-nav h3{font-size:1.28rem;line-height:1.2}.md-nav--toc{border-left:.4rem solid #3f51b5}.md-nav__list{list-style:none}.md-nav__list .md-nav__list{margin-left:1.2rem}.md-nav__toggle~.md-nav__list{max-height:0;overflow:hidden}.md-nav__toggle:checked~.md-nav__list{max-height:100%}.md-nav__item{margin:.8rem 0 0;line-height:1.6rem}.md-nav__link{display:block;overflow:hidden;text-overflow:ellipsis;-webkit-transition:color .125s;transition:color .125s}.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-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;-webkit-overflow-scrolling:touch}.js .md-sidebar__scrollwrap{position:absolute;top:0;left:0;bottom:0;right:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-sidebar__inner{padding:1.2rem}.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{color:#000;background-color:#fdd}.code .gi,.codehilite .gi{color:#000;background-color:#dfd}.code .w,.codehilite .w{color:transparent}.md-content .headerlink{display:inline-block;margin-left:1rem;opacity:0;color:rgba(0,0,0,.26);-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:opacity .125s .25s,color .25s,-webkit-transform .25s .25s;transition:opacity .125s .25s,color .25s,-webkit-transform .25s .25s;transition:opacity .125s .25s,transform .25s .25s,color .25s;transition:opacity .125s .25s,transform .25s .25s,color .25s,-webkit-transform .25s .25s}.md-content h1:hover .headerlink,.md-content h2:hover .headerlink,.md-content h3:hover .headerlink,.md-content h4:hover .headerlink,.md-content h5:hover .headerlink,.md-content h6:hover .headerlink{margin-left:1rem;opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}.md-content h1:hover .headerlink:hover,.md-content h2:hover .headerlink:hover,.md-content h3:hover .headerlink:hover,.md-content h4:hover .headerlink:hover,.md-content h5:hover .headerlink:hover,.md-content h6:hover .headerlink:hover{color:#536dfe}@media only screen and (max-width:74.9375em){#md-toggle-drawer:checked~.md-overlay{width:100%;height:100%;opacity:1;-webkit-transition:opacity .25s,width 0s,height 0s;transition:opacity .25s,width 0s,height 0s}.md-sidebar--primary{position:fixed;top:0;width:24.2em;height:100%;z-index:3;background:#fff;-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1);-webkit-transform:translate3d(-24.2em,0,0);transform:translate3d(-24.2em,0,0)}.no-csstransforms3d .md-sidebar--primary{display:none}#md-toggle-drawer:checked~.md-container .md-sidebar--primary{-webkit-transform:translateZ(0);transform:translateZ(0)}.no-csstransforms3d #md-toggle-drawer:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{margin:0}}@media only screen and (min-width:60em){.md-content{margin-right:24.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-sidebar__inner{border-right:.1rem solid rgba(0,0,0,.07)}}@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 (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/assets/stylesheets/application.css b/material/assets/stylesheets/application.css index a7dfe1b40..2077cd44f 100644 --- a/material/assets/stylesheets/application.css +++ b/material/assets/stylesheets/application.css @@ -1 +1 @@ -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{font-size:62.5%;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,main,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0}ul{list-style:none}table{border-collapse:collapse;border-spacing:0}td{text-align:left;font-weight:400;vertical-align:middle}button{outline:0;padding:0;background:transparent;border:none;font-size:inherit}input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;appearance:none;outline:none;border:none}a{text-decoration:none;color:inherit}a,button,input,label{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}h1,h2,h3,h4,h5,h6{font-weight:inherit}pre{background:rgba(0,0,0,.05)}pre,pre code{color:rgba(0,0,0,.87)}.c,.c1,.cm,.o{color:rgba(0,0,0,.54)}.k,.kn{color:#a71d5d}.kd,.kt,.n.f{color:#0086b3}.s,.s1{color:#183691}.bp,.mi{color:#9575cd}.icon{font-family:Icon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-search:before{content:"\e600"}.icon-back:before{content:"\e601"}.icon-link:before{content:"\e602"}.icon-close:before{content:"\e603"}.icon-menu:before{content:"\e604"}.icon-forward:before{content:"\e605"}.icon-twitter:before{content:"\e606"}.icon-github:before{content:"\e607"}.icon-download:before{content:"\e608"}.icon-star:before{content:"\e609"}.icon-warning:before{content:"\e610"}.icon-note:before{content:"\e611"}a{-webkit-transition:color .25s;transition:color .25s}.overlay{-webkit-transition:opacity .25s,width 0s .25s,height 0s .25s;transition:opacity .25s,width 0s .25s,height 0s .25s}#toggle-drawer:checked~.overlay,.toggle-drawer .overlay{-webkit-transition:opacity .25s,width 0s,height 0s;transition:opacity .25s,width 0s,height 0s}.js .header{-webkit-transition:background .6s,color .6s;transition:background .6s,color .6s}.js .header:before{-webkit-transition:background .6s;transition:background .6s}.button .icon{-webkit-transition:background .25s;transition:background .25s}body{color:rgba(0,0,0,.87)}@supports (-webkit-appearance:none){body{background:#e84e40}}.ios body{background:#fff}hr{border:0;border-top:1px solid rgba(0,0,0,.12)}.toggle-button{cursor:pointer;color:inherit}.backdrop,.backdrop-paper:after{background:#fff}.overlay{background:rgba(0,0,0,.54);opacity:0}#toggle-drawer:checked~.overlay,.toggle-drawer .overlay{opacity:1}.header{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);background:#e84e40;color:#fff}.ios.standalone .header:before{background:rgba(0,0,0,.12)}.bar .path{color:hsla(0,0%,100%,.7)}.button .icon{border-radius:100%}.button .icon:active{background:hsla(0,0%,100%,.12)}html{height:100%}body{position:relative;min-height:100%}hr{display:block;height:1px;padding:0;margin:0}.locked{height:100%;overflow:hidden}.scrollable{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch}.scrollable .wrapper{height:100%}.ios .scrollable .wrapper{margin-bottom:2px}.toggle{display:none}.toggle-button{display:block}.backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.backdrop-paper{max-width:1200px;height:100%;margin-left:auto;margin-right:auto}.backdrop-paper:after{content:" ";display:block;height:100%;margin-left:262px}.overlay{width:0;height:0;z-index:3}.header,.overlay{position:fixed;top:0}.header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;left:0;z-index:2;height:56px;padding:4px;overflow:hidden}.ios.standalone .header{position:absolute}.bar{display:table;max-width:1184px;margin-left:auto;margin-right:auto}.bar a{display:block}.no-js .bar .button-search{display:none}.bar .path .icon:before{vertical-align:-1.5px}.button{display:table-cell;vertical-align:top;width:1%}.button button{margin:0;padding:0}.button button:active:before{position:relative;top:0;left:0}.button .icon{display:inline-block;font-size:24px;padding:8px;margin:4px}.stretch{display:table;table-layout:fixed;width:100%}.header .stretch{padding:0 20px}.stretch .title{display:table-cell;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.header .stretch .title{font-size:18px;padding:13px 0}.main{max-width:1200px;margin-left:auto;margin-right:auto}body,input{font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.no-fontface body,.no-fontface input,body,input{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.no-fontface code,.no-fontface pre,code,pre{font-family:Courier New,Courier,monospace}#toggle-drawer:checked~.main .drawer,.toggle-drawer .drawer{-webkit-transform:translateZ(0);transform:translateZ(0)}.no-csstransforms3d #toggle-drawer:checked~.main .drawer,.no-csstransforms3d .toggle-drawer .drawer{display:block}.project{-webkit-transition:none;transition:none}.project .logo img{-webkit-transition:box-shadow .4s;transition:box-shadow .4s}.repo a{-webkit-transition:box-shadow .4s,opacity .4s;transition:box-shadow .4s,opacity .4s}.drawer .toc a.current,.drawer .toc a:focus,.drawer .toc a:hover{color:#e84e40}.drawer .anchor a{border-left:2px solid #e84e40}.drawer .section{color:rgba(0,0,0,.54)}.ios.standalone .project:before{background:rgba(0,0,0,.12)}.project .logo img{background:#fff;border-radius:100%}.project:focus .logo img,.project:hover .logo img{box-shadow:0 4px 7px rgba(0,0,0,.23),0 8px 25px rgba(0,0,0,.05)}.repo a{background:#00bfa5;color:#fff;border-radius:3px}.repo a:focus,.repo a:hover{box-shadow:0 4px 7px rgba(0,0,0,.23),0 8px 25px rgba(0,0,0,.05);opacity:.8}.repo a .count{background:rgba(0,0,0,.26);color:#fff;border-radius:0 3px 3px 0}.repo a .count:before{border-width:15px 5px 15px 0;border-color:transparent rgba(0,0,0,.26);border-style:solid}.drawer{width:262px;font-size:13px;line-height:1em}.ios .drawer{overflow:scroll;-webkit-overflow-scrolling:touch}.drawer .toc li a{display:block;padding:14.5px 24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .toc li.anchor a{margin-left:12px;padding:10px 24px 10px 12px}.drawer .toc li ul{margin-left:12px}.drawer .current+ul{margin-bottom:9px}.drawer .section{display:block;padding:14.5px 24px}.drawer .scrollable{top:104px;z-index:-1}.drawer .scrollable .wrapper{height:auto;min-height:100%}.drawer .scrollable .wrapper hr{margin:12px 0;margin-right:auto}.drawer .scrollable .wrapper .toc{margin:12px 0}.project{display:block}.project .banner{display:table;width:100%;height:104px;padding:20px}.project .logo{display:table-cell;width:64px;padding-right:12px}.project .logo img{display:block;width:64px;height:64px}.project .name{display:table-cell;padding-left:4px;font-size:14px;line-height:1.25em;vertical-align:middle}.project .logo+.name{font-size:12px}.repo{margin:24px 0;text-align:center}.repo li{display:inline-block;padding-right:12px;white-space:nowrap}.repo li:last-child{padding-right:0}.repo a{display:inline-block;padding:0 10px 0 6px;font-size:12px;line-height:30px;height:30px}.repo a .icon{font-size:18px;vertical-align:-3px}.repo a .count{display:inline-block;position:relative;padding:0 8px 0 4px;margin:0 -10px 0 8px;font-size:12px}.repo a .count:before{content:" ";display:block;position:absolute;top:0;left:-5px}.no-js .repo a .count{display:none}.drawer .toc li a{font-weight:700}.drawer .toc li.anchor a{font-weight:400}.drawer .section,.repo a{font-weight:700}.repo a{text-transform:uppercase}.repo a .count{text-transform:none;font-weight:700}pre span{-webkit-transition:color .25s;transition:color .25s}.copyright a{-webkit-transition:color .25s;transition:color .25s}.ios.standalone .article{background:-webkit-linear-gradient(top,#fff 50%,#e84e40 0);background:linear-gradient(180deg,#fff 50%,#e84e40 0)}.ios.standalone .article .wrapper{background:-webkit-linear-gradient(top,#fff 50%,#fff 0);background:linear-gradient(180deg,#fff 50%,#fff 0)}.article a,.article code,.article h1,.article h2{color:#e84e40}.article h1{border-bottom:1px solid rgba(0,0,0,.12)}.article a{border-bottom:1px dotted}.article a:focus,.article a:hover{color:#00bfa5}.article .headerlink{color:rgba(0,0,0,.26);border:none}.article table{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);border-radius:3px}.article table th{background:#ee7a70;color:#fff}.article table th:first-child{border-top-left-radius:3px}.article table th:last-child{border-top-right-radius:3px}.article table td{border-top:1px solid rgba(0,0,0,.05)}.footer{background:#e84e40;color:#fff}.footer a{border:none}.copyright{color:rgba(0,0,0,.54)}.pagination a .button,.pagination a .title{color:#fff}.pagination .direction{color:hsla(0,0%,100%,.7)}.admonition{background:#29b6f6;color:#fff}.admonition pre{background:hsla(0,0%,100%,.3)}.admonition.warning{background:#e84e40}.admonition a,.admonition a:hover{color:#fff}.article{font-size:14px;line-height:1.7em}.article:after{content:" ";display:block;clear:both}.article .wrapper{padding:116px 16px 92px}.ios.standalone .article{position:absolute;top:56px;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch}.ios.standalone .article .wrapper{position:relative;min-height:100%;padding-top:60px;margin-bottom:2px}.article h1{font-size:24px;line-height:1.333334em;padding:20px 0 42px}.article h2{font-size:20px;line-height:1.4em;padding-top:92px;margin-top:-56px}.ios.standalone .article h2{padding-top:36px;margin:0}.article h3,.article h4{font-size:14px;padding-top:76px;margin-top:-56px}.ios.standalone .article h3,.ios.standalone .article h4{padding-top:20px;margin-top:0}.article .headerlink{float:right;margin-left:20px;font-size:14px}h1 .article .headerlink{display:none}.article ol,.article p,.article ul{margin-top:1.5em}.article li,.article li ol,.article li ul{margin-top:.75em}.article li{margin-left:18px}.article li p{display:inline}.article ul>li:before{content:"\e602";display:block;float:left;font-family:Icon;font-size:16px;width:1.2em;margin-left:-1.2em;vertical-align:-.1em}.article p>code{white-space:nowrap}.article hr{margin-top:1.5em}.article img{max-width:100%}.article pre{padding:16px;margin:1.5em -16px 0;line-height:1.5em;overflow:auto;-webkit-overflow-scrolling:touch}.article table{margin:3em 0 1.5em;font-size:13px}.no-js .article table{display:inline-block;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.article table th{min-width:100px;font-size:12px;text-align:left}.article table td,.article table th{padding:12px 16px;vertical-align:top}.article .data{margin:1.5em -16px;padding:1.5em 0;overflow:auto;-webkit-overflow-scrolling:touch;text-align:center}.article .data table{display:inline-block;margin:0 16px;text-align:left}.footer{position:absolute;bottom:0;left:0;right:0;padding:0 4px}.copyright{margin:1.5em 0}.pagination{max-width:1184px;height:92px;padding:4px 0;margin-left:auto;margin-right:auto;overflow:hidden}.pagination a{display:block;height:100%}.pagination .next,.pagination .previous{position:relative;float:left;height:100%}.pagination .previous{width:25%}.pagination .previous .direction,.pagination .previous .stretch{display:none}.pagination .next{width:75%;text-align:right}.pagination .page{display:table;position:absolute;bottom:4px}.pagination .direction{display:block;position:absolute;bottom:40px;width:100%;font-size:15px;line-height:20px;padding:0 52px}.pagination .stretch{padding:0 4px}.pagination .stretch .title{font-size:18px;padding:11px 0 13px}.admonition{margin:20px -16px 0;padding:20px 16px}.admonition>:first-child{margin-top:0}.admonition .admonition-title{font-size:20px}.admonition .admonition-title:before{content:"\e611";display:block;float:left;font-family:Icon;font-size:24px;vertical-align:-.1em;margin-right:5px}.admonition.warning .admonition-title:before{content:"\e610"}.article h3{font-weight:700}.article h4{font-weight:400;font-style:italic}.article h2 a,.article h3 a,.article h4 a,.article h5 a,.article h6 a{font-weight:400;font-style:normal}.bar{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .2s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),transform .4s cubic-bezier(.75,0,.25,1);transition:opacity .2s cubic-bezier(.75,0,.25,1),transform .4s cubic-bezier(.75,0,.25,1),-webkit-transform .4s cubic-bezier(.75,0,.25,1)}#toggle-search:checked~.header .bar,.toggle-search .bar{-webkit-transform:translate3d(0,-56px,0);transform:translate3d(0,-56px,0)}.bar.search .button-reset{-webkit-transform:scale(.5);transform:scale(.5);-webkit-transition:opacity .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),transform .4s cubic-bezier(.1,.7,.1,1);transition:opacity .4s cubic-bezier(.1,.7,.1,1),transform .4s cubic-bezier(.1,.7,.1,1),-webkit-transform .4s cubic-bezier(.1,.7,.1,1);opacity:0}.bar.search.non-empty .button-reset{-webkit-transform:scale(1);transform:scale(1);opacity:1}.results{-webkit-transition:opacity .3s .1s,width 0s .4s,height 0s .4s;transition:opacity .3s .1s,width 0s .4s,height 0s .4s}#toggle-search:checked~.main .results,.toggle-search .results{-webkit-transition:opacity .4s,width 0s,height 0s;transition:opacity .4s,width 0s,height 0s}.results .list a{-webkit-transition:background .25s;transition:background .25s}.no-csstransforms3d .bar.default{display:table}.no-csstransforms3d .bar.search{display:none;margin-top:0}.no-csstransforms3d #toggle-search:checked~.header .bar.default,.no-csstransforms3d .toggle-search .bar.default{display:none}.no-csstransforms3d #toggle-search:checked~.header .bar.search,.no-csstransforms3d .toggle-search .bar.search{display:table}.bar.search{opacity:0}.bar.search .query{background:transparent;color:rgba(0,0,0,.87)}.bar.search .query::-webkit-input-placeholder{color:rgba(0,0,0,.26)}.bar.search .query:-moz-placeholder,.bar.search .query::-moz-placeholder{color:rgba(0,0,0,.26)}.bar.search .query:-ms-input-placeholder{color:rgba(0,0,0,.26)}.bar.search .button .icon:active{background:rgba(0,0,0,.12)}.results{box-shadow:0 4px 7px rgba(0,0,0,.23),0 8px 25px rgba(0,0,0,.05);background:#fff;color:rgba(0,0,0,.87);opacity:0}#toggle-search:checked~.main .results,.toggle-search .results{opacity:1}.results .meta{background:#e84e40;color:#fff}.results .list a{border-bottom:1px solid rgba(0,0,0,.12)}.results .list a:last-child{border-bottom:none}.results .list a:active{background:rgba(0,0,0,.12)}.result span{color:rgba(0,0,0,.54)}#toggle-search:checked~.header,.toggle-search .header{background:#fff;color:rgba(0,0,0,.54)}#toggle-search:checked~.header:before,.toggle-search .header:before{background:rgba(0,0,0,.54)}#toggle-search:checked~.header .bar.default,.toggle-search .header .bar.default{opacity:0}#toggle-search:checked~.header .bar.search,.toggle-search .header .bar.search{opacity:1}.bar.search{margin-top:8px}.bar.search .query{font-size:18px;padding:13px 0;margin:0;width:100%;height:48px}.bar.search .query::-ms-clear{display:none}.results{position:fixed;top:0;left:0;width:0;height:100%;z-index:1;overflow-y:scroll;-webkit-overflow-scrolling:touch}.results .scrollable{top:56px}#toggle-search:checked~.main .results,.toggle-search .results{width:100%;overflow-y:visible}.results .meta{font-weight:700}.results .meta strong{display:block;font-size:11px;max-width:1200px;margin-left:auto;margin-right:auto;padding:16px}.results .list a{display:block}.result{max-width:1200px;margin-left:auto;margin-right:auto;padding:12px 16px 16px}.result h1{line-height:24px}.result h1,.result span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.result span{font-size:12px}.no-csstransforms3d .results{display:none}.no-csstransforms3d #toggle-search:checked~.main .results,.no-csstransforms3d .toggle-search .results{display:block;overflow:auto}.meta{text-transform:uppercase;font-weight:700}@media only screen and (min-width:960px){.backdrop{background:#f2f2f2}.backdrop-paper:after{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05)}.button-menu{display:none}.drawer{float:left;height:auto;margin-bottom:96px;padding-top:80px}.drawer,.drawer .scrollable{position:static}.article{margin-left:262px}.footer{z-index:4}.copyright{margin-bottom:64px}.results{height:auto;top:64px}.results .scrollable{position:static;max-height:413px}}@media only screen and (max-width:959px){#toggle-drawer:checked~.overlay,.toggle-drawer .overlay{width:100%;height:100%}.drawer{-webkit-transform:translate3d(-262px,0,0);transform:translate3d(-262px,0,0);-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1)}.no-csstransforms3d .drawer{display:none}.drawer{background:#fff}.project{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);background:#e84e40;color:#fff}.drawer{position:fixed;z-index:4}#toggle-search:checked~.main .results,.drawer,.toggle-search .results{height:100%}}@media only screen and (min-width:720px){.header{height:64px;padding:8px}.header .stretch{padding:0 16px}.header .stretch .title{font-size:20px;padding:12px 0}.project .name{margin:26px 0 0 5px}.article .wrapper{padding:128px 24px 96px}.article .data{margin:1.5em -24px}.article .data table{margin:0 24px}.article h2{padding-top:100px;margin-top:-64px}.ios.standalone .article h2{padding-top:28px;margin-top:8px}.article h3,.article h4{padding-top:84px;margin-top:-64px}.ios.standalone .article h3,.ios.standalone .article h4{padding-top:20px;margin-top:0}.article pre{padding:1.5em 24px;margin:1.5em -24px 0}.footer{padding:0 8px}.pagination{height:96px;padding:8px 0}.pagination .direction{padding:0 56px;bottom:40px}.pagination .stretch{padding:0 8px}.admonition{margin:20px -24px 0;padding:20px 24px}.bar.search .query{font-size:20px;padding:12px 0}.results .scrollable{top:64px}.results .meta strong{padding:16px 24px}.result{padding:16px 24px 20px}}@media only screen and (min-width:1200px){.header{width:100%}.drawer .scrollable .wrapper hr{width:48px}}@media only screen and (orientation:portrait){.ios.standalone .header{height:76px;padding-top:24px}.ios.standalone .header:before{content:" ";position:absolute;top:0;left:0;z-index:3;width:100%;height:20px}.ios.standalone .drawer .scrollable{top:124px}.ios.standalone .project{padding-top:20px}.ios.standalone .project:before{content:" ";position:absolute;top:0;left:0;z-index:3;width:100%;height:20px}.ios.standalone .article{position:absolute;top:76px;right:0;bottom:0;left:0}.ios.standalone .results .scrollable{top:76px}}@media only screen and (orientation:portrait) and (min-width:720px){.ios.standalone .header{height:84px;padding-top:28px}.ios.standalone .results .scrollable{top:84px}}@media only screen and (max-width:719px){.bar .path{display:none}}@media only screen and (max-width:479px){.button-github,.button-twitter{display:none}}@media only screen and (min-width:720px) and (max-width:959px){.header .stretch{padding:0 24px}}@media only screen and (min-width:480px){.pagination .next,.pagination .previous{width:50%}.pagination .previous .direction{display:block}.pagination .previous .stretch{display:table}}@media print{.drawer,.footer,.header,.headerlink{display:none}.article .wrapper{padding-top:0}.article pre,.article pre *{color:rgba(0,0,0,.87)!important}.article pre{border:1px solid rgba(0,0,0,.12)}.article table{border-radius:none;box-shadow:none}.article table th{color:#e84e40}} \ No newline at end of file +.md-icon{font-family:Icon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-icon--search:before{content:"\e600"}.md-icon--back:before{content:"\e601"}.md-icon--link:before{content:"\e602"}.md-icon--close:before{content:"\e603"}.md-icon--menu:before{content:"\e604"}.md-icon--forward:before{content:"\e605"}.md-icon--twitter:before{content:"\e606"}.md-icon--github:before{content:"\e607"}.md-icon--download:before{content:"\e608"}.md-icon--star:before{content:"\e609"}.md-icon--warning:before{content:"\e610"}.md-icon--note:before{content:"\e611"}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{font-size:62.5%;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}a,abbr,acronym,address,article,aside,audio,b,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,main,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0}table{border-collapse:collapse;border-spacing:0}td,th{text-align:left;font-weight:400;vertical-align:top}button{padding:0;background:transparent;font-size:inherit}button,input{outline:0;border:0}input{-webkit-appearance:none;-moz-appearance:none;appearance:none}a{text-decoration:none;color:inherit}a,button,input,label{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}body,kbd{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,.no-fontface kbd{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code,pre{font-family:Roboto Mono,Courier New,Courier,monospace}.no-fontface code,.no-fontface pre{font-family:Courier New,Courier,monospace}.md-content--typeset{font-size:1.6rem;line-height:1.6}.md-content--typeset p{margin:2rem 0}.md-content--typeset h1{font-size:3.125rem;font-weight:300;line-height:1.3;letter-spacing:-.01em;color:rgba(0,0,0,.54)}.md-content--typeset h1:before{content:" ";display:block;padding-top:11rem;margin-top:-11rem}.md-content--typeset h2{font-size:2.5rem;font-weight:300;line-height:1.4;margin-top:4rem;letter-spacing:-.01em}.md-content--typeset h2:before{content:" ";display:block;padding-top:8.2rem;margin-top:-8.2rem}.md-content--typeset h3{font-size:2rem;font-weight:400;line-height:1.5;margin-top:3.2rem;letter-spacing:-.01em}.md-content--typeset h3:before{content:" ";display:block;padding-top:8.4rem;margin-top:-8.4rem}.md-content--typeset h2+h3{margin-top:1.6rem}.md-content--typeset h4{font-size:1.6rem;font-weight:700;margin-top:1.6rem;letter-spacing:-.01em}.md-content--typeset h4:before{position:relative;z-index:-4;content:" ";display:block;padding-top:8.8rem;margin-top:-8.8rem}.md-content--typeset h5,.md-content--typeset h6{font-size:1.28rem;font-weight:700;margin-top:1.6rem;letter-spacing:-.01em;color:rgba(0,0,0,.54)}.md-content--typeset h5:before,.md-content--typeset h6:before{position:relative;z-index:-5;content:" ";display:block;padding-top:9rem;margin-top:-9rem}.md-content--typeset h5{text-transform:uppercase}.md-content--typeset a{color:#3f51b5;-webkit-transition:color .125s;transition:color .125s}.md-content--typeset a:active,.md-content--typeset a:hover{color:#536dfe}.md-content--typeset code{font-size:85%;font-weight:400;word-break:break-word;padding:.1rem .4rem;background:#f7f7f7;color:#37474f}.md-content--typeset pre{font-size:85%;line-height:1.4;padding:1rem 1.2rem;overflow-x:scroll;background:#f7f7f7;color:#37474f}.md-content--typeset kbd{display:inline-block;font-size:85%;line-height:1rem;word-break:break-word;padding:.4rem .5rem .5rem;vertical-align:.1rem;color:#555;background-color:#fcfcfc;border:.1rem solid #ccc;border-bottom-color:#bbb;border-radius:.3rem;box-shadow:inset 0 -.1rem 0 #bbb}.md-content--typeset small{color:rgba(0,0,0,.54)}.md-content--typeset hr{margin:2.4rem 0;border-bottom:.1rem dotted rgba(0,0,0,.26)}.md-content--typeset blockquote{padding-left:1.2rem;border-left:.4rem solid rgba(0,0,0,.26);color:rgba(0,0,0,.54)}.md-content--typeset ul{list-style-type:disc}.md-content--typeset ol ol{list-style-type:lower-alpha}.md-content--typeset ol ol ol{list-style-type:lower-roman}.md-content--typeset ol,.md-content--typeset ul{margin-left:1rem}.md-content--typeset ol li,.md-content--typeset ul li{margin-bottom:1rem;margin-left:2rem}.md-content--typeset ol li:last-child,.md-content--typeset ul li:last-child{margin-bottom:0}.md-content--typeset ol li ol,.md-content--typeset ol li ul,.md-content--typeset ul li ol,.md-content--typeset ul li ul{padding-top:1rem;margin-bottom:1rem;margin-left:1rem}html{height:100%}body{position:relative;min-height:100%}hr{display:block;height:1px;padding:0;border:0}.md-grid{max-width:120rem;margin-left:auto;margin-right: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!important}.md-overlay{position:fixed;top:0;width:0;height:0;z-index:2;opacity:0;background:rgba(0,0,0,.54);-webkit-transition:opacity .25s,width 0s .25s,height 0s .25s;transition:opacity .25s,width 0s .25s,height 0s .25s}.md-flex{display:table}.md-flex__cell{display:table-cell;vertical-align:top}.md-flex__cell--shrink{width:1%}.md-flex__cell--stretch{display:table;table-layout:fixed;width:100%}.md-flex__ellipsis{display:table-cell;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-content__inner{margin:2.4rem 1.6rem}.md-content__copyright{display:block}.md-header{box-shadow:0 1.5px 3px rgba(0,0,0,.24),0 3px 8px rgba(0,0,0,.05);position:fixed;top:0;left:0;right:0;height:5.6rem;z-index:1;background:#3f51b5;color:#fff}.md-header-nav{padding:.4rem}.md-header-nav__icon{display:inline-block;font-size:2.4rem;padding:.8rem;margin:.4rem;cursor:pointer;border-radius:100%;-webkit-transition:background .25s;transition:background .25s}.md-header-nav__icon:active{background:hsla(0,0%,100%,.12)}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-footer{position:absolute;width:100%;bottom:0}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{overflow:auto;padding:.4rem}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem}.md-footer-nav__link--prev{float:left;width:25%}.md-footer-nav__link--next{float:right;width:75%;text-align:right}.md-footer-nav__icon{display:inline-block;font-size:2.4rem;padding:.8rem;margin:.4rem;cursor:pointer;border-radius:100%;-webkit-transition:background .25s;transition:background .25s}.md-footer-nav__icon:active{background:hsla(0,0%,100%,.12)}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;left:0;right:0;padding:0 .4rem;margin-top:-2rem;font-size:1.5rem;color:hsla(0,0%,100%,.7)}.md-nav,.md-nav h3{font-size:1.28rem;line-height:1.2}.md-nav--toc{border-left:.4rem solid #3f51b5}.md-nav__list{list-style:none}.md-nav__list .md-nav__list{margin-left:1.2rem}.md-nav__toggle~.md-nav__list{max-height:0;overflow:hidden}.md-nav__toggle:checked~.md-nav__list{max-height:100%}.md-nav__item{margin:.8rem 0 0;line-height:1.6rem}.md-nav__link{display:block;overflow:hidden;text-overflow:ellipsis;-webkit-transition:color .125s;transition:color .125s}.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-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;-webkit-overflow-scrolling:touch}.js .md-sidebar__scrollwrap{position:absolute;top:0;left:0;bottom:0;right:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-sidebar__inner{padding:1.2rem}.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{color:#000;background-color:#fdd}.code .gi,.codehilite .gi{color:#000;background-color:#dfd}.code .w,.codehilite .w{color:transparent}.md-content .headerlink{display:inline-block;margin-left:1rem;opacity:0;color:rgba(0,0,0,.26);-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:opacity .125s .25s,color .25s,-webkit-transform .25s .25s;transition:opacity .125s .25s,color .25s,-webkit-transform .25s .25s;transition:opacity .125s .25s,transform .25s .25s,color .25s;transition:opacity .125s .25s,transform .25s .25s,color .25s,-webkit-transform .25s .25s}.md-content h1:hover .headerlink,.md-content h2:hover .headerlink,.md-content h3:hover .headerlink,.md-content h4:hover .headerlink,.md-content h5:hover .headerlink,.md-content h6:hover .headerlink{margin-left:1rem;opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}.md-content h1:hover .headerlink:hover,.md-content h2:hover .headerlink:hover,.md-content h3:hover .headerlink:hover,.md-content h4:hover .headerlink:hover,.md-content h5:hover .headerlink:hover,.md-content h6:hover .headerlink:hover{color:#536dfe}@media only screen and (max-width:74.9375em){#md-toggle-drawer:checked~.md-overlay{width:100%;height:100%;opacity:1;-webkit-transition:opacity .25s,width 0s,height 0s;transition:opacity .25s,width 0s,height 0s}.md-sidebar--primary{position:fixed;top:0;width:24.2em;height:100%;z-index:3;background:#fff;-webkit-transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),-webkit-transform .25s cubic-bezier(.4,0,.2,1);-webkit-transform:translate3d(-24.2em,0,0);transform:translate3d(-24.2em,0,0)}.no-csstransforms3d .md-sidebar--primary{display:none}#md-toggle-drawer:checked~.md-container .md-sidebar--primary{-webkit-transform:translateZ(0);transform:translateZ(0)}.no-csstransforms3d #md-toggle-drawer:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{margin:0}}@media only screen and (min-width:60em){.md-content{margin-right:24.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-sidebar__inner{border-right:.1rem solid rgba(0,0,0,.07)}}@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 (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/assets/stylesheets/palettes-05ab2406df.css b/material/assets/stylesheets/palettes-05ab2406df.css deleted file mode 100644 index ead0d849b..000000000 --- a/material/assets/stylesheets/palettes-05ab2406df.css +++ /dev/null @@ -1 +0,0 @@ -@supports (-webkit-appearance:none){.palette-primary-red{background:#e84e40}}.palette-primary-red .footer,.palette-primary-red .header{background:#e84e40}.palette-primary-red .drawer .toc a.current,.palette-primary-red .drawer .toc a:focus,.palette-primary-red .drawer .toc a:hover{color:#e84e40}.palette-primary-red .drawer .anchor a{border-left:2px solid #e84e40}.ios.standalone .palette-primary-red .article{background:-webkit-linear-gradient(top,#fff 50%,#e84e40 0);background:linear-gradient(180deg,#fff 50%,#e84e40 0)}.palette-primary-red .article a,.palette-primary-red .article code,.palette-primary-red .article h1,.palette-primary-red .article h2{color:#e84e40}.palette-primary-red .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-red .article table th{background:#ee7a70}.palette-primary-red .results .meta{background:#e84e40}@supports (-webkit-appearance:none){.palette-primary-pink{background:#e91e63}}.palette-primary-pink .footer,.palette-primary-pink .header{background:#e91e63}.palette-primary-pink .drawer .toc a.current,.palette-primary-pink .drawer .toc a:focus,.palette-primary-pink .drawer .toc a:hover{color:#e91e63}.palette-primary-pink .drawer .anchor a{border-left:2px solid #e91e63}.ios.standalone .palette-primary-pink .article{background:-webkit-linear-gradient(top,#fff 50%,#e91e63 0);background:linear-gradient(180deg,#fff 50%,#e91e63 0)}.palette-primary-pink .article a,.palette-primary-pink .article code,.palette-primary-pink .article h1,.palette-primary-pink .article h2{color:#e91e63}.palette-primary-pink .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-pink .article table th{background:#ef568a}.palette-primary-pink .results .meta{background:#e91e63}@supports (-webkit-appearance:none){.palette-primary-purple{background:#ab47bc}}.palette-primary-purple .footer,.palette-primary-purple .header{background:#ab47bc}.palette-primary-purple .drawer .toc a.current,.palette-primary-purple .drawer .toc a:focus,.palette-primary-purple .drawer .toc a:hover{color:#ab47bc}.palette-primary-purple .drawer .anchor a{border-left:2px solid #ab47bc}.ios.standalone .palette-primary-purple .article{background:-webkit-linear-gradient(top,#fff 50%,#ab47bc 0);background:linear-gradient(180deg,#fff 50%,#ab47bc 0)}.palette-primary-purple .article a,.palette-primary-purple .article code,.palette-primary-purple .article h1,.palette-primary-purple .article h2{color:#ab47bc}.palette-primary-purple .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-purple .article table th{background:#c075cd}.palette-primary-purple .results .meta{background:#ab47bc}@supports (-webkit-appearance:none){.palette-primary-deep-purple{background:#7e57c2}}.palette-primary-deep-purple .footer,.palette-primary-deep-purple .header{background:#7e57c2}.palette-primary-deep-purple .drawer .toc a.current,.palette-primary-deep-purple .drawer .toc a:focus,.palette-primary-deep-purple .drawer .toc a:hover{color:#7e57c2}.palette-primary-deep-purple .drawer .anchor a{border-left:2px solid #7e57c2}.ios.standalone .palette-primary-deep-purple .article{background:-webkit-linear-gradient(top,#fff 50%,#7e57c2 0);background:linear-gradient(180deg,#fff 50%,#7e57c2 0)}.palette-primary-deep-purple .article a,.palette-primary-deep-purple .article code,.palette-primary-deep-purple .article h1,.palette-primary-deep-purple .article h2{color:#7e57c2}.palette-primary-deep-purple .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-deep-purple .article table th{background:#9e81d1}.palette-primary-deep-purple .results .meta{background:#7e57c2}@supports (-webkit-appearance:none){.palette-primary-indigo{background:#3f51b5}}.palette-primary-indigo .footer,.palette-primary-indigo .header{background:#3f51b5}.palette-primary-indigo .drawer .toc a.current,.palette-primary-indigo .drawer .toc a:focus,.palette-primary-indigo .drawer .toc a:hover{color:#3f51b5}.palette-primary-indigo .drawer .anchor a{border-left:2px solid #3f51b5}.ios.standalone .palette-primary-indigo .article{background:-webkit-linear-gradient(top,#fff 50%,#3f51b5 0);background:linear-gradient(180deg,#fff 50%,#3f51b5 0)}.palette-primary-indigo .article a,.palette-primary-indigo .article code,.palette-primary-indigo .article h1,.palette-primary-indigo .article h2{color:#3f51b5}.palette-primary-indigo .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-indigo .article table th{background:#6f7dc8}.palette-primary-indigo .results .meta{background:#3f51b5}@supports (-webkit-appearance:none){.palette-primary-blue{background:#5677fc}}.palette-primary-blue .footer,.palette-primary-blue .header{background:#5677fc}.palette-primary-blue .drawer .toc a.current,.palette-primary-blue .drawer .toc a:focus,.palette-primary-blue .drawer .toc a:hover{color:#5677fc}.palette-primary-blue .drawer .anchor a{border-left:2px solid #5677fc}.ios.standalone .palette-primary-blue .article{background:-webkit-linear-gradient(top,#fff 50%,#5677fc 0);background:linear-gradient(180deg,#fff 50%,#5677fc 0)}.palette-primary-blue .article a,.palette-primary-blue .article code,.palette-primary-blue .article h1,.palette-primary-blue .article h2{color:#5677fc}.palette-primary-blue .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-blue .article table th{background:#8099fd}.palette-primary-blue .results .meta{background:#5677fc}@supports (-webkit-appearance:none){.palette-primary-light-blue{background:#03a9f4}}.palette-primary-light-blue .footer,.palette-primary-light-blue .header{background:#03a9f4}.palette-primary-light-blue .drawer .toc a.current,.palette-primary-light-blue .drawer .toc a:focus,.palette-primary-light-blue .drawer .toc a:hover{color:#03a9f4}.palette-primary-light-blue .drawer .anchor a{border-left:2px solid #03a9f4}.ios.standalone .palette-primary-light-blue .article{background:-webkit-linear-gradient(top,#fff 50%,#03a9f4 0);background:linear-gradient(180deg,#fff 50%,#03a9f4 0)}.palette-primary-light-blue .article a,.palette-primary-light-blue .article code,.palette-primary-light-blue .article h1,.palette-primary-light-blue .article h2{color:#03a9f4}.palette-primary-light-blue .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-light-blue .article table th{background:#42bff7}.palette-primary-light-blue .results .meta{background:#03a9f4}@supports (-webkit-appearance:none){.palette-primary-cyan{background:#00bcd4}}.palette-primary-cyan .footer,.palette-primary-cyan .header{background:#00bcd4}.palette-primary-cyan .drawer .toc a.current,.palette-primary-cyan .drawer .toc a:focus,.palette-primary-cyan .drawer .toc a:hover{color:#00bcd4}.palette-primary-cyan .drawer .anchor a{border-left:2px solid #00bcd4}.ios.standalone .palette-primary-cyan .article{background:-webkit-linear-gradient(top,#fff 50%,#00bcd4 0);background:linear-gradient(180deg,#fff 50%,#00bcd4 0)}.palette-primary-cyan .article a,.palette-primary-cyan .article code,.palette-primary-cyan .article h1,.palette-primary-cyan .article h2{color:#00bcd4}.palette-primary-cyan .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-cyan .article table th{background:#40cddf}.palette-primary-cyan .results .meta{background:#00bcd4}@supports (-webkit-appearance:none){.palette-primary-teal{background:#009688}}.palette-primary-teal .footer,.palette-primary-teal .header{background:#009688}.palette-primary-teal .drawer .toc a.current,.palette-primary-teal .drawer .toc a:focus,.palette-primary-teal .drawer .toc a:hover{color:#009688}.palette-primary-teal .drawer .anchor a{border-left:2px solid #009688}.ios.standalone .palette-primary-teal .article{background:-webkit-linear-gradient(top,#fff 50%,#009688 0);background:linear-gradient(180deg,#fff 50%,#009688 0)}.palette-primary-teal .article a,.palette-primary-teal .article code,.palette-primary-teal .article h1,.palette-primary-teal .article h2{color:#009688}.palette-primary-teal .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-teal .article table th{background:#40b0a6}.palette-primary-teal .results .meta{background:#009688}@supports (-webkit-appearance:none){.palette-primary-green{background:#259b24}}.palette-primary-green .footer,.palette-primary-green .header{background:#259b24}.palette-primary-green .drawer .toc a.current,.palette-primary-green .drawer .toc a:focus,.palette-primary-green .drawer .toc a:hover{color:#259b24}.palette-primary-green .drawer .anchor a{border-left:2px solid #259b24}.ios.standalone .palette-primary-green .article{background:-webkit-linear-gradient(top,#fff 50%,#259b24 0);background:linear-gradient(180deg,#fff 50%,#259b24 0)}.palette-primary-green .article a,.palette-primary-green .article code,.palette-primary-green .article h1,.palette-primary-green .article h2{color:#259b24}.palette-primary-green .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-green .article table th{background:#5cb45b}.palette-primary-green .results .meta{background:#259b24}@supports (-webkit-appearance:none){.palette-primary-light-green{background:#7cb342}}.palette-primary-light-green .footer,.palette-primary-light-green .header{background:#7cb342}.palette-primary-light-green .drawer .toc a.current,.palette-primary-light-green .drawer .toc a:focus,.palette-primary-light-green .drawer .toc a:hover{color:#7cb342}.palette-primary-light-green .drawer .anchor a{border-left:2px solid #7cb342}.ios.standalone .palette-primary-light-green .article{background:-webkit-linear-gradient(top,#fff 50%,#7cb342 0);background:linear-gradient(180deg,#fff 50%,#7cb342 0)}.palette-primary-light-green .article a,.palette-primary-light-green .article code,.palette-primary-light-green .article h1,.palette-primary-light-green .article h2{color:#7cb342}.palette-primary-light-green .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-light-green .article table th{background:#9dc671}.palette-primary-light-green .results .meta{background:#7cb342}@supports (-webkit-appearance:none){.palette-primary-lime{background:#c0ca33}}.palette-primary-lime .footer,.palette-primary-lime .header{background:#c0ca33}.palette-primary-lime .drawer .toc a.current,.palette-primary-lime .drawer .toc a:focus,.palette-primary-lime .drawer .toc a:hover{color:#c0ca33}.palette-primary-lime .drawer .anchor a{border-left:2px solid #c0ca33}.ios.standalone .palette-primary-lime .article{background:-webkit-linear-gradient(top,#fff 50%,#c0ca33 0);background:linear-gradient(180deg,#fff 50%,#c0ca33 0)}.palette-primary-lime .article a,.palette-primary-lime .article code,.palette-primary-lime .article h1,.palette-primary-lime .article h2{color:#c0ca33}.palette-primary-lime .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-lime .article table th{background:#d0d766}.palette-primary-lime .results .meta{background:#c0ca33}@supports (-webkit-appearance:none){.palette-primary-yellow{background:#f9a825}}.palette-primary-yellow .footer,.palette-primary-yellow .header{background:#f9a825}.palette-primary-yellow .drawer .toc a.current,.palette-primary-yellow .drawer .toc a:focus,.palette-primary-yellow .drawer .toc a:hover{color:#f9a825}.palette-primary-yellow .drawer .anchor a{border-left:2px solid #f9a825}.ios.standalone .palette-primary-yellow .article{background:-webkit-linear-gradient(top,#fff 50%,#f9a825 0);background:linear-gradient(180deg,#fff 50%,#f9a825 0)}.palette-primary-yellow .article a,.palette-primary-yellow .article code,.palette-primary-yellow .article h1,.palette-primary-yellow .article h2{color:#f9a825}.palette-primary-yellow .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-yellow .article table th{background:#fbbe5c}.palette-primary-yellow .results .meta{background:#f9a825}@supports (-webkit-appearance:none){.palette-primary-amber{background:#ffb300}}.palette-primary-amber .footer,.palette-primary-amber .header{background:#ffb300}.palette-primary-amber .drawer .toc a.current,.palette-primary-amber .drawer .toc a:focus,.palette-primary-amber .drawer .toc a:hover{color:#ffb300}.palette-primary-amber .drawer .anchor a{border-left:2px solid #ffb300}.ios.standalone .palette-primary-amber .article{background:-webkit-linear-gradient(top,#fff 50%,#ffb300 0);background:linear-gradient(180deg,#fff 50%,#ffb300 0)}.palette-primary-amber .article a,.palette-primary-amber .article code,.palette-primary-amber .article h1,.palette-primary-amber .article h2{color:#ffb300}.palette-primary-amber .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-amber .article table th{background:#ffc640}.palette-primary-amber .results .meta{background:#ffb300}@supports (-webkit-appearance:none){.palette-primary-orange{background:#fb8c00}}.palette-primary-orange .footer,.palette-primary-orange .header{background:#fb8c00}.palette-primary-orange .drawer .toc a.current,.palette-primary-orange .drawer .toc a:focus,.palette-primary-orange .drawer .toc a:hover{color:#fb8c00}.palette-primary-orange .drawer .anchor a{border-left:2px solid #fb8c00}.ios.standalone .palette-primary-orange .article{background:-webkit-linear-gradient(top,#fff 50%,#fb8c00 0);background:linear-gradient(180deg,#fff 50%,#fb8c00 0)}.palette-primary-orange .article a,.palette-primary-orange .article code,.palette-primary-orange .article h1,.palette-primary-orange .article h2{color:#fb8c00}.palette-primary-orange .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-orange .article table th{background:#fca940}.palette-primary-orange .results .meta{background:#fb8c00}@supports (-webkit-appearance:none){.palette-primary-deep-orange{background:#ff7043}}.palette-primary-deep-orange .footer,.palette-primary-deep-orange .header{background:#ff7043}.palette-primary-deep-orange .drawer .toc a.current,.palette-primary-deep-orange .drawer .toc a:focus,.palette-primary-deep-orange .drawer .toc a:hover{color:#ff7043}.palette-primary-deep-orange .drawer .anchor a{border-left:2px solid #ff7043}.ios.standalone .palette-primary-deep-orange .article{background:-webkit-linear-gradient(top,#fff 50%,#ff7043 0);background:linear-gradient(180deg,#fff 50%,#ff7043 0)}.palette-primary-deep-orange .article a,.palette-primary-deep-orange .article code,.palette-primary-deep-orange .article h1,.palette-primary-deep-orange .article h2{color:#ff7043}.palette-primary-deep-orange .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-deep-orange .article table th{background:#ff9472}.palette-primary-deep-orange .results .meta{background:#ff7043}@supports (-webkit-appearance:none){.palette-primary-brown{background:#795548}}.palette-primary-brown .footer,.palette-primary-brown .header{background:#795548}.palette-primary-brown .drawer .toc a.current,.palette-primary-brown .drawer .toc a:focus,.palette-primary-brown .drawer .toc a:hover{color:#795548}.palette-primary-brown .drawer .anchor a{border-left:2px solid #795548}.ios.standalone .palette-primary-brown .article{background:-webkit-linear-gradient(top,#fff 50%,#795548 0);background:linear-gradient(180deg,#fff 50%,#795548 0)}.palette-primary-brown .article a,.palette-primary-brown .article code,.palette-primary-brown .article h1,.palette-primary-brown .article h2{color:#795548}.palette-primary-brown .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-brown .article table th{background:#9b8076}.palette-primary-brown .results .meta{background:#795548}@supports (-webkit-appearance:none){.palette-primary-grey{background:#757575}}.palette-primary-grey .footer,.palette-primary-grey .header{background:#757575}.palette-primary-grey .drawer .toc a.current,.palette-primary-grey .drawer .toc a:focus,.palette-primary-grey .drawer .toc a:hover{color:#757575}.palette-primary-grey .drawer .anchor a{border-left:2px solid #757575}.ios.standalone .palette-primary-grey .article{background:-webkit-linear-gradient(top,#fff 50%,#757575 0);background:linear-gradient(180deg,#fff 50%,#757575 0)}.palette-primary-grey .article a,.palette-primary-grey .article code,.palette-primary-grey .article h1,.palette-primary-grey .article h2{color:#757575}.palette-primary-grey .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-grey .article table th{background:#989898}.palette-primary-grey .results .meta{background:#757575}@supports (-webkit-appearance:none){.palette-primary-blue-grey{background:#546e7a}}.palette-primary-blue-grey .footer,.palette-primary-blue-grey .header{background:#546e7a}.palette-primary-blue-grey .drawer .toc a.current,.palette-primary-blue-grey .drawer .toc a:focus,.palette-primary-blue-grey .drawer .toc a:hover{color:#546e7a}.palette-primary-blue-grey .drawer .anchor a{border-left:2px solid #546e7a}.ios.standalone .palette-primary-blue-grey .article{background:-webkit-linear-gradient(top,#fff 50%,#546e7a 0);background:linear-gradient(180deg,#fff 50%,#546e7a 0)}.palette-primary-blue-grey .article a,.palette-primary-blue-grey .article code,.palette-primary-blue-grey .article h1,.palette-primary-blue-grey .article h2{color:#546e7a}.palette-primary-blue-grey .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-blue-grey .article table th{background:#7f929b}.palette-primary-blue-grey .results .meta{background:#546e7a}.palette-accent-red .article a:focus,.palette-accent-red .article a:hover{color:#ff2d6f}.palette-accent-red .repo a{background:#ff2d6f}.palette-accent-pink .article a:focus,.palette-accent-pink .article a:hover{color:#f50057}.palette-accent-pink .repo a{background:#f50057}.palette-accent-purple .article a:focus,.palette-accent-purple .article a:hover{color:#e040fb}.palette-accent-purple .repo a{background:#e040fb}.palette-accent-deep-purple .article a:focus,.palette-accent-deep-purple .article a:hover{color:#7c4dff}.palette-accent-deep-purple .repo a{background:#7c4dff}.palette-accent-indigo .article a:focus,.palette-accent-indigo .article a:hover{color:#536dfe}.palette-accent-indigo .repo a{background:#536dfe}.palette-accent-blue .article a:focus,.palette-accent-blue .article a:hover{color:#6889ff}.palette-accent-blue .repo a{background:#6889ff}.palette-accent-light-blue .article a:focus,.palette-accent-light-blue .article a:hover{color:#0091ea}.palette-accent-light-blue .repo a{background:#0091ea}.palette-accent-cyan .article a:focus,.palette-accent-cyan .article a:hover{color:#00b8d4}.palette-accent-cyan .repo a{background:#00b8d4}.palette-accent-teal .article a:focus,.palette-accent-teal .article a:hover{color:#00bfa5}.palette-accent-teal .repo a{background:#00bfa5}.palette-accent-green .article a:focus,.palette-accent-green .article a:hover{color:#12c700}.palette-accent-green .repo a{background:#12c700}.palette-accent-light-green .article a:focus,.palette-accent-light-green .article a:hover{color:#64dd17}.palette-accent-light-green .repo a{background:#64dd17}.palette-accent-lime .article a:focus,.palette-accent-lime .article a:hover{color:#aeea00}.palette-accent-lime .repo a{background:#aeea00}.palette-accent-yellow .article a:focus,.palette-accent-yellow .article a:hover{color:#ffd600}.palette-accent-yellow .repo a{background:#ffd600}.palette-accent-amber .article a:focus,.palette-accent-amber .article a:hover{color:#ffab00}.palette-accent-amber .repo a{background:#ffab00}.palette-accent-orange .article a:focus,.palette-accent-orange .article a:hover{color:#ff9100}.palette-accent-orange .repo a{background:#ff9100}.palette-accent-deep-orange .article a:focus,.palette-accent-deep-orange .article a:hover{color:#ff6e40}.palette-accent-deep-orange .repo a{background:#ff6e40}@media only screen and (max-width:959px){.palette-primary-red .project{background:#e84e40}.palette-primary-pink .project{background:#e91e63}.palette-primary-purple .project{background:#ab47bc}.palette-primary-deep-purple .project{background:#7e57c2}.palette-primary-indigo .project{background:#3f51b5}.palette-primary-blue .project{background:#5677fc}.palette-primary-light-blue .project{background:#03a9f4}.palette-primary-cyan .project{background:#00bcd4}.palette-primary-teal .project{background:#009688}.palette-primary-green .project{background:#259b24}.palette-primary-light-green .project{background:#7cb342}.palette-primary-lime .project{background:#c0ca33}.palette-primary-yellow .project{background:#f9a825}.palette-primary-amber .project{background:#ffb300}.palette-primary-orange .project{background:#fb8c00}.palette-primary-deep-orange .project{background:#ff7043}.palette-primary-brown .project{background:#795548}.palette-primary-grey .project{background:#757575}.palette-primary-blue-grey .project{background:#546e7a}} \ No newline at end of file diff --git a/material/assets/stylesheets/palettes.css b/material/assets/stylesheets/palettes.css deleted file mode 100644 index ead0d849b..000000000 --- a/material/assets/stylesheets/palettes.css +++ /dev/null @@ -1 +0,0 @@ -@supports (-webkit-appearance:none){.palette-primary-red{background:#e84e40}}.palette-primary-red .footer,.palette-primary-red .header{background:#e84e40}.palette-primary-red .drawer .toc a.current,.palette-primary-red .drawer .toc a:focus,.palette-primary-red .drawer .toc a:hover{color:#e84e40}.palette-primary-red .drawer .anchor a{border-left:2px solid #e84e40}.ios.standalone .palette-primary-red .article{background:-webkit-linear-gradient(top,#fff 50%,#e84e40 0);background:linear-gradient(180deg,#fff 50%,#e84e40 0)}.palette-primary-red .article a,.palette-primary-red .article code,.palette-primary-red .article h1,.palette-primary-red .article h2{color:#e84e40}.palette-primary-red .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-red .article table th{background:#ee7a70}.palette-primary-red .results .meta{background:#e84e40}@supports (-webkit-appearance:none){.palette-primary-pink{background:#e91e63}}.palette-primary-pink .footer,.palette-primary-pink .header{background:#e91e63}.palette-primary-pink .drawer .toc a.current,.palette-primary-pink .drawer .toc a:focus,.palette-primary-pink .drawer .toc a:hover{color:#e91e63}.palette-primary-pink .drawer .anchor a{border-left:2px solid #e91e63}.ios.standalone .palette-primary-pink .article{background:-webkit-linear-gradient(top,#fff 50%,#e91e63 0);background:linear-gradient(180deg,#fff 50%,#e91e63 0)}.palette-primary-pink .article a,.palette-primary-pink .article code,.palette-primary-pink .article h1,.palette-primary-pink .article h2{color:#e91e63}.palette-primary-pink .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-pink .article table th{background:#ef568a}.palette-primary-pink .results .meta{background:#e91e63}@supports (-webkit-appearance:none){.palette-primary-purple{background:#ab47bc}}.palette-primary-purple .footer,.palette-primary-purple .header{background:#ab47bc}.palette-primary-purple .drawer .toc a.current,.palette-primary-purple .drawer .toc a:focus,.palette-primary-purple .drawer .toc a:hover{color:#ab47bc}.palette-primary-purple .drawer .anchor a{border-left:2px solid #ab47bc}.ios.standalone .palette-primary-purple .article{background:-webkit-linear-gradient(top,#fff 50%,#ab47bc 0);background:linear-gradient(180deg,#fff 50%,#ab47bc 0)}.palette-primary-purple .article a,.palette-primary-purple .article code,.palette-primary-purple .article h1,.palette-primary-purple .article h2{color:#ab47bc}.palette-primary-purple .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-purple .article table th{background:#c075cd}.palette-primary-purple .results .meta{background:#ab47bc}@supports (-webkit-appearance:none){.palette-primary-deep-purple{background:#7e57c2}}.palette-primary-deep-purple .footer,.palette-primary-deep-purple .header{background:#7e57c2}.palette-primary-deep-purple .drawer .toc a.current,.palette-primary-deep-purple .drawer .toc a:focus,.palette-primary-deep-purple .drawer .toc a:hover{color:#7e57c2}.palette-primary-deep-purple .drawer .anchor a{border-left:2px solid #7e57c2}.ios.standalone .palette-primary-deep-purple .article{background:-webkit-linear-gradient(top,#fff 50%,#7e57c2 0);background:linear-gradient(180deg,#fff 50%,#7e57c2 0)}.palette-primary-deep-purple .article a,.palette-primary-deep-purple .article code,.palette-primary-deep-purple .article h1,.palette-primary-deep-purple .article h2{color:#7e57c2}.palette-primary-deep-purple .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-deep-purple .article table th{background:#9e81d1}.palette-primary-deep-purple .results .meta{background:#7e57c2}@supports (-webkit-appearance:none){.palette-primary-indigo{background:#3f51b5}}.palette-primary-indigo .footer,.palette-primary-indigo .header{background:#3f51b5}.palette-primary-indigo .drawer .toc a.current,.palette-primary-indigo .drawer .toc a:focus,.palette-primary-indigo .drawer .toc a:hover{color:#3f51b5}.palette-primary-indigo .drawer .anchor a{border-left:2px solid #3f51b5}.ios.standalone .palette-primary-indigo .article{background:-webkit-linear-gradient(top,#fff 50%,#3f51b5 0);background:linear-gradient(180deg,#fff 50%,#3f51b5 0)}.palette-primary-indigo .article a,.palette-primary-indigo .article code,.palette-primary-indigo .article h1,.palette-primary-indigo .article h2{color:#3f51b5}.palette-primary-indigo .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-indigo .article table th{background:#6f7dc8}.palette-primary-indigo .results .meta{background:#3f51b5}@supports (-webkit-appearance:none){.palette-primary-blue{background:#5677fc}}.palette-primary-blue .footer,.palette-primary-blue .header{background:#5677fc}.palette-primary-blue .drawer .toc a.current,.palette-primary-blue .drawer .toc a:focus,.palette-primary-blue .drawer .toc a:hover{color:#5677fc}.palette-primary-blue .drawer .anchor a{border-left:2px solid #5677fc}.ios.standalone .palette-primary-blue .article{background:-webkit-linear-gradient(top,#fff 50%,#5677fc 0);background:linear-gradient(180deg,#fff 50%,#5677fc 0)}.palette-primary-blue .article a,.palette-primary-blue .article code,.palette-primary-blue .article h1,.palette-primary-blue .article h2{color:#5677fc}.palette-primary-blue .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-blue .article table th{background:#8099fd}.palette-primary-blue .results .meta{background:#5677fc}@supports (-webkit-appearance:none){.palette-primary-light-blue{background:#03a9f4}}.palette-primary-light-blue .footer,.palette-primary-light-blue .header{background:#03a9f4}.palette-primary-light-blue .drawer .toc a.current,.palette-primary-light-blue .drawer .toc a:focus,.palette-primary-light-blue .drawer .toc a:hover{color:#03a9f4}.palette-primary-light-blue .drawer .anchor a{border-left:2px solid #03a9f4}.ios.standalone .palette-primary-light-blue .article{background:-webkit-linear-gradient(top,#fff 50%,#03a9f4 0);background:linear-gradient(180deg,#fff 50%,#03a9f4 0)}.palette-primary-light-blue .article a,.palette-primary-light-blue .article code,.palette-primary-light-blue .article h1,.palette-primary-light-blue .article h2{color:#03a9f4}.palette-primary-light-blue .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-light-blue .article table th{background:#42bff7}.palette-primary-light-blue .results .meta{background:#03a9f4}@supports (-webkit-appearance:none){.palette-primary-cyan{background:#00bcd4}}.palette-primary-cyan .footer,.palette-primary-cyan .header{background:#00bcd4}.palette-primary-cyan .drawer .toc a.current,.palette-primary-cyan .drawer .toc a:focus,.palette-primary-cyan .drawer .toc a:hover{color:#00bcd4}.palette-primary-cyan .drawer .anchor a{border-left:2px solid #00bcd4}.ios.standalone .palette-primary-cyan .article{background:-webkit-linear-gradient(top,#fff 50%,#00bcd4 0);background:linear-gradient(180deg,#fff 50%,#00bcd4 0)}.palette-primary-cyan .article a,.palette-primary-cyan .article code,.palette-primary-cyan .article h1,.palette-primary-cyan .article h2{color:#00bcd4}.palette-primary-cyan .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-cyan .article table th{background:#40cddf}.palette-primary-cyan .results .meta{background:#00bcd4}@supports (-webkit-appearance:none){.palette-primary-teal{background:#009688}}.palette-primary-teal .footer,.palette-primary-teal .header{background:#009688}.palette-primary-teal .drawer .toc a.current,.palette-primary-teal .drawer .toc a:focus,.palette-primary-teal .drawer .toc a:hover{color:#009688}.palette-primary-teal .drawer .anchor a{border-left:2px solid #009688}.ios.standalone .palette-primary-teal .article{background:-webkit-linear-gradient(top,#fff 50%,#009688 0);background:linear-gradient(180deg,#fff 50%,#009688 0)}.palette-primary-teal .article a,.palette-primary-teal .article code,.palette-primary-teal .article h1,.palette-primary-teal .article h2{color:#009688}.palette-primary-teal .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-teal .article table th{background:#40b0a6}.palette-primary-teal .results .meta{background:#009688}@supports (-webkit-appearance:none){.palette-primary-green{background:#259b24}}.palette-primary-green .footer,.palette-primary-green .header{background:#259b24}.palette-primary-green .drawer .toc a.current,.palette-primary-green .drawer .toc a:focus,.palette-primary-green .drawer .toc a:hover{color:#259b24}.palette-primary-green .drawer .anchor a{border-left:2px solid #259b24}.ios.standalone .palette-primary-green .article{background:-webkit-linear-gradient(top,#fff 50%,#259b24 0);background:linear-gradient(180deg,#fff 50%,#259b24 0)}.palette-primary-green .article a,.palette-primary-green .article code,.palette-primary-green .article h1,.palette-primary-green .article h2{color:#259b24}.palette-primary-green .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-green .article table th{background:#5cb45b}.palette-primary-green .results .meta{background:#259b24}@supports (-webkit-appearance:none){.palette-primary-light-green{background:#7cb342}}.palette-primary-light-green .footer,.palette-primary-light-green .header{background:#7cb342}.palette-primary-light-green .drawer .toc a.current,.palette-primary-light-green .drawer .toc a:focus,.palette-primary-light-green .drawer .toc a:hover{color:#7cb342}.palette-primary-light-green .drawer .anchor a{border-left:2px solid #7cb342}.ios.standalone .palette-primary-light-green .article{background:-webkit-linear-gradient(top,#fff 50%,#7cb342 0);background:linear-gradient(180deg,#fff 50%,#7cb342 0)}.palette-primary-light-green .article a,.palette-primary-light-green .article code,.palette-primary-light-green .article h1,.palette-primary-light-green .article h2{color:#7cb342}.palette-primary-light-green .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-light-green .article table th{background:#9dc671}.palette-primary-light-green .results .meta{background:#7cb342}@supports (-webkit-appearance:none){.palette-primary-lime{background:#c0ca33}}.palette-primary-lime .footer,.palette-primary-lime .header{background:#c0ca33}.palette-primary-lime .drawer .toc a.current,.palette-primary-lime .drawer .toc a:focus,.palette-primary-lime .drawer .toc a:hover{color:#c0ca33}.palette-primary-lime .drawer .anchor a{border-left:2px solid #c0ca33}.ios.standalone .palette-primary-lime .article{background:-webkit-linear-gradient(top,#fff 50%,#c0ca33 0);background:linear-gradient(180deg,#fff 50%,#c0ca33 0)}.palette-primary-lime .article a,.palette-primary-lime .article code,.palette-primary-lime .article h1,.palette-primary-lime .article h2{color:#c0ca33}.palette-primary-lime .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-lime .article table th{background:#d0d766}.palette-primary-lime .results .meta{background:#c0ca33}@supports (-webkit-appearance:none){.palette-primary-yellow{background:#f9a825}}.palette-primary-yellow .footer,.palette-primary-yellow .header{background:#f9a825}.palette-primary-yellow .drawer .toc a.current,.palette-primary-yellow .drawer .toc a:focus,.palette-primary-yellow .drawer .toc a:hover{color:#f9a825}.palette-primary-yellow .drawer .anchor a{border-left:2px solid #f9a825}.ios.standalone .palette-primary-yellow .article{background:-webkit-linear-gradient(top,#fff 50%,#f9a825 0);background:linear-gradient(180deg,#fff 50%,#f9a825 0)}.palette-primary-yellow .article a,.palette-primary-yellow .article code,.palette-primary-yellow .article h1,.palette-primary-yellow .article h2{color:#f9a825}.palette-primary-yellow .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-yellow .article table th{background:#fbbe5c}.palette-primary-yellow .results .meta{background:#f9a825}@supports (-webkit-appearance:none){.palette-primary-amber{background:#ffb300}}.palette-primary-amber .footer,.palette-primary-amber .header{background:#ffb300}.palette-primary-amber .drawer .toc a.current,.palette-primary-amber .drawer .toc a:focus,.palette-primary-amber .drawer .toc a:hover{color:#ffb300}.palette-primary-amber .drawer .anchor a{border-left:2px solid #ffb300}.ios.standalone .palette-primary-amber .article{background:-webkit-linear-gradient(top,#fff 50%,#ffb300 0);background:linear-gradient(180deg,#fff 50%,#ffb300 0)}.palette-primary-amber .article a,.palette-primary-amber .article code,.palette-primary-amber .article h1,.palette-primary-amber .article h2{color:#ffb300}.palette-primary-amber .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-amber .article table th{background:#ffc640}.palette-primary-amber .results .meta{background:#ffb300}@supports (-webkit-appearance:none){.palette-primary-orange{background:#fb8c00}}.palette-primary-orange .footer,.palette-primary-orange .header{background:#fb8c00}.palette-primary-orange .drawer .toc a.current,.palette-primary-orange .drawer .toc a:focus,.palette-primary-orange .drawer .toc a:hover{color:#fb8c00}.palette-primary-orange .drawer .anchor a{border-left:2px solid #fb8c00}.ios.standalone .palette-primary-orange .article{background:-webkit-linear-gradient(top,#fff 50%,#fb8c00 0);background:linear-gradient(180deg,#fff 50%,#fb8c00 0)}.palette-primary-orange .article a,.palette-primary-orange .article code,.palette-primary-orange .article h1,.palette-primary-orange .article h2{color:#fb8c00}.palette-primary-orange .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-orange .article table th{background:#fca940}.palette-primary-orange .results .meta{background:#fb8c00}@supports (-webkit-appearance:none){.palette-primary-deep-orange{background:#ff7043}}.palette-primary-deep-orange .footer,.palette-primary-deep-orange .header{background:#ff7043}.palette-primary-deep-orange .drawer .toc a.current,.palette-primary-deep-orange .drawer .toc a:focus,.palette-primary-deep-orange .drawer .toc a:hover{color:#ff7043}.palette-primary-deep-orange .drawer .anchor a{border-left:2px solid #ff7043}.ios.standalone .palette-primary-deep-orange .article{background:-webkit-linear-gradient(top,#fff 50%,#ff7043 0);background:linear-gradient(180deg,#fff 50%,#ff7043 0)}.palette-primary-deep-orange .article a,.palette-primary-deep-orange .article code,.palette-primary-deep-orange .article h1,.palette-primary-deep-orange .article h2{color:#ff7043}.palette-primary-deep-orange .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-deep-orange .article table th{background:#ff9472}.palette-primary-deep-orange .results .meta{background:#ff7043}@supports (-webkit-appearance:none){.palette-primary-brown{background:#795548}}.palette-primary-brown .footer,.palette-primary-brown .header{background:#795548}.palette-primary-brown .drawer .toc a.current,.palette-primary-brown .drawer .toc a:focus,.palette-primary-brown .drawer .toc a:hover{color:#795548}.palette-primary-brown .drawer .anchor a{border-left:2px solid #795548}.ios.standalone .palette-primary-brown .article{background:-webkit-linear-gradient(top,#fff 50%,#795548 0);background:linear-gradient(180deg,#fff 50%,#795548 0)}.palette-primary-brown .article a,.palette-primary-brown .article code,.palette-primary-brown .article h1,.palette-primary-brown .article h2{color:#795548}.palette-primary-brown .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-brown .article table th{background:#9b8076}.palette-primary-brown .results .meta{background:#795548}@supports (-webkit-appearance:none){.palette-primary-grey{background:#757575}}.palette-primary-grey .footer,.palette-primary-grey .header{background:#757575}.palette-primary-grey .drawer .toc a.current,.palette-primary-grey .drawer .toc a:focus,.palette-primary-grey .drawer .toc a:hover{color:#757575}.palette-primary-grey .drawer .anchor a{border-left:2px solid #757575}.ios.standalone .palette-primary-grey .article{background:-webkit-linear-gradient(top,#fff 50%,#757575 0);background:linear-gradient(180deg,#fff 50%,#757575 0)}.palette-primary-grey .article a,.palette-primary-grey .article code,.palette-primary-grey .article h1,.palette-primary-grey .article h2{color:#757575}.palette-primary-grey .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-grey .article table th{background:#989898}.palette-primary-grey .results .meta{background:#757575}@supports (-webkit-appearance:none){.palette-primary-blue-grey{background:#546e7a}}.palette-primary-blue-grey .footer,.palette-primary-blue-grey .header{background:#546e7a}.palette-primary-blue-grey .drawer .toc a.current,.palette-primary-blue-grey .drawer .toc a:focus,.palette-primary-blue-grey .drawer .toc a:hover{color:#546e7a}.palette-primary-blue-grey .drawer .anchor a{border-left:2px solid #546e7a}.ios.standalone .palette-primary-blue-grey .article{background:-webkit-linear-gradient(top,#fff 50%,#546e7a 0);background:linear-gradient(180deg,#fff 50%,#546e7a 0)}.palette-primary-blue-grey .article a,.palette-primary-blue-grey .article code,.palette-primary-blue-grey .article h1,.palette-primary-blue-grey .article h2{color:#546e7a}.palette-primary-blue-grey .article .headerlink{color:rgba(0,0,0,.26)}.palette-primary-blue-grey .article table th{background:#7f929b}.palette-primary-blue-grey .results .meta{background:#546e7a}.palette-accent-red .article a:focus,.palette-accent-red .article a:hover{color:#ff2d6f}.palette-accent-red .repo a{background:#ff2d6f}.palette-accent-pink .article a:focus,.palette-accent-pink .article a:hover{color:#f50057}.palette-accent-pink .repo a{background:#f50057}.palette-accent-purple .article a:focus,.palette-accent-purple .article a:hover{color:#e040fb}.palette-accent-purple .repo a{background:#e040fb}.palette-accent-deep-purple .article a:focus,.palette-accent-deep-purple .article a:hover{color:#7c4dff}.palette-accent-deep-purple .repo a{background:#7c4dff}.palette-accent-indigo .article a:focus,.palette-accent-indigo .article a:hover{color:#536dfe}.palette-accent-indigo .repo a{background:#536dfe}.palette-accent-blue .article a:focus,.palette-accent-blue .article a:hover{color:#6889ff}.palette-accent-blue .repo a{background:#6889ff}.palette-accent-light-blue .article a:focus,.palette-accent-light-blue .article a:hover{color:#0091ea}.palette-accent-light-blue .repo a{background:#0091ea}.palette-accent-cyan .article a:focus,.palette-accent-cyan .article a:hover{color:#00b8d4}.palette-accent-cyan .repo a{background:#00b8d4}.palette-accent-teal .article a:focus,.palette-accent-teal .article a:hover{color:#00bfa5}.palette-accent-teal .repo a{background:#00bfa5}.palette-accent-green .article a:focus,.palette-accent-green .article a:hover{color:#12c700}.palette-accent-green .repo a{background:#12c700}.palette-accent-light-green .article a:focus,.palette-accent-light-green .article a:hover{color:#64dd17}.palette-accent-light-green .repo a{background:#64dd17}.palette-accent-lime .article a:focus,.palette-accent-lime .article a:hover{color:#aeea00}.palette-accent-lime .repo a{background:#aeea00}.palette-accent-yellow .article a:focus,.palette-accent-yellow .article a:hover{color:#ffd600}.palette-accent-yellow .repo a{background:#ffd600}.palette-accent-amber .article a:focus,.palette-accent-amber .article a:hover{color:#ffab00}.palette-accent-amber .repo a{background:#ffab00}.palette-accent-orange .article a:focus,.palette-accent-orange .article a:hover{color:#ff9100}.palette-accent-orange .repo a{background:#ff9100}.palette-accent-deep-orange .article a:focus,.palette-accent-deep-orange .article a:hover{color:#ff6e40}.palette-accent-deep-orange .repo a{background:#ff6e40}@media only screen and (max-width:959px){.palette-primary-red .project{background:#e84e40}.palette-primary-pink .project{background:#e91e63}.palette-primary-purple .project{background:#ab47bc}.palette-primary-deep-purple .project{background:#7e57c2}.palette-primary-indigo .project{background:#3f51b5}.palette-primary-blue .project{background:#5677fc}.palette-primary-light-blue .project{background:#03a9f4}.palette-primary-cyan .project{background:#00bcd4}.palette-primary-teal .project{background:#009688}.palette-primary-green .project{background:#259b24}.palette-primary-light-green .project{background:#7cb342}.palette-primary-lime .project{background:#c0ca33}.palette-primary-yellow .project{background:#f9a825}.palette-primary-amber .project{background:#ffb300}.palette-primary-orange .project{background:#fb8c00}.palette-primary-deep-orange .project{background:#ff7043}.palette-primary-brown .project{background:#795548}.palette-primary-grey .project{background:#757575}.palette-primary-blue-grey .project{background:#546e7a}} \ No newline at end of file diff --git a/material/base.html b/material/base.html index 7897f1586..fd537cdfb 100644 --- a/material/base.html +++ b/material/base.html @@ -25,156 +25,71 @@ {% endif %} {% endblock %} - - - - - - - {% if config.extra.logo %} - - {% endif %} - {% set icon = icon | default("assets/images/favicon-e565ddfa3b.ico") %} - - - - {% if config.extra.palette %} - - {% endif %} - {% if config.extra.font != "none" %} - {% set text = config.extra.get("font", {}).text | default("Ubuntu") %} - {% set code = config.extra.get("font", {}).code | default("Ubuntu Mono") %} - {% set font = text + ':400,700|' + code | replace(' ', '+') %} - - - {% endif %} + + {% for path in extra_css %} {% endfor %} - - {% block extrahead %}{% endblock %} + - {% set palette = config.extra.get("palette", {}) %} - {% set primary = palette.primary | replace(' ', '-') | lower %} - {% set accent = palette.accent | replace(' ', '-') | lower %} - - {% if repo_name == "GitHub" and repo_url %} - {% set repo_id = repo_url | replace("https://github.com/", "") %} - {% if repo_id[-1:] == "/" %} - {% set repo_id = repo_id[:-1] %} - {% endif %} - {% endif %} -
-
-
- - - -
- {% include "header.html" %} -
-
- {% set h1 = "\x3ch1 id=" in content %} -
- {% include "drawer.html" %} -
-
-
- {% if not h1 %} -

{{ page_title | default(site_name, true)}}

+ + + + + {% include "header.html" %} +
+
+
+ {% set h1 = "\x3ch1 id=" in content %} + {% if nav %} + {% include "nav.html" %} {% endif %} - {{ content }} - - {% block footer %} -
- {% include "footer.html" %} -
- {% endblock %} -
-
-
-
-
-
-
+ {% if toc %} + {% include "toc.html" %} + {% endif %} +
+
+ {{ content }} +
+ + {% if copyright %} + {{ copyright }} – + {% endif %} + This document was created with + MkDocs + and the + Material + theme. + +
-
-
+ + {% include "footer.html" %} + - + {% for path in extra_javascript %} {% endfor %} - {% if google_analytics %} - - {% endif %} \ No newline at end of file diff --git a/material/drawer.html b/material/drawer.html deleted file mode 100644 index 718dd0bc2..000000000 --- a/material/drawer.html +++ /dev/null @@ -1,69 +0,0 @@ - \ No newline at end of file diff --git a/material/footer.html b/material/footer.html index 660b28f67..1fa656092 100644 --- a/material/footer.html +++ b/material/footer.html @@ -1,42 +1,38 @@ -{% if include_next_prev %} - - -{% endif %} \ No newline at end of file + {% endif %} + \ No newline at end of file diff --git a/material/header.html b/material/header.html index f910b5b8d..c3b0fe535 100644 --- a/material/header.html +++ b/material/header.html @@ -1,54 +1,17 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/material/manifest.json b/material/manifest.json index d1032f1ac..afc12c110 100644 --- a/material/manifest.json +++ b/material/manifest.json @@ -1,7 +1,6 @@ { "assets/images/favicon.ico": "assets/images/favicon-e565ddfa3b.ico", - "assets/javascripts/application.js": "assets/javascripts/application-997097ee0c.js", - "assets/javascripts/modernizr.js": "assets/javascripts/modernizr-4ab42b99fd.js", - "assets/stylesheets/application.css": "assets/stylesheets/application-20d5debb47.css", - "assets/stylesheets/palettes.css": "assets/stylesheets/palettes-05ab2406df.css" + "assets/javascripts/application.js": "assets/javascripts/application-a7f7c32389.js", + "assets/javascripts/modernizr.js": "assets/javascripts/modernizr-d1e05123d4.js", + "assets/stylesheets/application.css": "assets/stylesheets/application-fe75383308.css" } \ No newline at end of file diff --git a/material/nav-item.html b/material/nav-item.html new file mode 100644 index 000000000..4375949cb --- /dev/null +++ b/material/nav-item.html @@ -0,0 +1,32 @@ +{% if nav_item.children %} +
  • + {% if nav_item.active %} + + {% else %} + + {% endif %} + +
      + {% for nav_item in nav_item.children %} + {% set temp = path %} + {% set path = path + "-" + loop.index | string %} + {% include "nav-item.html" %} + {% set path = temp %} + {% endfor %} +
    +
  • +{% else %} +
  • + {% if nav_item.active %} + + {{ nav_item.title }} + + {% else %} + + {{ nav_item.title }} + + {% endif %} +
  • +{% endif %} \ No newline at end of file diff --git a/material/nav.html b/material/nav.html index c926c085b..e2fd8866c 100644 --- a/material/nav.html +++ b/material/nav.html @@ -1,32 +1,13 @@ -{% if nav_item.children %} -
  • - {{ nav_item.title }} -
      - {% for nav_item in nav_item.children %} - {% include "nav.html" %} - {% endfor %} -
    -
  • -{% else %} -
  • - - {{ nav_item.title }} - - {% if nav_item == current_page %} - {% if h1 %} - {% set toc = (toc | first).children %} - {% endif %} - {% if toc and (toc | first) %} - - {% endif %} - {% endif %} -
  • -{% endif %} \ No newline at end of file +
    +
    + +
    +
    \ No newline at end of file diff --git a/material/toc-item.html b/material/toc-item.html new file mode 100644 index 000000000..36abc89c0 --- /dev/null +++ b/material/toc-item.html @@ -0,0 +1,12 @@ +
  • + + {{ toc_item.title }} + + {% if toc_item.children %} +
      + {% for toc_item in toc_item.children %} + {% include "toc-item.html" %} + {% endfor %} +
    + {% endif %} +
  • \ No newline at end of file diff --git a/material/toc.html b/material/toc.html new file mode 100644 index 000000000..48a3015ac --- /dev/null +++ b/material/toc.html @@ -0,0 +1,17 @@ +
    +
    + +
    +
    \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 951a5cc05..81f691c6e 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -29,29 +29,34 @@ repo_name: GitHub repo_url: https://github.com/squidfunk/mkdocs-material # Copyright -copyright: Copyright (c) 2016 Martin Donath +copyright: 'Copyright © 2016 Martin Donath' # Documentation and theme theme_dir: material +theme: amelia # Options extra: - version: 0.2.1 + version: 0.2.4 logo: images/logo.png + font: + text: Ubuntu + mono: Ubuntu Mono author: github: squidfunk twitter: squidfunk # Extensions markdown_extensions: - - codehilite(css_class=code) + - codehilite - admonition - toc: - permalink: '#' + permalink: '¶' # Page tree pages: - Material: index.md - Getting started: getting-started.md + - Specimen: specimen.md - Customization: customization.md - License: license.md \ No newline at end of file diff --git a/package.json b/package.json index cb55b795c..7b7465c6b 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,14 @@ "url": "https://github.com/squidfunk/mkdocs-material.git" }, "private": true, + "dependencies": { + "fastclick": "^1.0.6", + "whatwg-fetch": "^1.0.0" + }, "devDependencies": { "autoprefixer": "^6.3.2", + "babel-loader": "^6.2.4", + "babel-preset-es2015": "^6.13.2", "css-mqpacker": "^4.0.0", "del": "^2.2.0", "gulp": "^3.9.1", @@ -40,6 +46,8 @@ "gulp-util": "^3.0.7", "node-notifier": "^4.5.0", "vinyl-paths": "^2.1.0", + "webpack": "^1.13.1", + "webpack-stream": "^3.2.0", "yargs": "^3.32.0" } } diff --git a/src/404.html b/src/404.html new file mode 100644 index 000000000..2fd9f9570 --- /dev/null +++ b/src/404.html @@ -0,0 +1 @@ +TBD \ No newline at end of file diff --git a/src/assets/javascripts/application.js b/src/assets/javascripts/application.js index d1ffbec30..ab3260204 100644 --- a/src/assets/javascripts/application.js +++ b/src/assets/javascripts/application.js @@ -20,41 +20,18 @@ * IN THE SOFTWARE. */ -/* Hey, there's your missing semicolon, lunr.js! */ -; - -/* Truncate a string after the given number of characters */ -String.prototype.truncate = function(n) { - if (this.length > n) { - while (this[n] != ' ' && --n > 0); - return this.substring(0, n) + '…'; - } - return this; -} - -/* Wrap an HTMLElement around each element in an HTMLElement array */ -HTMLElement.prototype.wrap = function (elms) { - if (!elms.length) elms = [elms]; - for (var i = elms.length - 1; i >= 0; i--) { - var child = (i > 0) ? this.cloneNode(true) : this; - var el = elms[i]; - - /* Cache current parent and sibling */ - var parent = el.parentNode, - sibling = el.nextSibling; - - /* Wrap the element and remove it from its current parent */ - child.appendChild(el); - if (sibling) { - parent.insertBefore(child, sibling); - } else { - parent.appendChild(child); - } - } -} +'use strict'; /* ---------------------------------------------------------------------------- - * Application logic + * Imports + * ------------------------------------------------------------------------- */ + +import FastClick from 'fastclick'; +import Sidebar from './components/sidebar'; +import ScrollSpy from './components/scrollspy'; + +/* ---------------------------------------------------------------------------- + * Application * ------------------------------------------------------------------------- */ /* Initialize application upon DOM ready */ @@ -74,457 +51,24 @@ document.addEventListener('DOMContentLoaded', function() { /* Attack FastClick to mitigate 300ms delay on touch devices */ FastClick.attach(document.body); - /* Grab relevant elements from the DOM */ - var toggle = document.getElementById('toggle-search'), - reset = document.getElementById('reset-search'), - drawer = document.querySelector('.drawer'), - anchors = document.querySelectorAll('.anchor'), - search = document.querySelector('.search .field'), - query = document.querySelector('.query'), - meta = document.querySelector('.results .meta'); -/* ---------------------------------------------------------------------------- - * Initialize drawer - * ------------------------------------------------------------------------- */ - - /* Automatically close drawer when anchors are clicked */ - Array.prototype.forEach.call(anchors, function(item) { - item.querySelector('a').addEventListener('click', function() { - document.getElementById('toggle-drawer').checked = false; - document.body.classList.remove('toggle-drawer'); - }); - }); - - /* Align drawer to window offset */ - var pageYOffsetLast = window.pageYOffset; - var align = function() { - var boundary = window.pageYOffset + window.innerHeight; - var clipping = Math.max(0, window.innerHeight - drawer.offsetHeight); - - /* Ensure alignment with footer if at end of document */ - if (boundary > document.body.clientHeight - (96 - clipping)) { - if (drawer.style.position != 'absolute') { - drawer.style.position = 'absolute'; - drawer.style.top = null; - drawer.style.bottom = 0; - } - - /* Pin drawer to top, if window is higher than drawer */ - } else if (drawer.offsetHeight < window.innerHeight) { - if (drawer.style.position != 'fixed') { - drawer.style.position = 'fixed'; - drawer.style.top = 0; - drawer.style.bottom = null; - } - - /* If the drawer is not pinned, check if we need to pin it */ - } else if (drawer.style.position != 'fixed') { - - /* Pin drawer to bottom of window */ - if (boundary > drawer.offsetTop + drawer.offsetHeight) { - drawer.style.position = 'fixed'; - drawer.style.top = null; - drawer.style.bottom = -96 + 'px'; - - /* Pin drawer to top of window */ - } else if (window.pageYOffset < drawer.offsetTop) { - drawer.style.position = 'fixed'; - drawer.style.top = 0; - drawer.style.bottom = null; - } - - /* If the drawer is pinned, check if we have to unpin it */ + var width = window.matchMedia("(min-width: 1200px)"); + var handler = function() { + if (width.matches) { + sidebar.listen(); } else { - if (window.pageYOffset > pageYOffsetLast) { - if (drawer.style.top) { - drawer.style.position = 'absolute'; - drawer.style.top = Math.max(0, pageYOffsetLast) + 'px'; - drawer.style.bottom = null; - } - } else if (drawer.style.bottom) { - drawer.style.position = 'absolute'; - drawer.style.top = (boundary - drawer.offsetHeight) + 'px'; - drawer.style.bottom = null; - } - } - - /* Update last offset (mitigiate negative offsets in Safari) */ - pageYOffsetLast = Math.max(0, window.pageYOffset); - } - - /* Check for media query events */ - var check = function() { - var main = document.querySelector('.main'); - window.removeEventListener('scroll', align); - - /* Reset drawer position when entering collapsed mode */ - if (matchMedia("only screen and (max-width: 959px)").matches) { - drawer.style.position = null; - drawer.style.top = null; - drawer.style.bottom = null; - - /* Check if the scroll handler needs to be registered */ - } else if (drawer.offsetHeight + 96 < main.offsetHeight) { - window.addEventListener('scroll', align); - align(); + sidebar.unlisten(); } } - /* Register resize handler and fire once */ - if (!Modernizr.ios) { - window.addEventListener('resize', check); - check(); - } + var sidebar = new Sidebar('.md-sidebar--primary'); + handler(); // check listen! -/* ---------------------------------------------------------------------------- - * Initialize search index - * ------------------------------------------------------------------------- */ + var toc = new Sidebar('.md-sidebar--secondary'); + toc.listen(); - /* Initialize index */ - var initialize = function() { - pegasus(base_url + '/mkdocs/search_index.json').then( + var spy = new ScrollSpy('.md-nav--toc .md-nav__item a'); + spy.listen(); - /* Request successful, we got the index */ - function(data, xhr) { - - /* Create index */ - var index = lunr(function() { - this.field('title', { boost: 10 }); - this.field('text'); - this.ref('location'); - }); - - /* Index articles */ - var articles = {}; - data.docs.map(function(article) { - article.location = base_url + article.location; - articles[article.location] = article; - index.add(article); - }); - - /* Register keyhandler to execute search on key up */ - query.addEventListener('keyup', function() { - var container = document.querySelector('.results .list'); - while (container.firstChild) - container.removeChild(container.firstChild); - - /* Abort, if the query is empty */ - var bar = document.querySelector('.bar.search'); - if (!query.value.length) { - while (meta.firstChild) - meta.removeChild(meta.firstChild); - - /* Restore state */ - bar.classList.remove('non-empty'); - return; - } - - /* Show reset button */ - bar.classList.add('non-empty'); - - /* Execute search */ - var results = index.search(query.value); - results.map(function(result) { - var article = articles[result.ref]; - - /* Create article container */ - var teaser = document.createElement('article'); - teaser.classList.add('result'); - - /* Create title element */ - var title = document.createElement('h1'); - title.innerHTML = article.title; - teaser.appendChild(title); - - // /* Create text element */ - // var text = document.createElement('p'); - // text.innerHTML = article.text.truncate(140); - // teaser.appendChild(text); - - /* Create a link referring to the article */ - var link = document.createElement('a'); - link.href = article.location; - link.appendChild(teaser); - - /* Create url element */ - var url = document.createElement('span'); - url.innerHTML = link.href.split('#')[0]; - teaser.appendChild(url); - - /* Close search and jump to anchor when on same page */ - var parts = link.href.split('#'); - if (parts[0] == document.location.href.split('#')[0]) { - link.addEventListener('click', function(e) { - document.body.classList.remove('toggle-search'); - document.body.classList.remove('locked'); - toggle.checked = false; - - /* Don't catch anchors if the search doesn't cover the page */ - if (matchMedia('only screen and (min-width: 960px)').matches) - return; - - /* Prevent default to intercept scroll-to behaviour and - stop propagation, as this interferes with the link-lock in - the web application context, which opens all internal links - inside the same context */ - e.preventDefault(); - e.stopPropagation(); - - /* Scroll to chapter, if given */ - if (parts.length != 1) { - var chapter = document.getElementById(parts[1]); - if (chapter) { - - /* Scroll to chapter, but wait for 100ms to prevent flashes - on iOS. A short timeout seems to do the trick */ - setTimeout(function() { - chapter.scrollIntoView && chapter.scrollIntoView() || - window.scrollTo(0, chapter.offsetTop); - }, 100); - } - } - }); - } - - /* Add article to search results */ - container.appendChild(link); - }); - - /* Show number of search results */ - var number = document.createElement('strong'); - number.innerHTML = results.length + ' search result' - + (results.length != 1 ? 's' : ''); - - /* Update number */ - while (meta.firstChild) - meta.removeChild(meta.firstChild); - meta.appendChild(number); - }); - }, - - /* Handle error */ - function(data, xhr) { - console.error(data, xhr.status); - } - ); - - /* Remove listener, as we only have to initialize once */ - toggle.removeEventListener('click', initialize); - }; - - /* Initialize on first click */ - toggle.addEventListener('click', initialize); - -/* ---------------------------------------------------------------------------- - * Initialize search modal - * ------------------------------------------------------------------------- */ - - /* Intercept click on search mode toggle */ - var offset = 0; - toggle.addEventListener('click', function(e) { - var list = document.body.classList; - var lock = !matchMedia('only screen and (min-width: 960px)').matches; - - /* Exiting search mode */ - if (list.contains('locked')) { - list.remove('locked'); - - /* Scroll to former position, but wait for 100ms to prevent flashes - on iOS. A short timeout seems to do the trick */ - if (lock) - setTimeout(function() { - window.scrollTo(0, offset); - }, 100); - - /* Entering search mode */ - } else { - offset = window.scrollY; - - /* First timeout: scroll to top after transition, to omit flickering */ - if (lock) - setTimeout(function(){ - window.scrollTo(0, 0); - }, 400); - - /* Second timeout: Lock body after finishing transition and scrolling to - top and focus input field. Sadly, the focus event is not dispatched - on iOS Safari and there's nothing we can do about it. */ - setTimeout(function() { - - /* This additional check is necessary to handle fast subsequent clicks - on the toggle and the timeout to lock the body must be cancelled */ - if (this.checked) { - if (lock) - list.add('locked'); - setTimeout(function() { - query.focus(); - }, 200); - } - }.bind(this), 450); - } - }); - - /* Dispatch input focus on touch of search section */ - search.addEventListener('touchstart', function() { - query.focus(); - }); - - /* Exit search mode when pressing ESC */ - window.addEventListener('keyup', function(e) { - var code = e.keyCode || e.which; - if (code == 27) { - query.blur(); - - /* Exit locked state */ - document.body.classList.remove('toggle-search'); - document.body.classList.remove('locked'); - toggle.checked = false; - } - }); - - /* Delete search results upon click on "x" */ - var empty = document.getElementById('reset-search'); - empty.addEventListener('click', function() { - var container = document.querySelector('.results .list'); - while (container.firstChild) - container.removeChild(container.firstChild); - - /* Hide search button */ - var bar = document.querySelector('.bar.search'); - bar.classList.remove('non-empty'); - - /* Reset number of search results */ - meta.innerHTML = ''; - - /* Empty search input */ - query.value = ''; - query.focus(); - }); - -/* ---------------------------------------------------------------------------- - * Initialize scroll spy - * ------------------------------------------------------------------------- */ - - /* Retrieve vertical offset of article chapters */ - var chapters = document.querySelectorAll('h2'); - chapters = Array.prototype.map.call(chapters, function(item) { - return item.offsetTop; - }); - - /* Update currently active chapter, if the new chapter is two thirds - into the viewport - account for iOS web application context */ - var visible = null; - document.addEventListener('scroll', function() { - var offset = window.scrollY + (window.innerHeight / 3), - active = chapters.length - 1; - for (var c = 0; c < active; c++) - if (offset < chapters[c + 1]) - active = c; - - /* Update anchors, if a new chapter became visible */ - if (active != visible) { - visible = active; - Array.prototype.forEach.call(anchors, function(item, index) { - var link = item.querySelector('a'); - if (index != visible || link.classList.add('current')) - link.classList.remove('current'); - }); - } - }); - -/* ---------------------------------------------------------------------------- - * Fix syntax highlighting - * ------------------------------------------------------------------------- */ - - /* Fix highlighting for function calls */ - var functions = document.querySelectorAll('.n + .p'); - Array.prototype.forEach.call(functions, function(item) { - var text = item.innerText || item.textContent; - if (text && text[0] == '(') - item.previousSibling.classList.add('f'); - }); - -/* ---------------------------------------------------------------------------- - * Progressive structure enhancement - * ------------------------------------------------------------------------- */ - - /* Wrap all data tables */ - var tables = document.querySelectorAll('table'); - Array.prototype.forEach.call(tables, function(item) { - var wrapper = document.createElement('div'); - wrapper.classList.add('data'); - wrapper.wrap(item); - }); - -/* ---------------------------------------------------------------------------- - * Fix overflow scrolling on iOS - * ------------------------------------------------------------------------- */ - - /* Force 1px scroll offset to trigger overflow scrolling */ - if (Modernizr.ios) { - var scrollable = document.querySelectorAll( - '.scrollable, .standalone .article'); - Array.prototype.forEach.call(scrollable, function(item) { - item.addEventListener('touchstart', function() { - var top = this.scrollTop; - - /* We're at the top of the container */ - if (top == 0) { - this.scrollTop = 1; - - /* We're at the bottom of the container */ - } else if (top + this.offsetHeight == this.scrollHeight) { - this.scrollTop = top - 1; - } - }); - }); - } - - /* Prevent scrolling on project, overlay and header */ - var prevented = document.querySelectorAll('.project, .overlay, .header'); - Array.prototype.forEach.call(prevented, function(item) { - item.addEventListener('touchmove', function(e) { - e.preventDefault(); - }); - }); - -/* ---------------------------------------------------------------------------- - * Fallback for browsers that don't support :checked - * ------------------------------------------------------------------------- */ - - /* Set representative class on body for active toggle */ - var toggles = document.querySelectorAll('.toggle'); - Array.prototype.forEach.call(toggles, function(item) { - item.addEventListener('click', function() { - document.body.classList.toggle(this.id); - }); - }); - -/* ---------------------------------------------------------------------------- - * Initialize GitHub star button - * ------------------------------------------------------------------------- */ - - /* Get Stars for current repository */ - if (repo_id) { - pegasus('https://api.github.com/repos/' + repo_id).then( - - /* Request successful, we got the stars */ - function(data, xhr) { - var count = data.stargazers_count; - if (count > 10000) - count = (count / 1000).toFixed(0) + 'k'; - else if (count > 1000) - count = (count / 1000).toFixed(1) + 'k'; - - /* Set number of stars */ - var stars = document.querySelector('.repo-stars .count'); - stars.innerHTML = count; - }, - - /* Handle error */ - function(data, xhr) { - console.error(data, xhr.status); - } - ); - } + window.addEventListener('resize', handler); }); \ No newline at end of file diff --git a/src/assets/javascripts/components/scrollspy.js b/src/assets/javascripts/components/scrollspy.js new file mode 100644 index 000000000..1209d7bc9 --- /dev/null +++ b/src/assets/javascripts/components/scrollspy.js @@ -0,0 +1,127 @@ +/* + * 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'; + +/* ---------------------------------------------------------------------------- + * Sidebar scroll-spy + * ------------------------------------------------------------------------- */ + +class ScrollSpy { + + /** + * Constructor + * + * @constructor + * @param {(string|HTMLCollection)} el - Selector or HTML elements + */ + constructor(el) { + this.el_ = (typeof el === 'string') ? document.querySelectorAll(el) : el; + + /* Initialize index for currently active element */ + this.index_ = 0; + this.offset_ = window.pageYOffset; + + /* Event listener */ + this.handler_ = (ev) => { + this.update(ev); + }; + } + + /** + * Update state of sidebar and hash + * + * @param {Event} ev - Event + */ + update(ev) { + let index = this.index_; + + /* Scroll direction is down */ + if (this.offset_ <= window.pageYOffset) { + for (let i = this.index_; i < this.el_.length; i++) { + let anchor = document.querySelector(this.el_[i].hash); + if (anchor.offsetTop <= window.pageYOffset) { + if (i > 0) + this.el_[i - 1].classList.add('md-nav__link--marked'); + this.index_ = i; + } else { + break; + } + } + + /* Scroll direction is up */ + } else { + for (let i = this.index_; i >= 0; i--) { + let anchor = document.querySelector(this.el_[i].hash); + if (anchor.offsetTop > window.pageYOffset) { + if (i > 0) + this.el_[i - 1].classList.remove('md-nav__link--marked'); + } else { + this.index_ = i; + break; + } + } + } + + /* Remember current offset for next cycle */ + this.offset_ = window.pageYOffset; + } + + /** + * Reset state of sidebar + */ + reset() { + [].forEach.call(this.el_, (el) => { + el.classList.remove('md-nav__link--marked'); + }); + }; + + /** + * Register listener for all relevant events + */ + listen() { + ['scroll', 'resize', 'orientationchange'].forEach((name) => { + window.addEventListener(name, this.handler_, false); + }); + + /* Initial update */ + this.update(); + }; + + /** + * Unregister listener for all relevant events + */ + unlisten() { + ['scroll', 'resize', 'orientationchange'].forEach((name) => { + window.removeEventListener(name, this.handler_, false); + }); + + /* Perform reset */ + this.reset(); + }; +} + +/* ---------------------------------------------------------------------------- + * Exports + * ------------------------------------------------------------------------- */ + +export default ScrollSpy; \ No newline at end of file diff --git a/src/assets/javascripts/components/sidebar.js b/src/assets/javascripts/components/sidebar.js new file mode 100644 index 000000000..560ee35c5 --- /dev/null +++ b/src/assets/javascripts/components/sidebar.js @@ -0,0 +1,131 @@ +/* + * 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'; + +/* ---------------------------------------------------------------------------- + * Sidebar sticky-scroll handler + * ------------------------------------------------------------------------- */ + +class Sidebar { + + /** + * Constructor + * + * @constructor + * @param {(string|HTMLElement)} el - Selector or HTML element + */ + constructor(el) { + this.el_ = (typeof el === 'string') ? document.querySelector(el) : el; + + /* Initialize parameters */ + this.height_ = 0; + this.locked_ = false; + + /* Event listener */ + this.handler_ = (ev) => { + this.update(ev); + }; + }; + + /** + * Update state and height of sidebar + * + * @param {Event} ev - Event + */ + update(ev) { + let container = this.el_.parentNode; + let bounds = container.getBoundingClientRect(); + + /* Determine top and bottom offsets */ + let top = bounds.top + window.pageYOffset, + bottom = bounds.bottom + window.pageYOffset; + + /* Determine current y-offset at top and bottom of window */ + let upper = window.pageYOffset, + lower = window.pageYOffset + window.innerHeight; + + /* Calculate new bounds */ + let offset = top - upper; + let height = window.innerHeight - Math.max(lower - bottom, 0) + - Math.max(offset, container.parentNode.offsetTop); + + /* If height changed, update element */ + if (height != this.height_) + this.el_.style.height = (this.height_ = height) + 'px'; + + /* Sidebar should be locked, as we're below parent offset */ + if (offset < container.parentNode.offsetTop) { + if (!this.locked_) { + this.el_.classList.add('md-js__sidebar--locked'); + this.locked_ = true; + } + + /* Sidebar should be unlocked, if locked */ + } else if (this.locked_) { + this.el_.classList.remove('md-js__sidebar--locked'); + this.locked_ = false; + } + }; + + /** + * Reset state and height of sidebar + */ + 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() { + ['scroll', 'resize', 'orientationchange'].forEach((name) => { + window.addEventListener(name, this.handler_, false); + }); + + /* Initial update */ + this.update(); + }; + + /** + * Unregister listener for all relevant events + */ + unlisten() { + ['scroll', 'resize', 'orientationchange'].forEach((name) => { + window.removeEventListener(name, this.handler_, false); + }); + + /* Perform reset */ + this.reset(); + }; +} + +/* ---------------------------------------------------------------------------- + * Exports + * ------------------------------------------------------------------------- */ + +export default Sidebar; \ No newline at end of file diff --git a/src/assets/javascripts/standalone.js b/src/assets/javascripts/standalone.js deleted file mode 100644 index 0ed044874..000000000 --- a/src/assets/javascripts/standalone.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Taken and adapted from https://gist.github.com/kylebarrow/1042026 - * ------------------------------------------------------------------------- */ - -/* Detect standalone mode */ -if (('standalone' in window.navigator) && window.navigator.standalone) { - - /* If you want to prevent remote links in standalone web apps opening - Mobile Safari, change 'remotes' to true */ - var node, remotes = false; - - /* Bind to document */ - document.addEventListener('click', function(event) { - node = event.target; - - /* Bubble up until we hit link or top HTML element. Warning: BODY element - is not compulsory so better to stop on HTML */ - while (node.nodeName !== 'A' && node.nodeName !== 'HTML') { - node = node.parentNode; - } - if ('href' in node && node.href.indexOf('http') !== -1 && ( - node.href.indexOf(document.location.host) !== -1 || remotes)) { - event.preventDefault(); - document.location.href = node.href; - } - }, false); -} \ No newline at end of file diff --git a/src/assets/stylesheets/_config.scss b/src/assets/stylesheets/_config.scss new file mode 100644 index 000000000..d972d9235 --- /dev/null +++ b/src/assets/stylesheets/_config.scss @@ -0,0 +1,82 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Typography + * ------------------------------------------------------------------------- */ + +/* + * Modular typographic scale + */ +$ms-base: 1.6rem; +$ms-ratio: $major-third; + +/* ---------------------------------------------------------------------------- + * Breakpoints + * ------------------------------------------------------------------------- */ + +/* + * Device-specific breakpoints + */ +$break-devices: ( + mobile: ( + portrait: px2em(220px) px2em(479px), + landscape: px2em(480px) px2em(719px) + ), + tablet: ( + portrait: px2em(720px) px2em(959px), + landscape: px2em(960px) px2em(1199px) + ), + screen: ( + small: px2em(1200px) px2em(1599px), + medium: px2em(1600px) px2em(1999px), + large: px2em(2000px) + ) +); + +/* ---------------------------------------------------------------------------- + * Colors + * ------------------------------------------------------------------------- */ + +/* + * Primary and accent colors + */ +$md-color-primary: $indigo-500; +$md-color-primary--light: $indigo-100; +$md-color-primary--dark: $indigo-700; +$md-color-accent: $indigo-a200; + +/* + * Shades of black + */ +$md-color-black: rgba(black, 0.87); +$md-color-black--light: rgba(black, 0.54); +$md-color-black--lighter: rgba(black, 0.26); +$md-color-black--lightest: rgba(black, 0.07); + +/* + * Shades of white + */ +$md-color-white: rgba(white, 1.00); +$md-color-white--light: rgba(white, 0.70); +$md-color-white--lighter: rgba(white, 0.30); +$md-color-white--lightest: rgba(white, 0.12); \ No newline at end of file diff --git a/src/assets/stylesheets/_highlight.scss b/src/assets/stylesheets/_highlight.scss deleted file mode 100644 index 3e09457be..000000000 --- a/src/assets/stylesheets/_highlight.scss +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Code highlighter - * ------------------------------------------------------------------------- */ - -/* - * Code block - */ -pre { - background: rgba($black, 0.05); - - /* - * Ensure correct color - */ - &, code { - color: $black; - } -} - -/* - * Operators and comments - */ -.o, .c, .c1, .cm { - color: $black-light; -} - -/* - * Keywords - */ -.k, .kn { - color: #A71D5D; -} - -/* - * Types and functions - */ -.kt, .kd, .n.f { - color: #0086B3; -} - -/* - * Strings - */ -.s, .s1 { - color: #183691; -} - -/* - * Constants and numbers - */ -.mi, .bp { - color: #9575CD; -} \ No newline at end of file diff --git a/src/assets/stylesheets/_palette.scss b/src/assets/stylesheets/_palette.scss deleted file mode 100644 index 3629d28af..000000000 --- a/src/assets/stylesheets/_palette.scss +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Palette - * ------------------------------------------------------------------------- */ - -/* - * Primary and accent color - */ -$primary: $red-400 !default; -$accent: $teal-a700 !default; - -/* - * Black opacities - */ -$black: rgba(black, 0.87); -$black-light: rgba(black, 0.54); -$black-lighter: rgba(black, 0.26); -$black-lightest: rgba(black, 0.12); - -/* - * White opacities - */ -$white: rgba(white, 1.00); -$white-light: rgba(white, 0.70); -$white-lighter: rgba(white, 0.30); -$white-lightest: rgba(white, 0.12); \ No newline at end of file diff --git a/src/assets/stylesheets/application.scss b/src/assets/stylesheets/application.scss index dc02b3c01..c5e40f3c5 100644 --- a/src/assets/stylesheets/application.scss +++ b/src/assets/stylesheets/application.scss @@ -24,7 +24,7 @@ * Dependencies * ------------------------------------------------------------------------- */ -@import "bourbon"; +@import "modular-scale"; @import "quantum-colors"; @import "quantum-shadows"; @@ -32,18 +32,24 @@ * Application * ------------------------------------------------------------------------- */ -@import "reset"; -@import "palette"; -@import "highlight"; +@import "helpers/break"; +@import "helpers/px2em"; -@import "fonts/icon"; +@import "config"; -@import "mixins/break"; +@import "base/icons"; +@import "base/reset"; +@import "base/typeset"; -@import "modules/base"; -@import "modules/drawer"; -@import "modules/article"; -@import "modules/search"; +@import "layout/base"; +@import "layout/content"; +@import "layout/header"; +@import "layout/footer"; +@import "layout/nav"; +@import "layout/sidebar"; + +@import "extensions/admonition"; +@import "extensions/codehilite"; +@import "extensions/permalinks"; -@import "print"; @import "shame"; \ No newline at end of file diff --git a/src/assets/stylesheets/modules/article/_animation.scss b/src/assets/stylesheets/base/_icons.scss similarity index 66% rename from src/assets/stylesheets/modules/article/_animation.scss rename to src/assets/stylesheets/base/_icons.scss index 4a3cfb106..19b3b2301 100644 --- a/src/assets/stylesheets/modules/article/_animation.scss +++ b/src/assets/stylesheets/base/_icons.scss @@ -21,25 +21,44 @@ */ /* ---------------------------------------------------------------------------- - * Article animation + * Icon set * ------------------------------------------------------------------------- */ /* - * Fade color after highlighting + * Base icon class */ -pre span { - transition: color .25s; +.md-icon { + font-family: "Icon"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } /* - * Copyright and theme information + * Build icon set */ -.copyright { - - /* - * Animate color on hover - */ - a { - transition: color .25s; +@each $name, $code in ( + "search": "e600", + "back": "e601", + "link": "e602", + "close": "e603", + "menu": "e604", + "forward": "e605", + "twitter": "e606", + "github": "e607", + "download": "e608", + "star": "e609", + "warning": "e610", + "note": "e611" +) { + .md-icon--#{$name}:before { + content: unquote("\"\\#{$code}\""); } } \ No newline at end of file diff --git a/src/assets/stylesheets/_reset.scss b/src/assets/stylesheets/base/_reset.scss similarity index 76% rename from src/assets/stylesheets/_reset.scss rename to src/assets/stylesheets/base/_reset.scss index b2f395101..52e43f79b 100644 --- a/src/assets/stylesheets/_reset.scss +++ b/src/assets/stylesheets/base/_reset.scss @@ -44,7 +44,8 @@ html { } /* - * 16px --> 10px, browser default + * Prevent adjustments of font size after orientation changes in IE and iOS + * and set base font-size to 10px for simple rem calculations. */ html { font-size: 62.5%; @@ -54,31 +55,18 @@ html { /* * Reset spacing and borders for all tags */ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, main, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, +q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, dl, dt, dd, ol, +ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, +th, td, article, aside, canvas, details, embed, figure, figcaption, footer, +header, hgroup, main, menu, nav, output, ruby, section, summary, time, mark, +audio, video { margin: 0; padding: 0; border: 0; } -/* - * Reset list styles - */ -ul { - list-style: none; -} - /* * Reset table styles */ @@ -90,22 +78,20 @@ table { /* * Reset table cell styles */ -td { +td, th { text-align: left; font-weight: normal; - vertical-align: middle; + vertical-align: top; } /* * Reset (native) button styles */ button { - outline: 0; padding: 0; - + outline: 0; + border: 0; background: transparent; - border: none; - font-size: inherit; } @@ -113,10 +99,9 @@ button { * Reset (native) input styles */ input { - @include appearance(none); - - outline: none; - border: none; + appearance: none; + outline: 0; + border: 0; } /* @@ -133,11 +118,4 @@ a { a, button, label, input { -webkit-tap-highlight-color: rgba(white, 0); -webkit-tap-highlight-color: transparent; -} - -/* - * Reset headlines - */ -h1, h2, h3, h4, h5, h6 { - font-weight: inherit; } \ No newline at end of file diff --git a/src/assets/stylesheets/base/_typeset.scss b/src/assets/stylesheets/base/_typeset.scss new file mode 100644 index 000000000..454a620c2 --- /dev/null +++ b/src/assets/stylesheets/base/_typeset.scss @@ -0,0 +1,334 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Font definitions + * ------------------------------------------------------------------------- */ + +/* + * Default fonts + */ +body, kbd { + font-family: "Roboto", Helvetica, Arial, sans-serif; + font-weight: 400; + font-feature-settings: "kern", "onum", "liga"; + + /* Enable font-smoothing in Webkit and FF */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* + * Use system fonts, if browser doesn't support webfonts + */ + .no-fontface & { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } +} + +/* + * Proportionally spaced fonts + */ +pre, code { + font-family: "Roboto Mono", "Courier New", Courier, monospace; + + /* + * Use system fonts, if browser doesn't support webfonts + */ + .no-fontface & { + font-family: "Courier New", Courier, monospace; + } +} + +/* ---------------------------------------------------------------------------- + * Typeset + * ------------------------------------------------------------------------- */ + +/* + * Content that is typeset + */ +.md-content--typeset { + font-size: ms(0); + line-height: 1.6; + + /* + * Body copy + */ + p { + margin: 2.0rem 0; + } + + /* + * 1st level headline + */ + h1 { + font-size: ms(3); + font-weight: 300; + line-height: 1.3; + letter-spacing: -.01em; + color: $md-color-black--light; + + /* + * Correct anchor offset + */ + &:before { + content: " "; + display: block; + padding-top: (5.6rem + 2.4rem + 3.0rem); + margin-top: -(5.6rem + 2.4rem + 3.0rem); + } + } + + /* + * 2nd level headline + */ + h2 { + font-size: ms(2); + font-weight: 300; + line-height: 1.4; + margin-top: 4.0rem; + letter-spacing: -.01em; + + /* + * Correct anchor offset + */ + &:before { + content: " "; + display: block; + padding-top: (5.6rem + 2.4rem + 0.2rem); + margin-top: -(5.6rem + 2.4rem + 0.2rem); + } + } + + /* + * 3rd level headline + */ + h3 { + font-size: ms(1); + font-weight: 400; + line-height: 1.5; + margin-top: 3.2rem; + letter-spacing: -.01em; + + /* + * Correct anchor offset + */ + &:before { + content: " "; + display: block; + padding-top: (5.6rem + 2.4rem + 0.4rem); + margin-top: -(5.6rem + 2.4rem + 0.4rem); + } + } + + /* + * 2nd + 3rd level headline + */ + h2 + h3 { + margin-top: 1.6rem; + } + + /* + * 4th, 5th and 6th level headline + */ + h4 { + font-size: ms(0); + font-weight: 700; + margin-top: 1.6rem; + letter-spacing: -.01em; + + /* + * Correct anchor offset + */ + &:before { + position: relative; + z-index: -4; + content: " "; + display: block; + padding-top: (5.6rem + 2.4rem + 0.8rem); + margin-top: -(5.6rem + 2.4rem + 0.8rem); + } + } + + /* + * 5th and 6th level headline + */ + h5, h6 { + font-size: ms(-1); + font-weight: 700; + margin-top: 1.6rem; + letter-spacing: -.01em; + color: $md-color-black--light; + + /* + * Correct anchor offset + */ + &:before { + position: relative; + z-index: -5; + content: " "; + display: block; + padding-top: (5.6rem + 2.4rem + 1.0rem); + margin-top: -(5.6rem + 2.4rem + 1.0rem); + } + } + + /* + * Overrides for 5th level headline + */ + h5 { + text-transform: uppercase; + } + + /* + * Links + */ + a { + color: $md-color-primary; + transition: color .125s; + + /* + * Active links + */ + &:hover, + &:active { + color: $md-color-accent; + } + } + + /* + * Inline code blocks + */ + code { + font-size: 85%; + font-weight: 400; + word-break: break-word; + padding: 0.1rem 0.4rem; + background: #f7f7f7; + color: #37474f; + } + + /* + * Formatted code blocks + */ + pre { + font-size: 85%; + line-height: 1.4; + padding: 1.0rem 1.2rem; + overflow-x: scroll; + background: #f7f7f7; + color: #37474f; + } + + /* + * Keyboard tags + */ + kbd { + display: inline-block; + font-size: 85%; + line-height: 1.0rem; + word-break: break-word; + padding: 0.4rem 0.5rem 0.5rem; + vertical-align: 0.1rem; + color: #555; + background-color: #FCFCFC; + border: px2rem(1px) solid #CCCCCC; + border-bottom-color: #BBBBBB; + border-radius: px2rem(3px); + box-shadow: 0 #{-(px2rem(1px))} 0 #BBBBBB inset; + } + + /* + * Smaller text + */ + small { + color: $md-color-black--light; + } + + /* + * Horizontal separators + */ + hr { + margin: 2.4rem 0; + border-bottom: px2rem(1px) dotted $md-color-black--lighter; + } + + /* + * Blockquotes, possibly nested + */ + blockquote { + padding-left: 1.2rem; + border-left: px2rem(4px) solid $md-color-black--lighter; + color: $md-color-black--light; + } + + /* + * Unordered lists + */ + ul { + list-style-type: disc; + } + + /* + * Ordered lists + */ + ol ol { + list-style-type: lower-alpha; + + /* + * Triply nested ordered list + */ + ol { + list-style-type: lower-roman; + } + } + + /* + * Unordered and ordered lists + */ + ul, ol { + margin-left: 1.0rem; + + /* + * List elements + */ + li { + margin-bottom: 1.0rem; + margin-left: 2.0rem; + + /* + * Remove margin on last element + */ + &:last-child { + margin-bottom: 0; + } + + /* + * Nested lists + */ + ul, ol { + padding-top: 1.0rem; + margin-bottom: 1.0rem; + margin-left: 1.0rem; + } + } + } +} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/_article.scss b/src/assets/stylesheets/extensions/_admonition.scss similarity index 86% rename from src/assets/stylesheets/modules/_article.scss rename to src/assets/stylesheets/extensions/_admonition.scss index 0529e777a..c29d75597 100644 --- a/src/assets/stylesheets/modules/_article.scss +++ b/src/assets/stylesheets/extensions/_admonition.scss @@ -20,7 +20,6 @@ * IN THE SOFTWARE. */ -@import "article/animation"; -@import "article/appearance"; -@import "article/layout"; -@import "article/typography"; \ No newline at end of file +/* ---------------------------------------------------------------------------- + * Admonition extension + * ------------------------------------------------------------------------- */ \ No newline at end of file diff --git a/src/assets/stylesheets/extensions/_codehilite.scss b/src/assets/stylesheets/extensions/_codehilite.scss new file mode 100644 index 000000000..7a7bb7d3c --- /dev/null +++ b/src/assets/stylesheets/extensions/_codehilite.scss @@ -0,0 +1,133 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Codehilite extension + * ------------------------------------------------------------------------- */ + +/* + * Github-style syntax highlighting + */ +.codehilite, +.code { + + /* + * Errors + */ + .err { color: #a61717; } + + /* + * Operators + */ + .o { color: inherit; } + + /* + * Generics + */ + .ge { color: #000000; } /* Generic.Emph */ + .gr { color: #aa0000; } /* Generic.Error */ + .gh { color: #999999; } /* Generic.Heading */ + .go { color: #888888; } /* Generic.Output */ + .gp { color: #555555; } /* Generic.Prompt */ + .gs { color: inherit; } /* Generic.Strong */ + .gu { color: #aaaaaa; } /* Generic.Subheading */ + .gt { color: #aa0000; } /* Generic.Traceback */ + + /* + * Keywords + */ + .k { color: #a71d5d; } /* Keyword */ + .kc { color: #a71d5d; } /* Keyword.Constant */ + .kd { color: #a71d5d; } /* Keyword.Declaration */ + .kn { color: #a71d5d; } /* Keyword.Namespace */ + .kp { color: #a71d5d; } /* Keyword.Pseudo */ + .kr { color: #0086b3; } /* Keyword.Reserved */ + .kt { color: #0086b3; } /* Keyword.Type */ + + /* + * Comments + */ + .c { color: #969896; } /* Comment */ + .cm { color: #969896; } /* Comment.Multiline */ + .cp { color: #666666; } /* Comment.Preproc */ + .c1 { color: #969896; } /* Comment.Single */ + .cs { color: #969896; } /* Comment.Special */ + + /* + * Names + */ + .na { color: #795da3; } /* Name.Attribute */ + .na { color: #795da3; } /* Name.Attribute */ + .nb { color: #795da3; } /* Name.Builtin */ + .bp { color: #795da3; } /* Name.Builtin.Pseudo */ + .nc { color: #795da3; } /* Name.Class */ + .no { color: #795da3; } /* Name.Constant */ + .nd { color: #795da3; } /* Name.Decorator */ + .ni { color: #795da3; } /* Name.Entity */ + .ne { color: #795da3; } /* Name.Exception */ + .nf { color: #795da3; } /* Name.Function */ + .nl { color: #795da3; } /* Name.Label */ + .nn { color: #795da3; } /* Name.Namespace */ + .nt { color: #795da3; } /* Name.Tag */ + .nv { color: #795da3; } /* Name.Variable */ + .vc { color: #795da3; } /* Name.Variable.Class */ + .vg { color: #795da3; } /* Name.Variable.Global */ + .vi { color: #795da3; } /* Name.Variable.Instance */ + .ow { color: inherit; } /* Operator.Word */ + + /* + * Numbers + */ + .m { color: #0086b3; } /* Literal.Number */ + .mf { color: #0086b3; } /* Literal.Number.Float */ + .mh { color: #0086b3; } /* Literal.Number.Hex */ + .mi { color: #0086b3; } /* Literal.Number.Integer */ + .mo { color: #0086b3; } /* Literal.Number.Oct */ + .il { color: #0086b3; } /* Literal.Number.Integer.Long */ + + /* + * Strings + */ + .s { color: #183691; } /* Literal.String */ + .sb { color: #183691; } /* Literal.String.Backtick */ + .sc { color: #183691; } /* Literal.String.Char */ + .sd { color: #183691; } /* Literal.String.Doc */ + .s2 { color: #183691; } /* Literal.String.Double */ + .se { color: #183691; } /* Literal.String.Escape */ + .sh { color: #183691; } /* Literal.String.Heredoc */ + .si { color: #183691; } /* Literal.String.Interpol */ + .sx { color: #183691; } /* Literal.String.Other */ + .sr { color: #009926; } /* Literal.String.Regex */ + .s1 { color: #d01040; } /* Literal.String.Single */ + .ss { color: #990073; } /* Literal.String.Symbol */ + + /* + * Diffs + */ + .gd { color: #000000; background-color: #ffdddd; } /* Generic.Deleted */ + .gi { color: #000000; background-color: #ddffdd; } /* Generic.Inserted */ + + /* + * Miscellaneous + */ + .w { color: transparent; } /* Text.Whitespace */ +} \ No newline at end of file diff --git a/src/assets/stylesheets/_print.scss b/src/assets/stylesheets/extensions/_permalinks.scss similarity index 68% rename from src/assets/stylesheets/_print.scss rename to src/assets/stylesheets/extensions/_permalinks.scss index 1b29b8b19..f3c8caefd 100644 --- a/src/assets/stylesheets/_print.scss +++ b/src/assets/stylesheets/extensions/_permalinks.scss @@ -21,56 +21,42 @@ */ /* ---------------------------------------------------------------------------- - * Print overrides + * Permalinks extension * ------------------------------------------------------------------------- */ /* - * Print styles + * Scope in content for greater specificity */ -@media print { +.md-content { /* - * Hide non-relevant elements + * Permalink */ - .header, .drawer, .headerlink, .footer { - display: none; + .headerlink { + display: inline-block; + margin-left: 1.0rem; + opacity: 0; + color: $md-color-black--lighter; + transform: translate3d(0, 0.5rem, 0); + transition: opacity .125s .25s, + transform .25s .25s, + color .25s; } /* - * Article + * Only show permalinks in hover state */ - .article { - - /* - * Remove top spacing - */ - .wrapper { - padding-top: 0; - } - - /* - * Remove color in all code blocks - */ - pre, pre * { - color: $black !important; - } - - pre { - border: 1px solid $black-lightest; - } - - /* - * Border-radius makes this table entirely black on paper, so scrap it - */ - table { - border-radius: none; - box-shadow: none; + h1, h2, h3, h4, h5, h6 { + &:hover .headerlink { + margin-left: 1.0rem; + opacity: 1; + transform: translate3d(0, 0, 0); /* - * Color header + * Active link */ - th { - color: $primary; + &:hover { + color: $md-color-accent; } } } diff --git a/src/assets/stylesheets/fonts/_icon.scss b/src/assets/stylesheets/fonts/_icon.scss deleted file mode 100644 index e66951d91..000000000 --- a/src/assets/stylesheets/fonts/_icon.scss +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Font faces - defined in base.html for correct path resolution - * ------------------------------------------------------------------------- */ - -// /* -// * Icon font -// */ -// @font-face { -// font-family: 'Icon'; -// src: url('/assets/fonts/icon.eot?52m981'); -// src: url('/assets/fonts/icon.eot?#iefix52m981') format('embedded-opentype'), -// url('/assets/fonts/icon.woff?52m981') format('woff'), -// url('/assets/fonts/icon.ttf?52m981') format('truetype'), -// url('/assets/fonts/icon.svg?52m981#icon') format('svg'); -// font-weight: normal; -// font-style: normal; -// } - -/* ---------------------------------------------------------------------------- - * Representational classes - * ------------------------------------------------------------------------- */ - -/* - * Base icon class - */ -.icon { - font-family: 'Icon'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -/* - * Magnifying glass - */ -.icon-search:before { - content: "\e600"; -} - -/* - * Back arrow - */ -.icon-back:before { - content: "\e601"; -} - -/* - * Link indicator - */ -.icon-link:before { - content: "\e602"; -} - -/* - * Close button - */ -.icon-close:before { - content: "\e603"; -} - -/* - * Hamburger icon - */ -.icon-menu:before { - content: "\e604"; -} - -/* - * Forward arrow - */ -.icon-forward:before { - content: "\e605"; -} - -/* - * Twitter icon - */ -.icon-twitter:before { - content: "\e606"; -} - -/* - * GitHub icon - */ -.icon-github:before { - content: "\e607"; -} - -/* - * Download icon - */ -.icon-download:before { - content: "\e608"; -} - -/* - * Star icon - */ -.icon-star:before { - content: "\e609"; -} - -/* - * Warning icon - */ -.icon-warning:before { - content: "\e610"; -} - -/* - * Star icon - */ -.icon-note:before { - content: "\e611"; -} \ No newline at end of file diff --git a/src/assets/stylesheets/mixins/_break.scss b/src/assets/stylesheets/helpers/_break.scss similarity index 70% rename from src/assets/stylesheets/mixins/_break.scss rename to src/assets/stylesheets/helpers/_break.scss index 468fa2ec7..3ef4231c2 100644 --- a/src/assets/stylesheets/mixins/_break.scss +++ b/src/assets/stylesheets/helpers/_break.scss @@ -21,29 +21,25 @@ */ /* ---------------------------------------------------------------------------- - * Defaults - * ------------------------------------------------------------------------- */ - -$break: ( - devices: ( - mobile: ( - portrait: 220px 479px, - landscape: 480px 719px - ), - tablet: ( - portrait: 720px 959px, - landscape: 960px 1199px - ), - screen: 1200px - ) -) !default; - -/* ---------------------------------------------------------------------------- - * Helper functions + * Variables * ------------------------------------------------------------------------- */ /* - * Choose minimum and maximum device widths. + * Device-specific breakpoints + * + * @type Map + */ +$break-devices: () !default; + +/* ---------------------------------------------------------------------------- + * Breakpoint helpers + * ------------------------------------------------------------------------- */ + +/* + * Choose minimum and maximum device widths + * + * @param {Map} $devices Map of devices + * @return {List} Minimum and maximum width */ @function break-select-min-max($devices) { $min: 1000000; $max: 0; @@ -59,44 +55,49 @@ $break: ( $max: max($number, $max); } } @else { - @warn "Invalid number: #{$number}"; + @error "Invalid number: #{$number}"; } } } @elseif type-of($value) == number { $min: min($value, $min); $max: null; } @else { - @warn "Invalid tuple: #{$value}"; + @error "Invalid value: #{$value}"; } } @return $min, $max; } /* - * Select minimum and maximum widths for a device breakpoint. + * Select minimum and maximum widths for a device breakpoint + * + * @param {String} $device Device + * @return {List} Minimum and maximum width */ @function break-select-device($device) { - $devices: map-get($break, devices); + $current: $break-devices; @for $n from 1 through length($device) { - @if type-of($devices) == map { - $devices: map-get($devices, nth($device, $n)); + @if type-of($current) == map { + $current: map-get($current, nth($device, $n)); } @else { - @warn "Invalid device map: #{$devices}"; + @error "Invalid device map: #{$devices}"; } } - @if type-of($devices) == list or - type-of($devices) == number { - $devices: (default: $devices); + @if type-of($current) == list or + type-of($current) == number { + $current: (default: $current); } - @return break-select-min-max($devices); + @return break-select-min-max($current); } /* ---------------------------------------------------------------------------- - * Mixins for numeric breakpoints + * Breakpoint mixins * ------------------------------------------------------------------------- */ /* - * A minimum-maximum media query breakpoint. + * A minimum-maximum media query breakpoint + * + * @param {Number|List} $breakpoint Number or number pair */ @mixin break-at($breakpoint) { @if type-of($breakpoint) == number { @@ -110,15 +111,17 @@ $break: ( @content; } } @else { - @warn "Invalid breakpoint: #{$breakpoint}"; + @error "Invalid breakpoint: #{$breakpoint}"; } } @else { - @warn "Invalid breakpoint: #{$breakpoint}"; + @error "Invalid breakpoint: #{$breakpoint}"; } } /* - * An orientation media query breakpoint. + * An orientation media query breakpoint + * + * @param {String} $breakpoint Orientation */ @mixin break-at-orientation($breakpoint) { @if type-of($breakpoint) == string { @@ -126,12 +129,14 @@ $break: ( @content; } } @else { - @warn "Invalid breakpoint: #{$breakpoint}"; + @error "Invalid breakpoint: #{$breakpoint}"; } } /* - * A maximum-aspect-ratio media query breakpoint. + * A maximum-aspect-ratio media query breakpoint + * + * @param {Number} $breakpoint Ratio */ @mixin break-at-ratio($breakpoint) { @if type-of($breakpoint) == number { @@ -139,16 +144,14 @@ $break: ( @content; } } @else { - @warn "Invalid breakpoint: #{$breakpoint}"; + @error "Invalid breakpoint: #{$breakpoint}"; } } -/* ---------------------------------------------------------------------------- - * Mixins for device breakpoints - * ------------------------------------------------------------------------- */ - /* - * A minimum-maximum media query device breakpoint. + * A minimum-maximum media query device breakpoint + * + * @param {String|List} $breakpoint Device */ @mixin break-at-device($device) { @if type-of($device) == string { @@ -162,15 +165,17 @@ $break: ( @content; } } @else { - @warn "Invalid device: #{$device}"; + @error "Invalid device: #{$device}"; } } @else { - @warn "Invalid device: #{$device}"; + @error "Invalid device: #{$device}"; } } /* - * A minimum media query device breakpoint. + * A minimum media query device breakpoint + * + * @param {String|List} $breakpoint Device */ @mixin break-from-device($device) { @if type-of($device) == string { @@ -183,12 +188,14 @@ $break: ( @content; } } @else { - @warn "Invalid device: #{$device}"; + @error "Invalid device: #{$device}"; } } /* - * A maximum media query device breakpoint. + * A maximum media query device breakpoint + * + * @param {String|List} $breakpoint Device */ @mixin break-to-device($device) { @if type-of($device) == string { @@ -196,11 +203,11 @@ $break: ( } @if type-of($device) == list { $breakpoint: break-select-device($device); - $max: nth($breakpoint, 1) - 1; + $max: nth($breakpoint, 2); @media only screen and (max-width: $max) { @content; } } @else { - @warn "Invalid device: #{$device}"; + @error "Invalid device: #{$device}"; } } \ No newline at end of file diff --git a/src/assets/stylesheets/modules/article/_typography.scss b/src/assets/stylesheets/helpers/_px2em.scss similarity index 67% rename from src/assets/stylesheets/modules/article/_typography.scss rename to src/assets/stylesheets/helpers/_px2em.scss index c657a7a29..91b45d711 100644 --- a/src/assets/stylesheets/modules/article/_typography.scss +++ b/src/assets/stylesheets/helpers/_px2em.scss @@ -21,38 +21,34 @@ */ /* ---------------------------------------------------------------------------- - * Article typography + * Pixel conversion helpers * ------------------------------------------------------------------------- */ /* - * Article + * Convert font size in px to em. + * + * @param {Number} $size Font size in px + * @param {Number} $base Base font size + * @return {Number} Font size in em */ -.article { - - /* - * Third-level headlines should be bold - */ - h3 { - font-weight: 700; - } - - /* - * Fourth-level headlines should be italic - */ - h4 { - font-weight: 400; - font-style: italic; +@function px2em($size, $base: 16px) { + @if unit($size) == px { + @return ($size / $base) * 1em; + } @else { + @error "Invalid unit: #{$size} - must be px"; } } /* - * Permalink support + * Convert font size in px to rem. + * + * @param {Number} $size Font size in px + * @return {Number} Font size in rem */ -.article { - h2, h3, h4, h5, h6 { - a { - font-weight: 400; - font-style: normal; - } +@function px2rem($size, $base: 10px) { + @if unit($size) == px { + @return ($size / $base) * 1rem; + } @else { + @error "Invalid unit: #{$size} - must be px"; } } \ No newline at end of file diff --git a/src/assets/stylesheets/layout/_base.scss b/src/assets/stylesheets/layout/_base.scss new file mode 100644 index 000000000..d1af57370 --- /dev/null +++ b/src/assets/stylesheets/layout/_base.scss @@ -0,0 +1,171 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Grid + * ------------------------------------------------------------------------- */ + +/* + * Stretch container to viewport + */ +html { + height: 100%; +} + +/* + * Stretch body to container and leave room for footer. + */ +body { + position: relative; + min-height: 100%; +} + +/* + * Horizontal separators + */ +hr { + display: block; + height: 1px; + padding: 0; + border: 0; +} + +/* + * Template-wide grid + */ +.md-grid { + max-width: 120rem; + margin-left: auto; + margin-right: auto; +} + +/* + * Prevent collapse of margin when setting margin on child element + */ +.md-container, +.md-main { + overflow: auto; +} + +/* + * Add top spacing to acount for header + */ +.md-main { + margin-top: 5.6rem; + + /* + * bottom spacing to account for footer + */ + &__inner { + margin-top: 3.0rem; + margin-bottom: 9.2rem; + overflow: auto; + } +} + +/* ---------------------------------------------------------------------------- + * Navigational elements + * ------------------------------------------------------------------------- */ + +/* + * Toggle checkbox (should never be visibile) + */ +.md-toggle { + display: none !important; +} + +/* + * Overlay below expanded drawer + */ +.md-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + z-index: 2; + opacity: 0; + background: $md-color-black--light; + transition: opacity .25s, + width .0s .25s, + height .0s .25s; + + /* [tablet landscape -]: Trigger overlay */ + @include break-to-device(tablet landscape) { + + /* + * Expanded drawer + */ + #md-toggle-drawer:checked ~ & { + width: 100%; + height: 100%; + opacity: 1; + transition: opacity .25s, + width .0s, + height .0s; + } + } +} + +/* ---------------------------------------------------------------------------- + * Flexible elements, implemented with table layout + * ------------------------------------------------------------------------- */ + +/* + * Flexible layout container + */ +.md-flex { + display: table; + + /* + * Flexible layout container cell/element + */ + &__cell { + display: table-cell; + vertical-align: top; + + /* + * Shrink to minimum width + */ + &--shrink { + width: 1%; + } + + /* + * Stretch to maximum width + */ + &--stretch { + display: table; + table-layout: fixed; + width: 100%; + } + } + + /* + * Apply ellipsis in case of overflowing text + */ + &__ellipsis { + display: table-cell; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/drawer/_typography.scss b/src/assets/stylesheets/layout/_content.scss similarity index 69% rename from src/assets/stylesheets/modules/drawer/_typography.scss rename to src/assets/stylesheets/layout/_content.scss index 78ea4f242..49fd47138 100644 --- a/src/assets/stylesheets/modules/drawer/_typography.scss +++ b/src/assets/stylesheets/layout/_content.scss @@ -21,48 +21,40 @@ */ /* ---------------------------------------------------------------------------- - * Drawer typography + * Main content * ------------------------------------------------------------------------- */ /* - * Drawer container + * Content container */ -.drawer { +.md-content { - /* - * Links to articles - */ - .toc li a { - font-weight: 700; + /* [tablet landscape +]: Add space for table of contents */ + @include break-from-device(tablet landscape) { + margin-right: 24.2rem; + } + + /* [screen small +]: Add space for table of contents */ + @include break-from-device(screen small) { + margin-left: 24.2rem; } /* - * Links to chapters inside the current article + * Define padding */ - .toc li.anchor a { - font-weight: 400; + &__inner { + margin: 2.4rem 1.6rem; + + /* [screen small +]: Add space for table of contents */ + @include break-from-device(screen small) { + margin: 2.4rem 2.4rem; + } } /* - * Main sections + * Copyright and theme information */ - .section { - font-weight: 700; - } -} - -/* - * Repository buttons - */ -.repo a { - text-transform: uppercase; - font-weight: 700; - - /* - * Stars - */ - .count { - text-transform: none; - font-weight: 700; + &__copyright { + display: block; } } \ No newline at end of file diff --git a/src/assets/stylesheets/layout/_footer.scss b/src/assets/stylesheets/layout/_footer.scss new file mode 100644 index 000000000..ba1195f50 --- /dev/null +++ b/src/assets/stylesheets/layout/_footer.scss @@ -0,0 +1,134 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Footer + * ------------------------------------------------------------------------- */ + +/* + * Application footer + */ +.md-footer { + position: absolute; + width: 100%; + bottom: 0; + + /* + * Pagination container + */ + &-pagination { + background: $md-color-black; + color: $md-color-white; + } + + /* + * Link to previous and next page + */ + &-nav { + overflow: auto; + padding: 0.4rem; + + /* + * Links to previous and next page + */ + &__link { + padding-top: 2.8rem; + padding-bottom: 0.8rem; + + /* [mobile landscape +]: Set proportional width */ + @include break-from-device(mobile landscape) { + width: 50%; + } + + /* + * Link to previous page + */ + &--prev { + float: left; + width: 25%; + + /* + * Title + */ + .md-footer-nav__title { + + /* [mobile portrait -]: Hide title for previous page */ + @include break-to-device(mobile portrait) { + display: none; + } + } + } + + /* + * Link to next page + */ + &--next { + float: right; + width: 75%; + text-align: right; + } + } + + /* + * Icon + */ + &__icon { + display: inline-block; + font-size: 2.4rem; + padding: 0.8rem; + margin: 0.4rem; + cursor: pointer; + border-radius: 100%; + transition: background .25s; + + /* + * Pushed/clicked icon + */ + &:active { + background: $md-color-white--lightest; + } + } + + /* + * Title + */ + &__title { + position: relative; + padding: 0 0.4rem; + font-size: 1.8rem; + line-height: 4.8rem; + } + + /* + * Direction + */ + &__direction { + position: absolute; + left: 0; + right: 0; + padding: 0 0.4rem; + margin-top: -2.0rem; + font-size: 1.5rem; + color: $md-color-white--light; + } + } +} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/base/_animation.scss b/src/assets/stylesheets/layout/_header.scss similarity index 63% rename from src/assets/stylesheets/modules/base/_animation.scss rename to src/assets/stylesheets/layout/_header.scss index 720621f68..009fcad25 100644 --- a/src/assets/stylesheets/modules/base/_animation.scss +++ b/src/assets/stylesheets/layout/_header.scss @@ -21,53 +21,57 @@ */ /* ---------------------------------------------------------------------------- - * Base animation + * Header * ------------------------------------------------------------------------- */ /* - * Animate color on hover + * Application header (stays always on top) */ -a { - transition: color .25s; -} +.md-header { + @include drop-shadow(1); -/* - * Overlay - */ -.overlay { - transition: opacity .25s, - width .0s .25s, - height .0s .25s; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 5.6rem; + z-index: 1; + background: $md-color-primary; + color: $md-color-white; /* - * Expanded drawer + * Navigation within header */ - #toggle-drawer:checked ~ &, - .toggle-drawer & { - transition: opacity .25s, - width .0s, - height .0s; + &-nav { + padding: 0.4rem; + + /* + * Icon + */ + &__icon { + display: inline-block; + font-size: 2.4rem; + padding: 0.8rem; + margin: 0.4rem; + cursor: pointer; + border-radius: 100%; + transition: background .25s; + + /* + * Pushed/clicked icon + */ + &:active { + background: $md-color-white--lightest; + } + } + + /* + * Title + */ + &__title { + padding: 0 2.0rem; + font-size: 1.8rem; + line-height: 4.8rem; + } } -} - -/* - * Application header - check for javascript to omit flashing - */ -.js .header { - transition: background .6s, - color .6s; - - /* - * Status bar - */ - &:before { - transition: background .6s; - } -} - -/* - * Extended visible touch area on icon - */ -.button .icon { - transition: background .25s; } \ No newline at end of file diff --git a/src/assets/stylesheets/modules/drawer/_animation.scss b/src/assets/stylesheets/layout/_nav.scss similarity index 57% rename from src/assets/stylesheets/modules/drawer/_animation.scss rename to src/assets/stylesheets/layout/_nav.scss index 16077f9b6..43badb7ec 100644 --- a/src/assets/stylesheets/modules/drawer/_animation.scss +++ b/src/assets/stylesheets/layout/_nav.scss @@ -21,61 +21,89 @@ */ /* ---------------------------------------------------------------------------- - * Drawer animation + * Navigation * ------------------------------------------------------------------------- */ /* - * Drawer container + * Nested navigation */ -.drawer { +.md-nav { - /* [tablet landscape-]: Hide menu */ - @include break-to-device(tablet landscape) { - transform: translate3d(-262px, 0, 0); - transition: transform .25s cubic-bezier(.4, 0, .2, 1); + /* + * Set font sizes + */ + &, h3 { + font-size: ms(-1); + line-height: 1.2; + } + + /* + * Table of contents + */ + &--toc { + border-left: px2rem(4px) solid $md-color-primary; + } + + /* + * List of items + */ + &__list { + list-style: none; /* - * Just hide drawer, if browser doesn't support 3D transforms + * 2nd+ level list */ - .no-csstransforms3d & { - display: none; + & & { + margin-left: 1.2rem; + } + + /* + * Hide list by default + */ + .md-nav__toggle ~ & { + max-height: 0; + overflow: hidden; + } + + /* + * Expand list, if toggle is checked + */ + .md-nav__toggle:checked ~ & { + max-height: 100%; } } /* - * Expanded drawer + * List item */ - #toggle-drawer:checked ~ .main &, - .toggle-drawer & { - transform: translate3d(0, 0, 0); + &__item { + margin: 0.8rem 0 0; + line-height: 1.6rem; + } + + /* + * Link inside item + */ + &__link { + display: block; + overflow: hidden; + text-overflow: ellipsis; + transition: color .125s; /* - * Just show drawer, if browser doesn't support 3D transforms + * Marked item */ - .no-csstransforms3d & { - display: block; + &--marked { + color: $md-color-black--light; + } + + /* + * Current or hovered item + */ + &:hover, + &:active, + &--active { + color: $md-color-accent; } } -} - -/* - * No color transition for project link - */ -.project { - transition: none; -} - -/* - * Project logo image - */ -.project .logo img { - transition: box-shadow .4s; -} - -/* - * Repository buttons - */ -.repo a { - transition: box-shadow .4s, - opacity .4s; } \ No newline at end of file diff --git a/src/assets/stylesheets/layout/_sidebar.scss b/src/assets/stylesheets/layout/_sidebar.scss new file mode 100644 index 000000000..a142f8a40 --- /dev/null +++ b/src/assets/stylesheets/layout/_sidebar.scss @@ -0,0 +1,166 @@ +/* + * 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. + */ + +/* ---------------------------------------------------------------------------- + * Sidebar + * ------------------------------------------------------------------------- */ + +/* + * Sidebar content + */ +.md-sidebar { + position: relative; + width: 24.2rem; + float: left; + overflow: visible; + + /* + * Lock sidebar to container height (account for fixed header) + */ + &.md-js__sidebar--locked { + position: fixed; + top: 5.6rem; + } + + /* [tablet landscape -]: Convert navigation to drawer */ + @include break-to-device(tablet landscape) { + + /* + * Render primary sidebar as a slideout container + */ + &--primary { + position: fixed; + top: 0; + width: 24.2em; + height: 100%; + z-index: 3; + background: $md-color-white; + transition: transform .25s cubic-bezier(0.4, 0.0, 0.2, 1.0); + transform: translate3d(-24.2em, 0, 0); + + /* + * Just hide drawer, if browser doesn't support 3D transforms + */ + .no-csstransforms3d & { + display: none; + } + + /* + * Expanded drawer + */ + #md-toggle-drawer:checked ~ .md-container & { + transform: translate3d(0, 0, 0); + + /* + * Just show drawer, if browser doesn't support 3D transforms + */ + .no-csstransforms3d & { + display: block; + } + } + } + } + + /* + * Secondary sidebar with table of contents + */ + &--secondary { + display: none; + + /* [tablet landscape +]: Show table of contents next to body copy */ + @include break-from-device(tablet landscape) { + display: block; + float: right; + + /* + * Hack to align right in case of locked sidebar + */ + &.md-js__sidebar--locked { + margin-left: 100%; + transform: translate(-100%, 0); + + /* [screen small +]: Limit to grid */ + @include break-from-device(screen small) { + margin-left: 120rem; + } + } + } + } + + /* + * Wrapper for scrolling on overflow + */ + &__scrollwrap { + margin: 2.4rem 0.4rem; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + + /* [tablet landscape +]: Adjust margins */ + @include break-to-device(tablet landscape) { + + /* + * Adjust margins for primary scrollbar + */ + .md-sidebar--primary & { + margin: 0; + } + } + + /* + * Limit height to window, if JavaScript is available + */ + .js & { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + } + + /* + * Override native scrollbar styles + */ + &::-webkit-scrollbar { + width: 0.4rem; + height: 0.4rem; + + /* + * Style scrollbar thumb + */ + &-thumb { + background: $md-color-black--lighter; + } + } + } + + /* + * Actual sidebar content + */ + &__inner { + padding: 1.2rem; + + /* [screen small +]: Add line for reference */ + @include break-from-device(screen small) { + border-right: px2rem(1px) solid $md-color-black--lightest; + } + } +} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/_base.scss b/src/assets/stylesheets/modules/_base.scss deleted file mode 100644 index 140d308fb..000000000 --- a/src/assets/stylesheets/modules/_base.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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. - */ - -@import "base/animation"; -@import "base/appearance"; -@import "base/layout"; -@import "base/typography"; \ No newline at end of file diff --git a/src/assets/stylesheets/modules/_drawer.scss b/src/assets/stylesheets/modules/_drawer.scss deleted file mode 100644 index afefecffd..000000000 --- a/src/assets/stylesheets/modules/_drawer.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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. - */ - -@import "drawer/animation"; -@import "drawer/appearance"; -@import "drawer/layout"; -@import "drawer/typography"; \ No newline at end of file diff --git a/src/assets/stylesheets/modules/_search.scss b/src/assets/stylesheets/modules/_search.scss deleted file mode 100644 index 77914e3b1..000000000 --- a/src/assets/stylesheets/modules/_search.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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. - */ - -@import "search/animation"; -@import "search/appearance"; -@import "search/layout"; -@import "search/typography"; \ No newline at end of file diff --git a/src/assets/stylesheets/modules/article/_appearance.scss b/src/assets/stylesheets/modules/article/_appearance.scss deleted file mode 100644 index 33febaf8f..000000000 --- a/src/assets/stylesheets/modules/article/_appearance.scss +++ /dev/null @@ -1,190 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Article appearance - * ------------------------------------------------------------------------- */ - -/* - * Article - */ -.article { - - /* - * Differing top and bottom rubberband backgrounds in iOS web application - */ - .ios.standalone & { - background: linear-gradient( - to bottom, $white 50%, $primary 50%); - - /* Hack [iOS]: Mitigate black bounding box with linear gradient */ - .wrapper { - background: linear-gradient( - to bottom, $white 50%, $white 50%); - } - } - - /* - * Headlines, chapters, links and inline code - */ - h1, h2, a, code { - color: $primary; - } - - /* - * Lower border for main headline - */ - h1 { - border-bottom: 1px solid $black-lightest; - } - - /* - * Underline links - */ - a { - border-bottom: 1px dotted; - } - - /* - * Hovered and focused links - */ - a:hover, a:focus { - color: $accent; - } - - /* - * Light permalinks - */ - .headerlink { - color: $black-lighter; - border: none; - } - - /* - * Data tables - */ - table { - @include drop-shadow(1); - - border-radius: 3px; - - /* - * Table heading - */ - th { - background: mix($primary, $white, 75%); - color: $white; - - /* - * Round upper left border - */ - &:first-child { - border-top-left-radius: 3px; - } - - /* - * Round upper right border - */ - &:last-child { - border-top-right-radius: 3px; - } - } - - /* - * Table cell - */ - td { - border-top: 1px solid rgba($black, 0.05); - } - } -} - -/* - * Article footer - */ -.footer { - background: $primary; - color: $white; - - /* - * Remove bottom border on links - */ - a { - border: none; - } -} - -/* - * Copyright and theme information - */ -.copyright { - color: $black-light; -} - -/* - * Pagination - */ -.pagination { - - /* - * Inherit color for links - */ - a .title, a .button { - color: $white; - } - - /* - * Smaller font size for direction - */ - .direction { - color: $white-light; - } -} - -/* - * Admonition support - */ -.admonition { - background: $light-blue-400; - color: $white; - - /* - * Embedded code blocks - */ - pre { - background: $white-lighter; - } - - /* - * A warning hint - */ - &.warning { - background: $red-400; - } - - /* - * Headlines, chapters, links and inline code - */ - a, a:hover { - color: $white; - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/article/_layout.scss b/src/assets/stylesheets/modules/article/_layout.scss deleted file mode 100644 index 5158b7f58..000000000 --- a/src/assets/stylesheets/modules/article/_layout.scss +++ /dev/null @@ -1,567 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Article layout - * ------------------------------------------------------------------------- */ - -/* - * Article - */ -.article { - font-size: 14px; - line-height: 1.7em; - - /* [tablet landscape+]: Indent to account for drawer */ - @include break-from-device(tablet landscape) { - margin-left: 262px; - } - - /* - * Clearfix - */ - &:after { - content: " "; - display: block; - clear: both; - } - - /* - * Article wrapper - */ - .wrapper { - padding: 116px 16px 92px; - - /* [tablet portait+]: Increase top spacing */ - @include break-from-device(tablet portrait) { - padding: 128px 24px 96px; - } - } - - /* - * Enable overflow scrolling in iOS web application - */ - .ios.standalone & { - @include position(absolute, 56px 0 0 0); - - overflow: auto; - -webkit-overflow-scrolling: touch; - - /* [orientation: portrait]: Account for status bar in portrait mode */ - @include break-at-orientation(portrait) { - @include position(absolute, (56px + 20px) 0 0 0); - } - - /* - * Article wrapper - */ - .wrapper { - position: relative; - min-height: 100%; - padding-top: 60px; - margin-bottom: 2px; - } - } - - /* - * Article headline - */ - h1 { - font-size: 24px; - line-height: 1.333334em; - padding: 20px 0 42px; - } - - /* - * Article chapters - */ - h2 { - font-size: 20px; - line-height: 1.4em; - padding-top: (36px + 56px); - margin-top: (0px - 56px); - - /* - * No offset correction in iOS web application - */ - .ios.standalone & { - padding-top: 36px; - margin: 0; - } - } - - /* - * Sub headlines - */ - h3, h4 { - font-size: 14px; - padding-top: (20px + 56px); - margin-top: (0 - 56px); - - /* - * No offset correction in iOS web application - */ - .ios.standalone & { - padding-top: 20px; - margin-top: 0; - } - } - - /* - * Align permalinks on the right - */ - .headerlink { - float: right; - margin-left: 20px; - font-size: 14px; - - /* - * Hide permalink to main headline - */ - h1 & { - display: none; - } - } - - /* - * Paragraphs and section titles - */ - p, ul, ol { - margin-top: 1.5em; - } - - /* - * Smaler top spacing for nested lists - */ - li ul, li ol { - margin-top: 0.75em; - } - - /* - * List elements - */ - li { - margin-top: 0.75em; - margin-left: 18px; - - /* - * Inline paragraphs in list elements - */ - p { - display: inline; - } - } - - /* - * Add icon for elements of an unordered list - */ - ul > li:before { - content: "\e602"; - display: block; - float: left; - font-family: 'Icon'; - font-size: 16px; - width: 1.2em; - margin-left: -1.2em; - vertical-align: -0.1em; - } - - /* - * Inline code snippets must not wrap - */ - p > code { - white-space: nowrap; - } - - /* - * Add spacing at top of separator - */ - hr { - margin-top: 1.5em; - } - - /* - * Limit images to article container - */ - img { - max-width: 100%; - } - - /* - * Code listing container - */ - pre { - padding: 16px; - margin: 1.5em -16px 0; - line-height: 1.5em; - overflow: auto; - -webkit-overflow-scrolling: touch; - } - - /* - * Data tables - */ - table { - margin: 3.0em 0 1.5em; - font-size: 13px; - - /* - * The semi-cool solution, in case javascript is not available - */ - .no-js & { - display: inline-block; - max-width: 100%; - overflow: auto; - -webkit-overflow-scrolling: touch; - } - - /* - * Table heading - */ - th { - min-width: 100px; - padding: 12px 16px; - font-size: 12px; - text-align: left; - vertical-align: top; - } - - /* - * Table cell - */ - td { - padding: 12px 16px; - vertical-align: top; - } - } - - /* - * Data table wrapper, in case javascript is available - */ - .data { - margin: 1.5em -16px; - padding: 1.5em 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - text-align: center; - - /* - * Data table - */ - table { - display: inline-block; - margin: 0 16px; - text-align: left; - } - - /* [tablet portait+]: Increase spacing */ - @include break-from-device(tablet portrait) { - margin: 1.5em -24px; - - /* - * Data table - */ - table { - margin: 0 24px; - } - } - } - - /* [tablet portait+]: Increase spacing */ - @include break-from-device(tablet portrait) { - - /* - * Account for larged header bar and anchors - */ - h2 { - padding-top: (28px + 72px); - margin-top: (8px - 72px); - - /* - * No offset correction in iOS web application - */ - .ios.standalone & { - padding-top: 28px; - margin-top: 8px; - } - } - - /* - * Sub headlines - */ - h3, h4 { - padding-top: (20px + 64px); - margin-top: (0 - 64px); - - /* - * No offset correction in iOS web application - */ - .ios.standalone & { - padding-top: 20px; - margin-top: 0; - } - } - - /* - * Increase spacing for code blocks - */ - pre { - padding: 1.5em 24px; - margin: 1.5em -24px 0; - } - } -} - -/* - * Article footer - */ -.footer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - padding: 0 4px; - - /* [tablet portait+]: Larger spacing */ - @include break-from-device(tablet portrait) { - padding: 0 8px; - } - - /* [tablet landscape+]: Stretch footer to viewport */ - @include break-from-device(tablet landscape) { - z-index: 5; - } -} - -/* - * Copyright and theme information - */ -.copyright { - margin: 1.5em 0; - - /* [tablet landscape+]: Add bottom spacing */ - @include break-from-device(tablet landscape) { - margin-bottom: 64px; - } -} - -/* - * Pagination - */ -.pagination { - max-width: 1184px; - height: 92px; - padding: 4px 0; - margin-left: auto; - margin-right: auto; - overflow: hidden; - - /* [tablet portait+]: Larger pagination and spacing */ - @include break-from-device(tablet portrait) { - height: 96px; - padding: 8px 0; - } - - /* - * Links should span icons entirely - */ - a { - display: block; - height: 100%; - } - - /* - * Previous and next page - */ - .previous, - .next { - position: relative; - float: left; - height: 100%; - } - - /* - * Previous page - */ - .previous { - width: 25%; - - /* - * Hide direction - */ - .direction { - display: none; - } - - /* - * Hide title - */ - .stretch { - display: none; - } - } - - /* - * Next page - */ - .next { - width: 75%; - text-align: right; - } - - /* - * Link to page - */ - .page { - display: table; - position: absolute; - bottom: 4px; - } - - /* - * Put direction over page title - */ - .direction { - display: block; - position: absolute; - bottom: 40px; - width: 100%; - font-size: 15px; - line-height: 20px; - padding: 0 52px; - } - - /* - * Decrease indent for stretching content - */ - .stretch { - padding: 0 4px; - - /* - * Correct vertical spacing - */ - .title { - font-size: 18px; - padding: 11px 0 13px; - } - } - - /* [mobile landscape+]: Proportional width for pagination */ - @include break-from-device(mobile landscape) { - - /* - * Previous and next page - */ - .previous, - .next { - width: 50%; - } - - /* - * Previous page - */ - .previous { - width: 50%; - - /* - * Show direction - */ - .direction { - display: block; - } - - /* - * Show title - */ - .stretch { - display: table; - } - } - } - - /* [tablet portrait+]: Increase vertical spacing */ - @include break-from-device(tablet portrait) { - - /* - * Increase vertical spacing - */ - .direction { - padding: 0 56px; - bottom: 40px; - } - - /* - * Increase vertical spacing - */ - .stretch { - padding: 0 8px; - } - } -} - -/* - * Admonition support - */ -.admonition { - margin: 20px -16px 0; - padding: 20px 16px; - - /* - * Remove redundant margin of first child - */ - > :first-child { - margin-top: 0; - } - - /* [tablet portait+]: Increase horizontal spacing */ - @include break-from-device(tablet portrait) { - margin: 20px -24px 0; - padding: 20px 24px; - } - - /* - * Admonition title, if given - */ - .admonition-title { - font-size: 20px; - - /* - * Default icon - */ - &:before { - content: "\e611"; - display: block; - float: left; - font-family: 'Icon'; - font-size: 24px; - vertical-align: -0.1em; - margin-right: 5px; - } - } - - /* - * Warning icon - */ - &.warning .admonition-title:before { - content: "\e610"; - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/base/_appearance.scss b/src/assets/stylesheets/modules/base/_appearance.scss deleted file mode 100644 index 5f0870c1b..000000000 --- a/src/assets/stylesheets/modules/base/_appearance.scss +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Base appearance - * ------------------------------------------------------------------------- */ - -/* - * Device specific background hacks related to rubberband - */ -body { - color: $black; - - /* Hack [Chrome, Opera]: Set background color in Chrome and Opera */ - @supports (-webkit-appearance: none) { - background: $primary; - } - - /* - * Don't tint menu bar on iOS - */ - .ios & { - background: $white; - } -} - -/* - * Horizontal separators - */ -hr { - border: 0; - border-top: 1px solid $black-lightest; -} - -/* - * Toggle button - */ -.toggle-button { - cursor: pointer; - color: inherit; -} - -/* - * Backdrop - */ -.backdrop { - background: $white; - - /* [tablet landscape+]: Introduce paper with shadow */ - @include break-from-device(tablet landscape) { - background: darken($white, 5%); - } -} - -/* - * Backdrop paper with shadow - */ -.backdrop-paper:after { - background: $white; - - /* [tablet landscape+]: Add drop shadow */ - @include break-from-device(tablet landscape) { - @include drop-shadow(1); - } -} - -/* - * Overlay - */ -.overlay { - background: $black-light; - opacity: 0; - - /* - * Expanded drawer - */ - #toggle-drawer:checked ~ &, - .toggle-drawer & { - opacity: 1; - } -} - -/* - * Application header - */ -.header { - @include drop-shadow(1); - - background: $primary; - color: $white; - - /* - * Add status bar overlay for iOS web application - */ - .ios.standalone &:before { - background: $black-lightest; - } -} - -/* - * Navigation path within header bar - */ -.bar .path { - color: $white-light; -} - -/* - * Draw round area around icon on touch - */ -.button .icon { - border-radius: 100%; -} - -/* - * Pushed/clicked icon - */ -.button .icon:active { - background: $white-lightest; -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/base/_layout.scss b/src/assets/stylesheets/modules/base/_layout.scss deleted file mode 100644 index 2a4569153..000000000 --- a/src/assets/stylesheets/modules/base/_layout.scss +++ /dev/null @@ -1,363 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Base layout - * ------------------------------------------------------------------------- */ - -/* - * Stretch container to viewport - */ -html { - height: 100%; -} - -/* - * Stretch body to container and leave room for sticky footer. - */ -body { - position: relative; - min-height: 100%; -} - -/* - * Horizontal separators - */ -hr { - display: block; - height: 1px; - padding: 0; - margin: 0; -} - -/* - * Lock body (e.g. in search mode) - */ -.locked { - height: 100%; - overflow: hidden; -} - -/* - * Scrollable container - */ -.scrollable { - @include position(absolute, 0 0 0 0); - - overflow: auto; - -webkit-overflow-scrolling: touch; - - /* - * Content wrapper - */ - .wrapper { - height: 100%; - - /* Hack [iOS]: Force overflow scrolling */ - .ios & { - margin-bottom: 2px; - } - } -} - -/* - * Toggle states and button - */ -.toggle { - display: none; - - /* - * Toggle button - */ - &-button { - display: block; - } -} - -/* - * Backdrop - */ -.backdrop { - @include position(absolute, 0 0 0 0); - - z-index: -1; -} - -/* - * Backdrop paper container - */ -.backdrop-paper { - max-width: 1200px; - height: 100%; - margin-left: auto; - margin-right: auto; - - /* - * Actual paper - */ - &:after { - content: " "; - display: block; - height: 100%; - margin-left: 262px; - } -} - -/* - * Overlay - */ -.overlay { - position: fixed; - top: 0; - width: 0; - height: 0; - z-index: 4; - - /* [tablet landscape-]: Trigger overlay */ - @include break-to-device(tablet landscape) { - - /* - * Expanded drawer - */ - #toggle-drawer:checked ~ &, - .toggle-drawer & { - width: 100%; - height: 100%; - } - } -} - -/* - * Application header stays always on top - */ -.header { - @include user-select(none); - - position: fixed; - top: 0; - left: 0; - z-index: 3; - height: 56px; - padding: 4px; - overflow: hidden; - - /* [tablet portait+]: Larger header bar */ - @include break-from-device(tablet portrait) { - height: 64px; - padding: 8px; - } - - /* [screen+]: Stretch to screen */ - @include break-from-device(screen) { - width: 100%; - } - - /* - * Absolute positioning in iOS web application - */ - .ios.standalone & { - position: absolute; - - /* [orientation: portrait]: Account for status bar in portrait mode */ - @include break-at-orientation(portrait) { - height: (56px + 20px); - padding-top: (4px + 20px); - - /* [tablet portait+]: Larger header bar */ - @include break-from-device(tablet portrait) { - height: (64px + 20px); - padding-top: (8px + 20px); - } - - /* - * Add status bar overlay - */ - &:before { - content: " "; - position: absolute; - top: 0; - left: 0; - z-index: 4; - width: 100%; - height: 20px; - } - } - } -} - -/* - * Header bar - */ -.bar { - display: table; - max-width: 1184px; - margin-left: auto; - margin-right: auto; - - /* - * Links should span icons entirely - */ - a { - display: block; - } - - /* - * Hide search button, in case javascript is not available. - */ - .no-js & .button-search { - display: none; - } - - /* - * Navigation path - */ - .path { - - /* - * Correct icon alignment - */ - .icon:before { - vertical-align: -1.5px; - } - - /* [tablet portait-]: Hide path */ - @include break-to-device(tablet portrait) { - display: none; - } - } -} - -/* - * Buttons - */ -.button { - display: table-cell; - vertical-align: top; - width: 1%; - - /* - * Remove native spacing on button - */ - button { - margin: 0; - padding: 0; - - /* Hack [IE]: Remove button offset in active state */ - &:active:before { - position: relative; - top: 0; - left: 0; - } - } - - /* - * Button icons - */ - .icon { - display: inline-block; - font-size: 24px; - padding: 8px; - margin: 4px; - } -} - -/* - * Hide source and twitter button - */ -.button-github, -.button-twitter { - - /* [mobile landscape-]: Hide button */ - @include break-to-device(mobile landscape) { - display: none; - } -} - -/* - * Hide menu button - */ -.button-menu { - - /* [tablet landscape+]: Hide button */ - @include break-from-device(tablet landscape) { - display: none; - } -} - -/* - * Stretch content to remaining space - */ -.stretch { - display: table; - table-layout: fixed; - width: 100%; - - /* - * Set vertical spacing for header - */ - .header & { - padding: 0 20px; - - /* [tablet portait]: Increase vertical spacing */ - @include break-at-device(tablet portrait) { - padding: 0 24px; - } - - /* [tablet portait+]: Account for missing menu icon */ - @include break-from-device(tablet portrait) { - padding: 0 (24px - 8px) 0 16px; - } - } - - /* - * Title with ellipsis on overflow - */ - .title { - display: table-cell; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - - /* - * Increase header font size - */ - .header & { - font-size: 18px; - padding: 13px 0; - - /* [tablet portait+]: Slightly larger typography in header */ - @include break-from-device(tablet portrait) { - font-size: 20px; - padding: 12px 0; - } - } - } -} - -/* - * Main content - */ -.main { - max-width: 1200px; - margin-left: auto; - margin-right: auto; -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/base/_typography.scss b/src/assets/stylesheets/modules/base/_typography.scss deleted file mode 100644 index 8548a47f3..000000000 --- a/src/assets/stylesheets/modules/base/_typography.scss +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Base typography - * ------------------------------------------------------------------------- */ - -/* - * Default font styles - */ -body, input { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 400; - - /* Enable font-smoothing in Webkit and FF */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* - * Use system fonts, if browser doesn't support webfonts - */ - .no-fontface & { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - } -} - -/* - * Proportional fonts - */ -pre, code { - font-family: 'Courier New', 'Courier', monospace; - - /* - * Use system fonts, if browser doesn't support webfonts - */ - .no-fontface & { - font-family: 'Courier New', 'Courier', monospace; - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/drawer/_appearance.scss b/src/assets/stylesheets/modules/drawer/_appearance.scss deleted file mode 100644 index b4f9926a5..000000000 --- a/src/assets/stylesheets/modules/drawer/_appearance.scss +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Drawer appearance - * ------------------------------------------------------------------------- */ - -/* - * Drawer container - */ -.drawer { - - /* [tablet landscape-]: Light gray background */ - @include break-to-device(tablet landscape) { - background: $white; - } - - /* - * Color links - */ - .toc a { - - /* - * Current active element - */ - &.current { - color: $primary; - } - - /* - * Hovered link - */ - &:hover, &:focus { - color: $primary; - } - } - - /* - * Color anchors menu - */ - .anchor a { - border-left: 2px solid $primary; - } - - /* - * Main sections - */ - .section { - color: $black-light; - } -} - -/* - * Project information - */ -.project { - - /* [tablet landscape-]: Add drop shadow */ - @include break-to-device(tablet landscape) { - @include drop-shadow(1); - - background: $primary; - color: $white; - } - - /* - * Add status bar overlay for iOS web application - */ - .ios.standalone &:before { - background: $black-lightest; - } - - /* - * Project logo - */ - .logo img { - background: $white; - border-radius: 100%; - } - - /* - * Scale logo on hover - */ - &:hover .logo img, - &:focus .logo img { - @include drop-shadow(2); - } -} - -/* - * Repository buttons - */ -.repo a { - background: $accent; - color: $white; - border-radius: 3px; - - /* - * Hovered button - */ - &:hover, &:focus { - @include drop-shadow(2); - - opacity: 0.8; - } - - /* - * Stars - */ - .count { - background: $black-lighter; - color: $white; - border-radius: 0px 3px 3px 0px; - - /* - * Star bubble - */ - &:before { - border-width: 15px 5px 15px 0; - border-color: transparent $black-lighter; - border-style: solid; - } - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/drawer/_layout.scss b/src/assets/stylesheets/modules/drawer/_layout.scss deleted file mode 100644 index d6e1df280..000000000 --- a/src/assets/stylesheets/modules/drawer/_layout.scss +++ /dev/null @@ -1,305 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Drawer layout - * ------------------------------------------------------------------------- */ - -/* - * Drawer container - */ -.drawer { - width: 262px; - font-size: 13px; - line-height: 1.0em; - - /* [tablet landscape-]: Fixed positioning */ - @include break-to-device(tablet landscape) { - position: fixed; - z-index: 5; - height: 100%; - } - - /* [tablet landscape+]: Inline with content */ - @include break-from-device(tablet landscape) { - position: static; - float: left; - height: auto; - margin-bottom: 96px; - padding-top: 80px; - } - - /* Hack [iOS]: Mitigate scrolling of parent container on boundaries */ - .ios & { - overflow: scroll; - -webkit-overflow-scrolling: touch; - } - - /* - * Links to articles - */ - .toc li a { - display: block; - padding: 14.5px 24px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - /* - * Links to anchors - */ - .toc li.anchor a { - margin-left: 12px; - padding: 10px 24px 10px 12px; - } - - /* - * Nested links and anchors - */ - .toc li ul { - margin-left: 12px; - } - - /* - * Nested anchors - */ - .current + ul { - margin-bottom: 9px; - } - - /* - * Main sections - */ - .section { - display: block; - padding: 14.5px 24px; - } - - /* - * Scrollable container - */ - .scrollable { - top: 104px; - z-index: -1; - - /* [tablet landscape+]: Revert fixed positioning */ - @include break-from-device(tablet landscape) { - position: static; - } - - /* - * Leave room for status bar in iOS web application - */ - .ios.standalone & { - - /* [orientation: portrait]: Account for status bar in portrait mode */ - @include break-at-orientation(portrait) { - top: (104px + 20px); - } - } - - /* - * Content wrapper - */ - .wrapper { - height: auto; - min-height: 100%; - - /* - * Add spacing at top and bottom of separator - */ - hr { - margin: 12px 0; - - /* [screen+]: Shorten separator */ - @include break-from-device(screen) { - width: 48px; - } - - /* Hack [IE]: Left-align horizontal rule */ - margin-right: auto; - } - - /* - * Add spacing at top and bottom of top level navigation - */ - .toc { - margin: 12px 0; - } - } - } -} - -/* - * Project information - */ -.project { - display: block; - - /* - * Leave room for status bar in iOS web application - */ - .ios.standalone & { - - /* [orientation: portrait]: Account for status bar in portrait mode */ - @include break-at-orientation(portrait) { - padding-top: 20px; - - /* - * Add status bar overlay - */ - &:before { - content: " "; - position: absolute; - top: 0; - left: 0; - z-index: 4; - width: 100%; - height: 20px; - } - } - } - - /* - * Project banner - */ - .banner { - display: table; - width: 100%; - height: 104px; - padding: 20px; - } - - /* - * Project logo - */ - .logo { - display: table-cell; - width: 64px; - padding-right: 12px; - - /* - * Project logo image - */ - img { - display: block; - width: 64px; - height: 64px; - } - } - - /* - * Project name - */ - .name { - display: table-cell; - padding-left: 4px; - font-size: 14px; - line-height: 1.25em; - vertical-align: middle; - - /* [tablet portait+]: Slightly larger project name */ - @include break-from-device(tablet portrait) { - margin: 26px 0 0 5px; - } - } - - /* - * Shrink font, if a logo is given. - */ - .logo + .name { - font-size: 12px; - } -} - -/* - * Repository - */ -.repo { - margin: 24px 0; - text-align: center; - - /* - * Inline buttons - */ - li { - display: inline-block; - padding-right: 12px; - white-space: nowrap; - - /* - * No padding on last button - */ - &:last-child { - padding-right: 0; - } - } - - /* - * Buttons - */ - a { - display: inline-block; - padding: 0px 10px 0px 6px; - font-size: 12px; - line-height: 30px; - height: 30px; - - /* - * Slightly larger icons - */ - .icon { - font-size: 18px; - vertical-align: -3px; - } - - /* - * Stars - */ - .count { - display: inline-block; - position: relative; - padding: 0px 8px 0 4px; - margin: 0 -10px 0 8px; - font-size: 12px; - - /* - * Star bubble - */ - &:before { - content: " "; - display: block; - position: absolute; - top: 0px; - left: -5px; - } - - /* - * Hide count, in case javascript is not available. - */ - .no-js & { - display: none; - } - } - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/search/_animation.scss b/src/assets/stylesheets/modules/search/_animation.scss deleted file mode 100644 index 37df48f32..000000000 --- a/src/assets/stylesheets/modules/search/_animation.scss +++ /dev/null @@ -1,134 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Search animation - * ------------------------------------------------------------------------- */ - -/* - * Animate header bar in offset and opacity - */ -.bar { - transform: translate3d(0, 0, 0); - transition: opacity .2s cubic-bezier(.75, 0, .25, 1), - transform .4s cubic-bezier(.75, 0, .25, 1); - - /* - * Active search mode - */ - #toggle-search:checked ~ .header &, - .toggle-search & { - transform: translate3d(0, -56px, 0); - } - - /* - * Search animations - */ - &.search { - - /* - * Hide reset button by default - */ - .button-reset { - transform: scale(0.5, 0.5); - transition: opacity .4s cubic-bezier(.1, .7, .1, 1), - transform .4s cubic-bezier(.1, .7, .1, 1); - opacity: 0; - } - - /* - * Show reset button if search is not empty - */ - &.non-empty .button-reset { - transform: scale(1.0, 1.0); - opacity: 1; - } - } -} - -/* - * Search results - */ -.results { - transition: opacity .3s .1s, - width .0s .4s, - height .0s .4s; - - /* - * Active search mode - */ - #toggle-search:checked ~ .main &, - .toggle-search & { - transition: opacity .4s, - width .0s, - height .0s; - } - - /* - * Search result item link - */ - .list a { - transition: background .25s; - } -} - -/* - * Just hide and show bars, if browser doesn't support 3D transforms - */ -.no-csstransforms3d { - - /* - * Show default bar - */ - .bar.default { - display: table; - } - - /* - * Hide search bar - */ - .bar.search { - display: none; - margin-top: 0; - } - - /* - * Active search mode - */ - #toggle-search:checked ~ .header, - .toggle-search { - - /* - * Hide default bar - */ - .bar.default { - display: none; - } - - /* - * Show search bar - */ - .bar.search { - display: table; - } - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/search/_appearance.scss b/src/assets/stylesheets/modules/search/_appearance.scss deleted file mode 100644 index 045cd7613..000000000 --- a/src/assets/stylesheets/modules/search/_appearance.scss +++ /dev/null @@ -1,139 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Search appearance - * ------------------------------------------------------------------------- */ - -/* - * Search bar - */ -.bar.search { - opacity: 0; - - /* - * Search input - */ - .query { - background: transparent; - color: $black; - - /* - * Search input placeholder - */ - @include placeholder { - color: $black-lighter; - } - } - - /* - * Pushed/clicked icon - */ - .button .icon:active { - background: $black-lightest; - } -} - -/* - * Search results - */ -.results { - @include drop-shadow(2); - - background: $white; - color: $black; - opacity: 0; - - /* - * Active search mode - */ - #toggle-search:checked ~ .main &, - .toggle-search & { - opacity: 1; - } - - /* - * Search meta data - */ - .meta { - background: $primary; - color: $white; - } - - /* - * Search result item link - */ - .list a { - border-bottom: 1px solid $black-lightest; - - /* - * Remove border on last element - */ - &:last-child { - border-bottom: none; - } - - /* - * Active item link - */ - &:active { - background: $black-lightest; - } - } -} - -/* - * Article link - */ -.result span { - color: $black-light; -} - -/* - * Active search bar - */ -#toggle-search:checked ~ .header, -.toggle-search .header { - background: $white; - color: $black-light; - - /* - * Add darker status bar overlay in search mode - */ - &:before { - background: $black-light; - } - - /* - * Fade out default header bar - */ - .bar.default { - opacity: 0; - } - - /* - * Fade in search header bar - */ - .bar.search { - opacity: 1; - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/search/_layout.scss b/src/assets/stylesheets/modules/search/_layout.scss deleted file mode 100644 index 33c89be98..000000000 --- a/src/assets/stylesheets/modules/search/_layout.scss +++ /dev/null @@ -1,218 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Search layout - * ------------------------------------------------------------------------- */ - -/* - * Search bar - */ -.bar.search { - margin-top: 8px; - - /* - * Search input - */ - .query { - font-size: 18px; - padding: 13px 0; - margin: 0; - width: 100%; - height: 48px; - - /* [tablet portait+]: Slightly larger typo */ - @include break-from-device(tablet portrait) { - font-size: 20px; - padding: 12px 0; - } - - /* Hack [IE]: Hide redundant clear button */ - &::-ms-clear { - display: none; - } - } -} - -/* - * Search results - */ -.results { - position: fixed; - top: 0; - left: 0; - width: 0; - height: 100%; - z-index: 2; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - - /* [tablet landscape+]: Limit results to five entries */ - @include break-from-device(tablet landscape) { - height: auto; - top: 64px; - } - - /* - * Scrollable container - */ - .scrollable { - top: 56px; - - /* [tablet portait+]: Increase vertical spacing */ - @include break-from-device(tablet portrait) { - top: 64px; - } - - /* [tablet landscape+]: Limit results to five entries */ - @include break-from-device(tablet landscape) { - position: static; - max-height: 413px; - } - - /* - * Leave room for status bar in iOS web application - */ - .ios.standalone & { - - /* [orientation: portrait]: Account for status bar in portrait mode */ - @include break-at-orientation(portrait) { - top: (56px + 20px); - - /* [tablet portait+]: Increase vertical spacing */ - @include break-from-device(tablet portrait) { - top: (64px + 20px); - } - } - } - } - - /* - * Active search mode - */ - #toggle-search:checked ~ .main &, - .toggle-search & { - width: 100%; - - /* Hack [Firefox]: div doesn't collapse, unless this is applied */ - overflow-y: visible; - - /* [tablet portait+]: Stretch to viewport */ - @include break-to-device(tablet landscape) { - height: 100%; - } - } - - /* - * Search meta data - */ - .meta { - font-weight: 700; - - /* - * Number of results - */ - strong { - display: block; - font-size: 11px; - max-width: 1200px; - margin-left: auto; - margin-right: auto; - padding: 16px; - - /* [tablet portait+]: Increase vertical spacing */ - @include break-from-device(tablet portrait) { - padding: 16px 24px; - } - } - } - - /* - * Search result item link - */ - .list a { - display: block; - } -} - -/* - * Search result item - */ -.result { - max-width: 1200px; - margin-left: auto; - margin-right: auto; - padding: 12px 16px 16px; - - /* [tablet portait+]: Increase vertical spacing */ - @include break-from-device(tablet portrait) { - padding: 16px 24px 20px; - } - - /* - * Article title - */ - h1 { - line-height: 24px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } - - /* - * Article link - */ - span { - font-size: 12px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } -} - -/* - * Switch visibility, if browser doesn't support 3D transforms - */ -.no-csstransforms3d { - - /* - * Hide search results - */ - .results { - display: none; - } - - /* - * Active search mode - */ - #toggle-search:checked ~ .main, - .toggle-search { - - /* - * Show search results - */ - .results { - display: block; - overflow: auto; - } - } -} \ No newline at end of file diff --git a/src/assets/stylesheets/modules/search/_typography.scss b/src/assets/stylesheets/modules/search/_typography.scss deleted file mode 100644 index 465f20ede..000000000 --- a/src/assets/stylesheets/modules/search/_typography.scss +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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. - */ - -/* - * Search meta data - */ -.meta { - text-transform: uppercase; - font-weight: 700; -} \ No newline at end of file diff --git a/src/assets/stylesheets/palettes.scss b/src/assets/stylesheets/palettes.scss deleted file mode 100644 index fe2fc69e4..000000000 --- a/src/assets/stylesheets/palettes.scss +++ /dev/null @@ -1,221 +0,0 @@ -/* - * 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. - */ - -/* ---------------------------------------------------------------------------- - * Dependencies - * ------------------------------------------------------------------------- */ - -@import "bourbon"; -@import "quantum-colors"; -@import "quantum-shadows"; - -/* ---------------------------------------------------------------------------- - * Application - * ------------------------------------------------------------------------- */ - -@import "palette"; - -@import "mixins/break"; - -/* ---------------------------------------------------------------------------- - * Palette - * ------------------------------------------------------------------------- */ - -/* - * Build primary palette - */ -@each $name, $color in ( - 'red': $red-400, - 'pink': $pink-500, - 'purple': $purple-400, - 'deep-purple': $deep-purple-400, - 'indigo': $indigo-500, - 'blue': $blue-500, - 'light-blue': $light-blue-500, - 'cyan': $cyan-500, - 'teal': $teal-500, - 'green': $green-500, - 'light-green': $light-green-600, - 'lime': $lime-600, - 'yellow': $yellow-800, - 'amber': $amber-600, - 'orange': $orange-600, - 'deep-orange': $deep-orange-400, - 'brown': $brown-500, - 'grey': $grey-600, - 'blue-grey': $blue-grey-600 -) { - - /* - * Device specific background hacks related to rubberband - */ - .palette-primary-#{$name} { - - /* Hack [Chrome, Opera]: Set background color in Chrome and Opera */ - @supports (-webkit-appearance: none) { - background: $color; - } - - /* - * Application header and footer - */ - .header, .footer { - background: $color; - } - - /* - * Drawer container - */ - .drawer { - - /* - * Color links - */ - .toc a { - - /* - * Current active element - */ - &.current { - color: $color; - } - - /* - * Hovered link - */ - &:hover, &:focus { - color: $color; - } - } - - /* - * Color anchors menu - */ - .anchor a { - border-left: 2px solid $color; - } - } - - /* - * Project information - */ - .project { - - /* [tablet landscape-]: Set background color */ - @include break-to-device(tablet landscape) { - background: $color; - } - } - - /* - * Article - */ - .article { - - /* - * Differing top and bottom rubberband backgrounds in iOS web application - */ - .ios.standalone & { - background: linear-gradient( - to bottom, $white 50%, $color 50%); - } - - /* - * Headlines, chapters, links and inline code - */ - h1, h2, a, code { - color: $color; - } - - /* - * Light permalinks - */ - .headerlink { - color: $black-lighter; - } - - /* - * Data table headings - */ - table th { - background: mix($color, $white, 75%); - } - } - - /* - * Search meta data - */ - .results .meta { - background: $color; - } - } -} - -/* - * Build accent palette - */ -@each $name, $color in ( - 'red': $red-a400, - 'pink': $pink-a400, - 'purple': $purple-a200, - 'deep-purple': $deep-purple-a200, - 'indigo': $indigo-a200, - 'blue': $blue-a200, - 'light-blue': $light-blue-a700, - 'cyan': $cyan-a700, - 'teal': $teal-a700, - 'green': $green-a700, - 'light-green': $light-green-a700, - 'lime': $lime-a700, - 'yellow': $yellow-a700, - 'amber': $amber-a700, - 'orange': $orange-a400, - 'deep-orange': $deep-orange-a200 -) { - - /* - * Device specific background hacks related to rubberband - */ - .palette-accent-#{$name} { - - /* - * Article - */ - .article { - - /* - * Hovered and focused links - */ - a:hover, - a:focus { - color: $color; - } - } - - /* - * Repository buttons - */ - .repo a { - background: $color; - } - } -} \ No newline at end of file diff --git a/src/base.html b/src/base.html index ce705dcff..811fe0900 100644 --- a/src/base.html +++ b/src/base.html @@ -1,3 +1,25 @@ + + @@ -9,7 +31,7 @@ + user-scalable=no, initial-scale=1, maximum-scale=1" /> {% block htmltitle %} @@ -39,44 +61,19 @@ {% endif %} {% endblock %} - - - - - - - - - - - - {% if config.extra.logo %} - - {% endif %} - - - {% set icon = icon | default("assets/images/favicon.ico") %} - - - - {% endif %} + + {% for path in extra_css %} @@ -116,158 +94,79 @@ - - - {% block extrahead %}{% endblock %} - - - {% set palette = config.extra.get("palette", {}) %} - {% set primary = palette.primary | replace(' ', '-') | lower %} - {% set accent = palette.accent | replace(' ', '-') | lower %} - - - - {% if repo_name == "GitHub" and repo_url %} - {% set repo_id = repo_url | replace("https://github.com/", "") %} - {% if repo_id[-1:] == "/" %} - {% set repo_id = repo_id[:-1] %} - {% endif %} - {% endif %} - - -
    -
    -
    + - - + + - + - -
    - {% include "header.html" %} -
    + + {% include "header.html" %} - -
    + +
    - - {% set h1 = "\x3ch1 id=" in content %} + +
    +
    - -
    - {% include "drawer.html" %} -
    + + {% set h1 = "\x3ch1 id=" in content %} - -
    -
    - - - {% if not h1 %} -

    {{ page_title | default(site_name, true)}}

    + + {% if nav %} + {% include "nav.html" %} {% endif %} - - {{ content }} + + {% if toc %} + {% include "toc.html" %} + {% endif %} - - + +
    +
    + {{ content }} - - {% block footer %} -
    - {% include "footer.html" %} -
    - {% endblock %} -
    -
    - - -
    -
    -
    -
    -
    + +
    + + {% if copyright %} + {{ copyright }} – + {% endif %} + This document was created with + MkDocs + and the + Material + theme. + +
    -
    -
    +
    + + + {% include "footer.html" %} + {% for path in extra_javascript %} {% endfor %} - - - {% if google_analytics %} - - {% endif %} \ No newline at end of file diff --git a/src/drawer.html b/src/drawer.html deleted file mode 100644 index 45d8308f6..000000000 --- a/src/drawer.html +++ /dev/null @@ -1,96 +0,0 @@ - - \ No newline at end of file diff --git a/src/footer.html b/src/footer.html index 012515541..e2410deee 100644 --- a/src/footer.html +++ b/src/footer.html @@ -1,48 +1,73 @@ - -{% if include_next_prev %} - - -{% endif %} \ No newline at end of file + {% endif %} + \ No newline at end of file diff --git a/src/header.html b/src/header.html index dc2a0e434..f4a9ec52f 100644 --- a/src/header.html +++ b/src/header.html @@ -1,84 +1,60 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/src/nav-item.html b/src/nav-item.html new file mode 100644 index 000000000..887059c29 --- /dev/null +++ b/src/nav-item.html @@ -0,0 +1,68 @@ + + + +{% if nav_item.children %} +
  • + + + {% if nav_item.active %} + + {% else %} + + {% endif %} + +
      + + + {% for nav_item in nav_item.children %} + {% set temp = path %} + {% set path = path + "-" + loop.index | string %} + {% include "nav-item.html" %} + {% set path = temp %} + {% endfor %} +
    +
  • + + +{% else %} +
  • + {% if nav_item.active %} + + {{ nav_item.title }} + + {% else %} + + {{ nav_item.title }} + + {% endif %} +
  • +{% endif %} \ No newline at end of file diff --git a/src/nav.html b/src/nav.html index 1d70b9fc1..9d4e766ca 100644 --- a/src/nav.html +++ b/src/nav.html @@ -1,51 +1,36 @@ - -{% if nav_item.children %} -
  • - {{ nav_item.title }} -
      + - {% for nav_item in nav_item.children %} - {% include "nav.html" %} - {% endfor %} -
    -
  • + 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: - -{% else %} -
  • - - {{ nav_item.title }} - + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - - {% if nav_item == current_page %} + 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. +--> - - {% if h1 %} - {% set toc = (toc | first).children %} - {% endif %} - - - {% if toc and (toc | first) %} - - {% endif %} - {% endif %} -
  • -{% endif %} \ No newline at end of file + +
    +
    + +
    +
    \ No newline at end of file diff --git a/src/toc-item.html b/src/toc-item.html new file mode 100644 index 000000000..82ab867a6 --- /dev/null +++ b/src/toc-item.html @@ -0,0 +1,38 @@ + + + +
  • + + {{ toc_item.title }} + + + + {% if toc_item.children %} +
      + {% for toc_item in toc_item.children %} + {% include "toc-item.html" %} + {% endfor %} +
    + {% endif %} +
  • \ No newline at end of file diff --git a/src/toc.html b/src/toc.html new file mode 100644 index 000000000..728fba1cb --- /dev/null +++ b/src/toc.html @@ -0,0 +1,49 @@ + + + +
    +
    + +
    +
    \ No newline at end of file