From 933804588735cd8586b31ba250a6576465ff303d Mon Sep 17 00:00:00 2001 From: squidfunk Date: Fri, 23 Sep 2016 11:56:25 +0200 Subject: [PATCH] Refactored navigation and drawer --- CHANGELOG | 10 +- Gulpfile.js | 8 +- docs/extensions/admonition.md | 3 + docs/extensions/footnotes.md | 2 + docs/extensions/meta.md | 304 ++++++++++++++++++ docs/specimen.md | 84 ++++- material/404.html | 5 +- .../images/icons/github-black-3dffdcccb0.svg | 1 - .../images/icons/github-black-da331b3ec4.svg | 1 + .../images/icons/github-white-1cfc8ff99e.svg | 1 + .../images/icons/github-white-75cacf3601.svg | 1 - .../images/icons/gitlab-black-81ba4a278f.svg | 1 + .../images/icons/gitlab-black-bedc10d7f4.svg | 1 - .../images/icons/gitlab-white-3c8a368006.svg | 1 - .../images/icons/gitlab-white-d65054b8fe.svg | 1 + ...c947cb450.js => application-48691dba51.js} | 4 +- .../javascripts/modernizr-772e114b08.js | 1 - .../javascripts/modernizr-d3fe1698b6.js | 1 + .../stylesheets/application-07c02d33cc.css | 1 - .../stylesheets/application-cbcef7edd5.css | 1 + material/base.html | 40 ++- material/nav-item.html | 32 -- material/nav.html | 13 - material/{ => partials}/footer.html | 2 +- material/{ => partials}/header.html | 36 +-- material/partials/nav-item.html | 50 +++ material/partials/nav.html | 9 + material/partials/search.html | 20 ++ material/partials/toc-item.html | 14 + material/partials/toc.html | 13 + material/search.html | 0 material/toc-item.html | 12 - material/toc.html | 17 - mkdocs.yml | 17 +- src/404.html | 29 +- src/assets/images/icons/bitbucket-black.svg | 32 +- src/assets/images/icons/bitbucket-white.svg | 32 +- src/assets/images/icons/github-black.svg | 41 +-- src/assets/images/icons/github-white.svg | 41 +-- src/assets/javascripts/application.js | 37 +++ src/assets/javascripts/components/sidebar.js | 2 +- src/assets/stylesheets/_config.scss | 37 ++- src/assets/stylesheets/_shame.scss | 65 ++++ src/assets/stylesheets/base/_icons.scss | 41 ++- src/assets/stylesheets/base/_reset.scss | 2 - src/assets/stylesheets/base/_typeset.scss | 61 ++-- .../stylesheets/extensions/_admonition.scss | 5 +- .../stylesheets/extensions/_footnotes.scss | 120 ++++--- .../stylesheets/extensions/_permalinks.scss | 2 +- src/assets/stylesheets/layout/_base.scss | 14 +- src/assets/stylesheets/layout/_content.scss | 8 +- src/assets/stylesheets/layout/_footer.scss | 7 +- src/assets/stylesheets/layout/_header.scss | 7 +- src/assets/stylesheets/layout/_nav.scss | 271 ++++++++++++++-- src/assets/stylesheets/layout/_search.scss | 28 +- src/assets/stylesheets/layout/_sidebar.scss | 33 +- src/assets/stylesheets/layout/_source.scss | 8 +- src/base.html | 39 ++- src/{ => partials}/footer.html | 2 +- src/{ => partials}/header.html | 46 +-- src/{ => partials}/nav-item.html | 85 +++-- src/{ => partials}/nav.html | 22 +- src/partials/search.html | 50 +++ src/{ => partials}/toc-item.html | 14 +- src/{ => partials}/toc.html | 44 ++- src/search.html | 0 66 files changed, 1385 insertions(+), 547 deletions(-) delete mode 100644 material/assets/images/icons/github-black-3dffdcccb0.svg create mode 100644 material/assets/images/icons/github-black-da331b3ec4.svg create mode 100644 material/assets/images/icons/github-white-1cfc8ff99e.svg delete mode 100644 material/assets/images/icons/github-white-75cacf3601.svg create mode 100644 material/assets/images/icons/gitlab-black-81ba4a278f.svg delete mode 100644 material/assets/images/icons/gitlab-black-bedc10d7f4.svg delete mode 100644 material/assets/images/icons/gitlab-white-3c8a368006.svg create mode 100644 material/assets/images/icons/gitlab-white-d65054b8fe.svg rename material/assets/javascripts/{application-ac947cb450.js => application-48691dba51.js} (71%) delete mode 100644 material/assets/javascripts/modernizr-772e114b08.js create mode 100644 material/assets/javascripts/modernizr-d3fe1698b6.js delete mode 100644 material/assets/stylesheets/application-07c02d33cc.css create mode 100644 material/assets/stylesheets/application-cbcef7edd5.css delete mode 100644 material/nav-item.html delete mode 100644 material/nav.html rename material/{ => partials}/footer.html (99%) rename material/{ => partials}/header.html (52%) create mode 100644 material/partials/nav-item.html create mode 100644 material/partials/nav.html create mode 100644 material/partials/search.html create mode 100644 material/partials/toc-item.html create mode 100644 material/partials/toc.html delete mode 100644 material/search.html delete mode 100644 material/toc-item.html delete mode 100644 material/toc.html rename src/{ => partials}/footer.html (99%) rename src/{ => partials}/header.html (66%) rename src/{ => partials}/nav-item.html (56%) rename src/{ => partials}/nav.html (73%) create mode 100644 src/partials/search.html rename src/{ => partials}/toc-item.html (87%) rename src/{ => partials}/toc.html (57%) delete mode 100644 src/search.html diff --git a/CHANGELOG b/CHANGELOG index aa9ef833b..9a180dae0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,20 +10,26 @@ mkdocs-material-1.0.0-rc.1 (2016-XX-XX) * Introduced Webpack for more sophisticated JavaScript bundling * Introduced ESLint and SassLint for code style checks * Introduced more accurate Material Design colors and shadows - * Introduced Modular Scales for harmonic font sizing - * Rewrite of CSS using the BEM methodology and SassDoc styles + * Introduced modular scales for harmonic font sizing + * Rewrite of CSS using the BEM methodology and SassDoc guidelines * Rewrite of JavaScript using ES6 and Babel as a transpiler * Rewrite of Admonition, Permalinks and Codehilite integration * Rewrite of the complete typographical system * Removed Bower as a dependency in favor of npm * Removed custom icon build in favor of the Material Design iconset * Removed _blank targets on links due to vulnerability: http://bit.ly/1Mk2Rtw + * Removed unversioned assets from build directory + * Restructured templates into base templates and partials * Added build and watch scripts in package.json * Added support for Metadata and Footnotes Markdown extensions + * Added support for pymdownx.* Markdown extensions * Added support for collapsible sections in navigation * Added support for separate table of contents * Added support for better accessibility through REM-based layout + * Added icons for GitHub, GitLab and BitBucket integrations * Added more detailed documentation on specimen, extensions etc. + * Added a 404.html error page for deployment on GitHub Pages + * Fixed live reload chain in watch mode when saving a template mkdocs-material-0.2.4 (2016-06-26) diff --git a/Gulpfile.js b/Gulpfile.js index 9a2e78f70..72c46bc9f 100755 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -262,6 +262,7 @@ gulp.task('assets:build:modernizr', [ */ gulp.task('assets:build:images:svg', function() { return gulp.src('src/assets/images/**/*.svg') + .pipe(gulpif(watch, changed('material/assets/images'))) .pipe(gulpif(args.production, minsvg())) .pipe(gulpif(args.production, rev())) .pipe(gulp.dest('material/assets/images')) @@ -302,7 +303,7 @@ gulp.task('assets:build:views', args.production ? [ 'assets:build:images' ] : [], function() { var metadata = require('./package.json'); - return gulp.src('src/*.html') + return gulp.src('src/**/*.html') .pipe(gulpif(watch, changed('material'))) .pipe( minhtml({ @@ -354,7 +355,7 @@ gulp.task('assets:watch', function() { /* Minify views */ gulp.watch([ - 'src/*.html' + 'src/**/*.html' ], ['assets:build:views']); }); @@ -413,7 +414,8 @@ gulp.task('build', [ * Start asset and MkDocs watchdogs. */ gulp.task('watch', [ - 'assets:build', + 'assets:clean', + 'assets:build' ], function() { return gulp.start([ 'assets:watch' diff --git a/docs/extensions/admonition.md b/docs/extensions/admonition.md index f7b084bae..10684410c 100644 --- a/docs/extensions/admonition.md +++ b/docs/extensions/admonition.md @@ -41,6 +41,9 @@ TODO: NESTED... !!! hint "hint, note default" +!!! summary "summary, tldr" + This is a very long text, yes. I'm so sorry. + !!! tip "tip, idea" !!! success "success, check, done" diff --git a/docs/extensions/footnotes.md b/docs/extensions/footnotes.md index 6b47c0b26..8a18f78b3 100644 --- a/docs/extensions/footnotes.md +++ b/docs/extensions/footnotes.md @@ -29,6 +29,8 @@ sem ut cursus. Nullam sit amet tincidunt ipsum, sit amet elementum turpis. Etiam ipsum quam, mattis in purus vitae, lacinia fermentum enim. ## [Some headline with a link](http://www.google.de) +### Third level +#### Fourth level Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nisl ac urna lobortis consectetur ut vitae urna. Donec eu viverra sapien. Nam diff --git a/docs/extensions/meta.md b/docs/extensions/meta.md index e69de29bb..6ff0835d2 100644 --- a/docs/extensions/meta.md +++ b/docs/extensions/meta.md @@ -0,0 +1,304 @@ +# Command Line Interface (```CLI```) + +Sequelize `2.0.0` introduces a new CLI which is based on [gulp][0] and combines [sequelize-cli][1] and [gulp-sequelize][2]. The CLI ships support for migrations and project bootstrapping. With migrations you can transfer your existing database into another state and vice versa: Those state transitions are saved in migration files, which describe the way how to get to the new state and how to revert the changes in order to get back to the old state. + +## The CLI + +In order to use the CLI you need to install the respective package: + +```bash +$ npm install --save sequelize-cli +``` + +As with any npm package, you can use the global flag (`-g`) to install the CLI globally. If you have installed the CLI without the global flag, use `node_modules/.bin/sequelize [command]` instead of `sequelize [command]`. + +The CLI currently supports the following commands: + +```bash +$ sequelize db:migrate # Run pending migrations. +$ sequelize db:migrate:undo # Revert the last migration run. +$ sequelize help # Display this help text. +$ sequelize init # Initializes the project. +$ sequelize migration:create # Generates a new migration file. +$ sequelize version # Prints the version number. +``` + +Further and more detailed information about the available commands +can be obtained via the help command: + +```bash +$ sequelize help:init +$ sequelize help:db:migrate +$ sequelize help:db:migrate:undo +# etc +``` + +The latter one for example will print out the following output: + +```bash +Sequelize [CLI: v0.0.2, ORM: v1.7.5] + +COMMANDS + sequelize db:migrate:undo -- Revert the last migration run. + +DESCRIPTION + Revert the last migration run. + +OPTIONS + --env The environment to run the command in. Default: development + --options-path The path to a JSON file with additional options. Default: none + --coffee Enables coffee script support. Default: false + --config The path to the config file. Default: config/config.json +``` + +## Skeleton + +The following skeleton shows a typical migration file. All migrations are expected to be located in a folder called `migrations` at the very top of the project. The sequelize binary can generate a migration skeleton. See the above section for more details. + +```js +module.exports = { + up: function(queryInterface, Sequelize) { + // logic for transforming into the new state + }, + + down: function(queryInterface, Sequelize) { + // logic for reverting the changes + } +} +``` + +The passed `queryInterface` object can be used to modify the database. The `Sequelize` object stores the available data types such as `STRING` or `INTEGER`. Function `up` or `down` should return a `Promise`. Here is some code: + +```js +module.exports = { + up: function(queryInterface, Sequelize) { + return queryInterface.dropAllTables(); + } +} +``` + +The available methods of the queryInterface object are the following. + +## Functions + +Using the `queryInterface` object describe before, you will have access to most of already introduced functions. Furthermore there are some other methods, which are designed to actually change the database schema. + +### createTable(tableName, attributes, options) + +This method allows creation of new tables. It is allowed to pass simple or complex attribute definitions. You can define the encoding of the table and the table's engine via options + +```js +queryInterface.createTable( + 'nameOfTheNewTable', + { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true + }, + createdAt: { + type: Sequelize.DATE + }, + updatedAt: { + type: Sequelize.DATE + }, + attr1: Sequelize.STRING, + attr2: Sequelize.INTEGER, + attr3: { + type: Sequelize.BOOLEAN, + defaultValue: false, + allowNull: false + }, + //foreign key usage + attr4: { + type: Sequelize.INTEGER, + references: { + model: 'another_table_name', + key: 'id' + }, + onUpdate: 'cascade', + onDelete: 'cascade' + } + }, + { + engine: 'MYISAM', // default: 'InnoDB' + charset: 'latin1', // default: null + schema: 'public' // default: public, PostgreSQL only. + } +) +``` + +### ```:::js dropTable(var tableName, options)``` + +This method allows deletion of an existing table. + +```js +queryInterface.dropTable('nameOfTheExistingTable') +``` + +### dropAllTables(options) + +This method allows deletion of all existing tables in the database. + +```js +queryInterface.dropAllTables() +``` + +### renameTable(before, after, options) + +This method allows renaming of an existing table. + +```js +queryInterface.renameTable('Person', 'User') +``` + +### showAllTables(options) + +This method returns the name of all existing tables in the database. + +```js +queryInterface.showAllTables().then(function(tableNames) {}) +``` + +### describeTable(tableName, options) + +This method returns an array of hashes containing information about all attributes in the table. + +```js +queryInterface.describeTable('Person').then(function(attributes) { + /* + attributes will be something like: + + { + name: { + type: 'VARCHAR(255)', // this will be 'CHARACTER VARYING' for pg! + allowNull: true, + defaultValue: null + }, + isBetaMember: { + type: 'TINYINT(1)', // this will be 'BOOLEAN' for pg! + allowNull: false, + defaultValue: false + } + } + */ +}) +``` + +### addColumn(tableNameOrOptions, attributeName, dataTypeOrOptions, options) + +This method allows adding columns to an existing table. The data type can be simple or complex. + +```js +queryInterface.addColumn( + 'nameOfAnExistingTable', + 'nameOfTheNewAttribute', + Sequelize.STRING +) + +// or + +queryInterface.addColumn( + 'nameOfAnExistingTable', + 'nameOfTheNewAttribute', + { + type: Sequelize.STRING, + allowNull: false + } +) + +// or with an explicit schema: + +queryInterface.addColumn({ + tableName: 'Person', + schema: 'public' + }, + 'signature', + Sequelize.STRING +) + +``` + +### removeColumn(tableNameOrOptions, attributeName, options) + +This method allows deletion of a specific column of an existing table. + +```js +queryInterface.removeColumn('Person', 'signature') + +// or with an explicit schema: + +queryInterface.removeColumn({ + tableName: 'Person', + schema: 'public' +}, 'signature'); +``` + +### changeColumn(tableName, attributeName, dataTypeOrOptions, options) + +This method changes the meta data of an attribute. It is possible to change the default value, allowance of null or the data type. Please make sure, that you are completely describing the new data type. + +```js +queryInterface.changeColumn( + 'nameOfAnExistingTable', + 'nameOfAnExistingAttribute', + { + type: Sequelize.FLOAT, + allowNull: false, + defaultValue: 0.0 + } +) +``` + +### renameColumn(tableName, attrNameBefore, attrNameAfter, options) + +This methods allows renaming attributes. + +```js +queryInterface.renameColumn('Person', 'signature', 'sig') +``` + +### addIndex(tableName, attributes, options) + +This methods creates indexes for specific attributes of a table. The index name will be automatically generated if it is not passed via in the options (see below). + +```js +// This example will create the index person_firstname_lastname +queryInterface.addIndex('Person', ['firstname', 'lastname']) + +// This example will create a unique index with the name SuperDuperIndex using the optional 'options' field. +// Possible options: +// - indicesType: UNIQUE|FULLTEXT|SPATIAL +// - indexName: The name of the index. Default is __ +// - parser: For FULLTEXT columns set your parser +// - indexType: Set a type for the index, e.g. BTREE. See the documentation of the used dialect +// - logging: A function that receives the sql query, e.g. console.log +queryInterface.addIndex( + 'Person', + ['firstname', 'lastname'], + { + indexName: 'SuperDuperIndex', + indicesType: 'UNIQUE' + } +) +``` + +### removeIndex(tableName, indexNameOrAttributes, options) + +This method deletes an existing index of a table. + +```js +queryInterface.removeIndex('Person', 'SuperDuperIndex') + +// or + +queryInterface.removeIndex('Person', ['firstname', 'lastname']) +``` + +## Programmatic use +Sequelize has a [sister library](https://github.com/sequelize/umzug) for programmatically handling execution and logging of migration tasks. + + +[0]: http://gulpjs.com/ +[1]: https://github.com/sequelize/cli +[2]: https://github.com/sequelize/gulp-sequelize \ No newline at end of file diff --git a/docs/specimen.md b/docs/specimen.md index e920c8c4b..3fa4fb522 100644 --- a/docs/specimen.md +++ b/docs/specimen.md @@ -1,4 +1,4 @@ -# Specimen +# Specimen should get a very long name, so we see how it behaves with the new edit url feature that is awesome ## Typography @@ -39,6 +39,86 @@ the `` tag directly inside Markdown. ### Unordered lists +## Checklists + +This is inline hilighted text `#!js var test = 0;` that is just awesome LOL + +* [ ] foo +* [x] bar +* [ ] baz + * [ ] foo + * [x] bar + * [ ] baz + + + +Another default list: + +* No checklist +* Foobar + + ``` js + function() test { + var foo = 12; + return foo; + } + ``` + +Here is some {--*incorrect*--} Markdown. I am adding this {++here.++}. Here is some more {--text +that I am removing--}text. And here is even more {++text that I +am ++}adding.{~~ + +~> ~~}Paragraph was deleted and replaced with some spaces.{~~ ~> + +~~}Spaces were removed and a paragraph was added. + +And here is a comment on {==some +==text== ==} asdhsjakh dkah dkash dkjas hdkash dksa sahdka kas dksa hdksah dksa kdsa kdask dask {>>This works quite well. I just wanted to comment on it.<<}. Substitutions {~~is~>are~~} great! + +### Test {--headline--} [`with code`](http://google.com) and ==foo== [without](http://google.com) + +This is also ==something that is marked (tm)==. Very cool. + +Escape \{>>This text is preserved<<}. + +General block handling. + +{-- + +* test +* test +* test + * test +* test + +--} + +{++ + +* test +* test +* test + * test +* test + +++} + ## Code ### Listing @@ -46,7 +126,7 @@ the `` tag directly inside Markdown. Pre-formatted code blocks can host code examples and use the pygments extension (if installed and enabled in `mkdocs.yml`) for syntax highlighting: -``` c +``` c hl_lines="14 15 20" /*! * Scan a buffer for a valid variable-sized integer. * diff --git a/material/404.html b/material/404.html index 2fd9f9570..3bbe15915 100644 --- a/material/404.html +++ b/material/404.html @@ -1 +1,4 @@ -TBD \ No newline at end of file +{% extends "base.html" %} +{% block content %} +

404 - Not found

+{% endblock %} \ No newline at end of file diff --git a/material/assets/images/icons/github-black-3dffdcccb0.svg b/material/assets/images/icons/github-black-3dffdcccb0.svg deleted file mode 100644 index 4139a689a..000000000 --- a/material/assets/images/icons/github-black-3dffdcccb0.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/material/assets/images/icons/github-black-da331b3ec4.svg b/material/assets/images/icons/github-black-da331b3ec4.svg new file mode 100644 index 000000000..169d723f9 --- /dev/null +++ b/material/assets/images/icons/github-black-da331b3ec4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/material/assets/images/icons/github-white-1cfc8ff99e.svg b/material/assets/images/icons/github-white-1cfc8ff99e.svg new file mode 100644 index 000000000..45fbc8291 --- /dev/null +++ b/material/assets/images/icons/github-white-1cfc8ff99e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/material/assets/images/icons/github-white-75cacf3601.svg b/material/assets/images/icons/github-white-75cacf3601.svg deleted file mode 100644 index 79d0364ec..000000000 --- a/material/assets/images/icons/github-white-75cacf3601.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/material/assets/images/icons/gitlab-black-81ba4a278f.svg b/material/assets/images/icons/gitlab-black-81ba4a278f.svg new file mode 100644 index 000000000..fc533874e --- /dev/null +++ b/material/assets/images/icons/gitlab-black-81ba4a278f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/material/assets/images/icons/gitlab-black-bedc10d7f4.svg b/material/assets/images/icons/gitlab-black-bedc10d7f4.svg deleted file mode 100644 index 7b6bd271e..000000000 --- a/material/assets/images/icons/gitlab-black-bedc10d7f4.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/material/assets/images/icons/gitlab-white-3c8a368006.svg b/material/assets/images/icons/gitlab-white-3c8a368006.svg deleted file mode 100644 index 48fd49d5f..000000000 --- a/material/assets/images/icons/gitlab-white-3c8a368006.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/material/assets/images/icons/gitlab-white-d65054b8fe.svg b/material/assets/images/icons/gitlab-white-d65054b8fe.svg new file mode 100644 index 000000000..1e922a9a4 --- /dev/null +++ b/material/assets/images/icons/gitlab-white-d65054b8fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/material/assets/javascripts/application-ac947cb450.js b/material/assets/javascripts/application-48691dba51.js similarity index 71% rename from material/assets/javascripts/application-ac947cb450.js rename to material/assets/javascripts/application-48691dba51.js index b9b3f3865..bb087444b 100644 --- a/material/assets/javascripts/application-ac947cb450.js +++ b/material/assets/javascripts/application-48691dba51.js @@ -1,8 +1,8 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var o=n(1),r=i(o),a=n(2),s=i(a),c=n(3),l=i(c);document.addEventListener("DOMContentLoaded",function(){Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)}),Modernizr.addTest("standalone",function(){return!!navigator.standalone}),r["default"].attach(document.body);var e=window.matchMedia("(min-width: 1200px)"),t=function(){e.matches?n.listen():n.unlisten()},n=new s["default"](".md-sidebar--primary");t();var i=new s["default"](".md-sidebar--secondary");i.listen();var o=new l["default"](".md-nav--toc .md-nav__link");o.listen(),window.addEventListener("resize",t);var a=0,c=document.getElementById("search");c.addEventListener("click",function(e){var t=document.body.classList,n=!matchMedia("only screen and (min-width: 960px)").matches;t.contains("md-js__body--locked")?(t.remove("md-js__body--locked"),n&&setTimeout(function(){window.scrollTo(0,a)},100)):(a=window.scrollY,n&&setTimeout(function(){window.scrollTo(0,0)},400),setTimeout(function(){this.checked&&(n&&t.add("md-js__body--locked"),setTimeout(function(){document.getElementById("md-search").focus()},200))}.bind(this),450))})})},function(e,t,n){var i;!function(){"use strict";/** +!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var o=n(1),r=i(o),a=n(2),s=i(a),c=n(3),u=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 u["default"](".md-nav--toc .md-nav__link");o.listen(),window.addEventListener("resize",t);var a=0,c=document.getElementById("search");c.addEventListener("click",function(e){var t=document.body.classList,n=!matchMedia("only screen and (min-width: 960px)").matches;t.contains("md-js__body--locked")?(t.remove("md-js__body--locked"),n&&setTimeout(function(){window.scrollTo(0,a)},100)):(a=window.scrollY,n&&setTimeout(function(){window.scrollTo(0,0)},400),setTimeout(function(){this.checked&&(n&&t.add("md-js__body--locked"),setTimeout(function(){document.getElementById("md-search").focus()},200))}.bind(this),450))}),fetch("https://api.github.com/repos/squidfunk/mkdocs-material").then(function(e){return e.json()}).then(function(e){var t=e.stargazers_count,n=e.forks_count,i=document.querySelector(".md-source__facts"),o=document.createElement("li");o.className="md-source__fact md-source__fact--hidden",o.innerText=t+" Stars",i.appendChild(o),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},100,o),o=document.createElement("li"),o.className="md-source__fact md-source__fact--hidden",o.innerText=n+" Forks",i.appendChild(o),setTimeout(function(e){e.classList.remove("md-source__fact--hidden")},500,o)})["catch"](function(e){console.log("parsing failed",e)})})},function(e,t,n){var i;!function(){"use strict";/** * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. * * @codingstandard ftlabs-jsv2 * @copyright The Financial Times Limited [All Rights Reserved] * @license MIT License (see LICENSE.txt) */ -function o(e,t){function n(e,t){return function(){return e.apply(t,arguments)}}var i;if(t=t||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=t.touchBoundary||10,this.layer=e,this.tapDelay=t.tapDelay||200,this.tapTimeout=t.tapTimeout||700,!o.notNeeded(e)){for(var r=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],s=this,c=0,l=r.length;c=0,a=navigator.userAgent.indexOf("Android")>0&&!r,s=/iP(ad|hone|od)/.test(navigator.userAgent)&&!r,c=s&&/OS 4_\d(_\d)?/.test(navigator.userAgent),l=s&&/OS [6-7]_\d/.test(navigator.userAgent),u=navigator.userAgent.indexOf("BB10")>0;o.prototype.needsClick=function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(s&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(e.className)},o.prototype.needsFocus=function(e){switch(e.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!a;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return/\bneedsfocus\b/.test(e.className)}},o.prototype.sendClick=function(e,t){var n,i;document.activeElement&&document.activeElement!==e&&document.activeElement.blur(),i=t.changedTouches[0],n=document.createEvent("MouseEvents"),n.initMouseEvent(this.determineEventType(e),!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),n.forwardedTouchEvent=!0,e.dispatchEvent(n)},o.prototype.determineEventType=function(e){return a&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},o.prototype.focus=function(e){var t;s&&e.setSelectionRange&&0!==e.type.indexOf("date")&&"time"!==e.type&&"month"!==e.type?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},o.prototype.updateScrollParent=function(e){var t,n;if(t=e.fastClickScrollParent,!t||!t.contains(e)){n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.fastClickScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.fastClickLastScrollTop=t.scrollTop)},o.prototype.getTargetElementFromEventTarget=function(e){return e.nodeType===Node.TEXT_NODE?e.parentNode:e},o.prototype.onTouchStart=function(e){var t,n,i;if(e.targetTouches.length>1)return!0;if(t=this.getTargetElementFromEventTarget(e.target),n=e.targetTouches[0],s){if(i=window.getSelection(),i.rangeCount&&!i.isCollapsed)return!0;if(!c){if(n.identifier&&n.identifier===this.lastTouchIdentifier)return e.preventDefault(),!1;this.lastTouchIdentifier=n.identifier,this.updateScrollParent(t)}}return this.trackingClick=!0,this.trackingClickStart=e.timeStamp,this.targetElement=t,this.touchStartX=n.pageX,this.touchStartY=n.pageY,e.timeStamp-this.lastClickTimen||Math.abs(t.pageY-this.touchStartY)>n},o.prototype.onTouchMove=function(e){return!this.trackingClick||((this.targetElement!==this.getTargetElementFromEventTarget(e.target)||this.touchHasMoved(e))&&(this.trackingClick=!1,this.targetElement=null),!0)},o.prototype.findControl=function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},o.prototype.onTouchEnd=function(e){var t,n,i,o,r,u=this.targetElement;if(!this.trackingClick)return!0;if(e.timeStamp-this.lastClickTimethis.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=e.timeStamp,n=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,l&&(r=e.changedTouches[0],u=document.elementFromPoint(r.pageX-window.pageXOffset,r.pageY-window.pageYOffset)||u,u.fastClickScrollParent=this.targetElement.fastClickScrollParent),i=u.tagName.toLowerCase(),"label"===i){if(t=this.findControl(u)){if(this.focus(u),a)return!1;u=t}}else if(this.needsFocus(u))return e.timeStamp-n>100||s&&window.top!==window&&"input"===i?(this.targetElement=null,!1):(this.focus(u),this.sendClick(u,e),s&&"select"===i||(this.targetElement=null,e.preventDefault()),!1);return!(!s||c||(o=u.fastClickScrollParent,!o||o.fastClickLastScrollTop===o.scrollTop))||(this.needsClick(u)||(e.preventDefault(),this.sendClick(u,e)),!1)},o.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},o.prototype.onMouse=function(e){return!this.targetElement||(!!e.forwardedTouchEvent||(!e.cancelable||(!(!this.needsClick(this.targetElement)||this.cancelNextClick)||(e.stopImmediatePropagation?e.stopImmediatePropagation():e.propagationStopped=!0,e.stopPropagation(),e.preventDefault(),!1))))},o.prototype.onClick=function(e){var t;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===e.target.type&&0===e.detail||(t=this.onMouse(e),t||(this.targetElement=null),t)},o.prototype.destroy=function(){var e=this.layer;a&&(e.removeEventListener("mouseover",this.onMouse,!0),e.removeEventListener("mousedown",this.onMouse,!0),e.removeEventListener("mouseup",this.onMouse,!0)),e.removeEventListener("click",this.onClick,!0),e.removeEventListener("touchstart",this.onTouchStart,!1),e.removeEventListener("touchmove",this.onTouchMove,!1),e.removeEventListener("touchend",this.onTouchEnd,!1),e.removeEventListener("touchcancel",this.onTouchCancel,!1)},o.notNeeded=function(e){var t,n,i,o;if("undefined"==typeof window.ontouchstart)return!0;if(n=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!a)return!0;if(t=document.querySelector("meta[name=viewport]")){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(n>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(u&&(i=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),i[1]>=10&&i[2]>=3&&(t=document.querySelector("meta[name=viewport]")))){if(t.content.indexOf("user-scalable=no")!==-1)return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===e.style.msTouchAction||"manipulation"===e.style.touchAction||(o=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],!!(o>=27&&(t=document.querySelector("meta[name=viewport]"),t&&(t.content.indexOf("user-scalable=no")!==-1||document.documentElement.scrollWidth<=window.outerWidth)))||("none"===e.style.touchAction||"manipulation"===e.style.touchAction))},o.attach=function(e,t){return new o(e,t)},i=function(){return o}.call(t,n,t,e),!(void 0!==i&&(e.exports=i))}()},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n0&&this.el_[t-1].classList.add("md-nav__link--marked"),this.index_=t}else for(var i=this.index_;i>=0;i--){var o=document.querySelector(this.el_[i].hash);if(!(o.offsetTop>window.pageYOffset)){this.index_=i;break}i>0&&this.el_[i-1].classList.remove("md-nav__link--marked")}this.offset_=window.pageYOffset}},{key:"reset",value:function(){[].forEach.call(this.el_,function(e){e.classList.remove("md-nav__link--marked")})}},{key:"listen",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.addEventListener(t,e.handler_,!1)}),this.update()}},{key:"unlisten",value:function(){var e=this;["scroll","resize","orientationchange"].forEach(function(t){window.removeEventListener(t,e.handler_,!1)}),this.reset()}}]),e}();t["default"]=o}]); \ No newline at end of file +function o(e,t){function n(e,t){return function(){return e.apply(t,arguments)}}var i;if(t=t||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=t.touchBoundary||10,this.layer=e,this.tapDelay=t.tapDelay||200,this.tapTimeout=t.tapTimeout||700,!o.notNeeded(e)){for(var r=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],s=this,c=0,u=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),u=s&&/OS [6-7]_\d/.test(navigator.userAgent),l=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,l=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,u&&(r=e.changedTouches[0],l=document.elementFromPoint(r.pageX-window.pageXOffset,r.pageY-window.pageYOffset)||l,l.fastClickScrollParent=this.targetElement.fastClickScrollParent),i=l.tagName.toLowerCase(),"label"===i){if(t=this.findControl(l)){if(this.focus(l),a)return!1;l=t}}else if(this.needsFocus(l))return e.timeStamp-n>100||s&&window.top!==window&&"input"===i?(this.targetElement=null,!1):(this.focus(l),this.sendClick(l,e),s&&"select"===i||(this.targetElement=null,e.preventDefault()),!1);return!(!s||c||(o=l.fastClickScrollParent,!o||o.fastClickLastScrollTop===o.scrollTop))||(this.needsClick(l)||(e.preventDefault(),this.sendClick(l,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(l&&(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-772e114b08.js b/material/assets/javascripts/modernizr-772e114b08.js deleted file mode 100644 index 48561b997..000000000 --- a/material/assets/javascripts/modernizr-772e114b08.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,i,a,s;for(var l in S)if(S.hasOwnProperty(l)){if(e=[],t=S[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=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+" "+P.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,o,i):(s=(e+" "+A.join(a+" ")+a).split(" "),g(s,t,n))}function y(e,t,r){return v(e,n,n,t,r)}var S=[],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){S.push({name:e,fn:t,options:n})},addAsyncTest:function(e){S.push({name:null,fn:e})}},b=function(){};b.prototype=E,b=new b;var w,x=[],C=t.documentElement,T="svg"===C.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)}}(),E._l={},E.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)},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 o(e,t){var n=C.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),C.elements=n+" "+e,c(t)}function i(e){var t=x[e[b]];return t||(t={},w++,e[b]=w,x[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():E.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||S.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 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 c(e){e||(e=t);var r=i(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 u(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(f(t)));return a}function f(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=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(f=0;a>f;f++)p.push(i[f]);try{c.push(s.cssText)}catch(m){}}c=d(c.reverse().join("")),o=u(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||{},S=/^<|^(?: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,b="_html5shiv",w=0,x={};!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:c,createElement:a,createDocumentFragment:s,addElements:o};e.html5=C,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)}();C.type+=" print",C.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=C)}("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});E.testProp=function(e,t,r){return h([e],n,t,r)};b.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var k=E.testStyles=f,j=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}();j?b.addTest("fontface",!1):k('@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 z="Moz O ms Webkit",P=E._config.usePrefixes?z.split(" "):[];E._cssomPrefixes=P;var A=E._config.usePrefixes?z.toLowerCase().split(" "):[];E._domPrefixes=A,E.testAllProps=v,E.testAllProps=y;var F="CSS"in e&&"supports"in e.CSS,$="supportsCSS"in e;b.addTest("supports",F||$),b.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=b._config.usePrefixes;if(e&&(!t||"webkitPerspective"in C.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}}",k(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),b.addTest("checked",function(){return k("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=c("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),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(x),delete E.addTest,delete E.addAsyncTest;for(var R=0;R",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=C.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=C.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),C.elements=n+" "+e,c(t)}function i(e){var t=x[e[b]];return t||(t={},w++,e[b]=w,x[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():E.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||S.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;a+~])("+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=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&T.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(f=0;f",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:c,createElement:a,createDocumentFragment:s,addElements:o};e.html5=C,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)}();C.type+=" print",C.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=C)}("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});E.testProp=function(e,t,r){return h([e],n,t,r)};b.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var j=E.testStyles=f,k=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=t<533&&e.match(/android/gi);return n||o||r}();k?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 z="Moz O ms Webkit",P=E._config.usePrefixes?z.split(" "):[];E._cssomPrefixes=P;var A=E._config.usePrefixes?z.toLowerCase().split(" "):[];E._domPrefixes=A,E.testAllProps=v,E.testAllProps=y;var F="CSS"in e&&"supports"in e.CSS,$="supportsCSS"in e;b.addTest("supports",F||$),b.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),t=b._config.usePrefixes;if(e&&(!t||"webkitPerspective"in C.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("json","JSON"in e&&"parse"in JSON&&"stringify"in JSON),b.addTest("checked",function(){return j("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=c("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),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(x),delete E.addTest,delete E.addAsyncTest;for(var R=0;Rcode{font-size:inherit}.md-content--typeset kbd{display:inline-block;padding:.4rem .5rem .5rem;border:.1rem solid #ccc;border-radius:.3rem;border-bottom-color:#bbb;background-color:#fcfcfc;color:#555;font-size:85%;line-height:1rem;box-shadow:inset 0 -.1rem 0 #bbb;vertical-align:.1rem;word-break:break-word}.md-content--typeset small{color:rgba(0,0,0,.54)}.md-content--typeset sub,.md-content--typeset sup{margin-left:.1rem}.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;padding:0}.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{margin-bottom:1rem;margin-left:1rem;padding-top:1rem}html{height:100%}body{position:relative;min-height:100%}body.md-js__body--locked{height:100%;overflow:hidden}hr{display:block;height:.1rem;padding:0;border:0}.md-grid{max-width:120rem;margin-right:auto;margin-left:auto}.md-container,.md-main{overflow:auto}.md-main{margin-top:5.6rem}.md-main__inner{margin-top:3rem;margin-bottom:9.2rem;overflow:auto}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;-webkit-transition:width 0s .25s,height 0s .25s,opacity .25s;transition:width 0s .25s,height 0s .25s,opacity .25s;background:rgba(0,0,0,.54);opacity:0;z-index:2}.md-flex{display:table}.md-flex__cell{display:table-cell;position:relative;vertical-align:top}.md-flex__cell--shrink{width:1%}.md-flex__cell--stretch{display:table;width:100%;table-layout:fixed}.md-flex__ellipsis{display:table-cell;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-content__inner{margin:2.4rem 1.6rem}.md-content__copyright{display:block}.md-header{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:fixed;top:0;right:0;left:0;height:5.6rem;background:#3f51b5;color:#fff;z-index:1}.md-header-nav{padding:.4rem}.md-header-nav__icon{display:inline-block;position:relative;margin:.4rem;padding:.8rem;-webkit-transition:opacity .25s;transition:opacity .25s;font-size:2.4rem;cursor:pointer;z-index:1}.md-header-nav__icon:hover{opacity:.7}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-footer{position:absolute;bottom:0;width:100%}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{padding:.4rem;overflow:auto}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem;-webkit-transition:opacity .25s;transition:opacity .25s}.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}.md-footer-nav__link--next{width:75%;float:right;text-align:right}.md-footer-nav__icon{display:inline-block;margin:.4rem;padding:.8rem;-webkit-transition:background .25s;transition:background .25s;font-size:2.4rem;cursor:pointer}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-2rem;padding:0 .4rem;color:hsla(0,0%,100%,.7);font-size:1.5rem}.md-nav{font-size:1.28rem;line-height:1.2}.md-nav__title{margin:0;font-size:inherit;line-height:inherit}.md-nav--toc{border-left:.4rem solid #3f51b5}.md-nav__list{margin:0;padding:0;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;-webkit-transition:color .125s;transition:color .125s;text-overflow:ellipsis;overflow:hidden}.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-search{position:relative}.md-search__overlay{display:none}.md-search__inner{padding:.8rem .8rem 0}.md-search__form{position:relative;border-radius:.2rem;text-align:right}.md-search__icon{position:absolute;top:.8rem;left:1.2rem;-webkit-transition:color .25s;transition:color .25s;font-size:2.4rem;cursor:pointer}.md-search__input{padding:0 .8rem 0 6.4rem;border-radius:.2rem}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::placeholder{color:rgba(0,0,0,.54)}.md-sidebar{position:relative;width:24.2rem;float:left;overflow:visible}.md-sidebar.md-js__sidebar--locked{position:fixed;top:5.6rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{margin:2.4rem .4rem;overflow-y:scroll;-webkit-overflow-scrolling:touch}.js .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-sidebar__inner{padding:1.2rem}.md-source{display:table-cell;position:relative;min-width:23rem;max-width:23rem;height:4.8rem;padding:0 1.2rem;-webkit-transition:opacity .25s;transition:opacity .25s;font-size:1.3rem;line-height:1.4;white-space:nowrap;vertical-align:middle}.md-source:hover{opacity:.7}.md-source--bitbucket,.md-source--github,.md-source--gitlab{padding-left:4rem}.md-source--bitbucket:before,.md-source--github:before,.md-source--gitlab:before{display:block;position:absolute;top:50%;left:.8rem;width:2.4rem;height:2.4rem;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-repeat:no-repeat;background-size:2.4rem 2.4rem;content:""}.md-source--bitbucket:before{background-image:url(../images/icons/bitbucket-white-42306ad0de.svg)}.md-source--github:before{background-image:url(../images/icons/github-white-75cacf3601.svg)}.md-source--gitlab:before{background-image:url(../images/icons/gitlab-white-3c8a368006.svg)}.md-source__repository{font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-source__stats{color:hsla(0,0%,100%,.7);font-size:1.1rem;font-weight:700}.admonition{position:relative;margin:2rem 0;padding:.8rem 1.6rem;border-left:3.2rem solid #448aff;border-radius:.2rem;background:rgba(68,138,255,.05)}.admonition:before{display:block;position:absolute;top:.2rem;left:-2.6rem;float:left;color:#fff;font-family:Material Icons;font-size:2rem;font-weight:400;content:"edit";vertical-align:-.1em}.admonition-title{color:#2979ff;font-size:1.28rem;font-weight:700;line-height:2rem;text-transform:uppercase}html .admonition-title{margin-bottom:1.6rem}html .admonition-title+*{margin-top:1.6rem}.admonition :first-child{margin-top:0}.admonition :last-child{margin-bottom:0}.admonition.idea,.admonition.tip{border-color:#00bfa5;background:rgba(0,191,165,.05)}.admonition.idea:before,.admonition.tip:before{content:"whatshot"}.admonition.idea .admonition-title,.admonition.tip .admonition-title{color:#00bfa5}.admonition.check,.admonition.done,.admonition.success{border-color:#00e676;background:rgba(0,230,118,.05)}.admonition.check:before,.admonition.done:before,.admonition.success:before{content:"done"}.admonition.check .admonition-title,.admonition.done .admonition-title,.admonition.success .admonition-title{color:#00e676}.admonition.warn,.admonition.warning{border-color:#ff9100;background:rgba(255,145,0,.05)}.admonition.warn:before,.admonition.warning:before{content:"warning"}.admonition.warn .admonition-title,.admonition.warning .admonition-title{color:#ff9100}.admonition.fail,.admonition.failure,.admonition.missing{border-color:#ff5252;background:rgba(255,82,82,.05)}.admonition.fail:before,.admonition.failure:before,.admonition.missing:before{content:"clear"}.admonition.fail .admonition-title,.admonition.failure .admonition-title,.admonition.missing .admonition-title{color:#ff5252}.admonition.danger,.admonition.fatal{border-color:#ff1744;background:rgba(255,23,68,.05)}.admonition.danger:before,.admonition.fatal:before{content:"flash_on"}.admonition.danger .admonition-title,.admonition.fatal .admonition-title{color:#ff1744}.admonition.bug,.admonition.error{border-color:#f50057;background:rgba(245,0,87,.05)}.admonition.bug:before,.admonition.error:before{content:"bug_report"}.admonition.bug .admonition-title,.admonition.error .admonition-title{color:#f50057}.code .err,.codehilite .err{color:#a61717}.code .o,.codehilite .o{color:inherit}.code .ge,.codehilite .ge{color:#000}.code .gr,.codehilite .gr{color:#a00}.code .gh,.codehilite .gh{color:#999}.code .go,.codehilite .go{color:#888}.code .gp,.codehilite .gp{color:#555}.code .gs,.codehilite .gs{color:inherit}.code .gu,.codehilite .gu{color:#aaa}.code .gt,.codehilite .gt{color:#a00}.code .k,.code .kc,.code .kd,.code .kn,.code .kp,.codehilite .k,.codehilite .kc,.codehilite .kd,.codehilite .kn,.codehilite .kp{color:#a71d5d}.code .kr,.code .kt,.codehilite .kr,.codehilite .kt{color:#0086b3}.code .c,.code .cm,.codehilite .c,.codehilite .cm{color:#969896}.code .cp,.codehilite .cp{color:#666}.code .c1,.code .cs,.codehilite .c1,.codehilite .cs{color:#969896}.code .bp,.code .na,.code .nb,.code .nc,.code .nd,.code .ne,.code .nf,.code .ni,.code .nl,.code .nn,.code .no,.code .nt,.code .nv,.code .vc,.code .vg,.code .vi,.codehilite .bp,.codehilite .na,.codehilite .nb,.codehilite .nc,.codehilite .nd,.codehilite .ne,.codehilite .nf,.codehilite .ni,.codehilite .nl,.codehilite .nn,.codehilite .no,.codehilite .nt,.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi{color:#795da3}.code .ow,.codehilite .ow{color:inherit}.code .il,.code .m,.code .mf,.code .mh,.code .mi,.code .mo,.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#0086b3}.code .s,.code .s2,.code .sb,.code .sc,.code .sd,.code .se,.code .sh,.code .si,.code .sx,.codehilite .s,.codehilite .s2,.codehilite .sb,.codehilite .sc,.codehilite .sd,.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx{color:#183691}.code .sr,.codehilite .sr{color:#009926}.code .s1,.codehilite .s1{color:#d01040}.code .ss,.codehilite .ss{color:#990073}.code .gd,.codehilite .gd{background-color:#fdd}.code .gi,.codehilite .gi{background-color:#dfd}.code .w,.codehilite .w{color:transparent}.md-content--typeset .footnote{color:rgba(0,0,0,.54);font-size:80%}.md-content--typeset .footnote>ol{margin-left:0}.md-content--typeset .footnote>ol>li:hover .footnote-backref,.md-content--typeset .footnote>ol>li:target .footnote-backref{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.md-content--typeset .footnote>ol>li:hover .footnote-backref:hover,.md-content--typeset .footnote>ol>li:target .footnote-backref{color:#536dfe}.md-content--typeset .footnote-ref:before{position:absolute;margin-top:-8.4rem;padding-top:8.4rem;content:" ";pointer-events:none}.md-content--typeset .footnote-backref{position:absolute;-webkit-transform:translate3d(.5rem,0,0);transform:translate3d(.5rem,0,0);-webkit-transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s;color:rgba(0,0,0,.26);font-size:2rem;opacity:0;vertical-align:middle}.md-content--typeset .footnote-backref:first-letter{font-size:0}.md-content--typeset .footnote-backref:after{content:"keyboard_return"}.md-content--typeset .headerlink{display:inline-block;margin-left:1rem;-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s;color:rgba(0,0,0,.26);opacity:0}.md-content--typeset [id]:hover .headerlink,.md-content--typeset [id]:target .headerlink{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.md-content--typeset [id]:hover .headerlink:hover,.md-content--typeset [id]:target .headerlink{color:#536dfe}.md-content--typeset h1[id]:before{display:block;margin-top:-11rem;padding-top:11rem;content:" "}.md-content--typeset h2[id]:before{display:block;margin-top:-8.2rem;padding-top:8.2rem;content:" "}.md-content--typeset h3[id]:before{display:block;margin-top:-8.4rem;padding-top:8.4rem;content:" "}.md-content--typeset h4[id]:before{display:block;margin-top:-8.6rem;padding-top:8.6rem;content:" "}.md-content--typeset h5[id]:before,.md-content--typeset h6[id]:before{display:block;margin-top:-9rem;padding-top:9rem;content:" "}.md-search__suggest{background:#fff;border-radius:0 0 .3rem .3rem;color:#000;text-align:left;border-top:.1rem solid rgba(0,0,0,.07);display:none}.md-search__input:focus~.md-search__suggest{display:block}.md-search__input:focus{border-radius:.3rem .3rem 0 0}.checklist li{position:relative;list-style-type:none}.checklist li:before{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:blue;content:"check_box";font-size:2.4rem}.checklist input[type=checkbox]:checked{width:20px}del.critic,ins.critic,mark{margin:0 .4rem;padding:.1rem 0;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.2rem}ins.critic{background:#dfd;box-shadow:.4rem 0 0 #dfd,-.4rem 0 0 #dfd;text-decoration:none}del.critic{background:#fdd;box-shadow:.4rem 0 0 #fdd,-.4rem 0 0 #fdd}mark{background:#ff0;box-shadow:.4rem 0 0 #ff0,-.4rem 0 0 #ff0}.critic.comment{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f0f0f0;color:#37474f;box-shadow:.4rem 0 0 #f0f0f0,-.4rem 0 0 #f0f0f0;-webkit-box-decoration-break:clone;box-decoration-break:clone}.critic.comment:before{color:rgba(0,0,0,.26);content:"chat";font-size:1.6rem;padding-right:.2rem;vertical-align:-.2rem}article{overflow:auto}.floater{display:none;float:right;margin-top:9px;font-size:13px;padding-left:2.6rem}.floater:before{content:"edit"}.task-list-item{list-style-type:none}.task-list-item input{margin:0 4px .25em -20px;vertical-align:middle}.task-list-item{position:relative}.task-list-item input[type=checkbox]{opacity:0}.task-list-item input[type=checkbox]+label{display:block;position:absolute;top:50%;left:-24px;width:16px;margin-top:-8px;height:16px;border-radius:2px;background:#ccc}.task-list-item input[type=checkbox]:checked+label:before{display:block;margin-top:-4px;margin-left:2px;font-size:1.2em;line-height:1;border-radius:2px;content:"βœ”";color:#1ebb52}@media only screen and (min-width:100em){html{font-size:68.75%}}@media only screen and (min-width:125em){html{font-size:75%}}@media only screen and (max-width:74.9375em){.md-toggle--drawer:checked~.md-overlay{width:100%;height:100%;-webkit-transition:width 0s,height 0s,opacity .25s;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-sidebar--primary{position:fixed;top:0;width:24.2em;height:100%;-webkit-transform:translate3d(-24.2em,0,0);transform:translate3d(-24.2em,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);background:#fff;z-index:3}.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:45em){.md-header-nav__icon.md-icon--search{display:none}.md-search__inner{padding:.4rem}.md-search__input{width:23rem;height:4rem;padding-left:4.8rem;-webkit-transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;background:hsla(0,0%,100%,.12);color:#fff;font-size:1.6rem}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input:hover{background:hsla(0,0%,100%,.3)}.md-search__input:focus{width:72.8rem;background:#fff;color:rgba(0,0,0,.87)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::placeholder{color:rgba(0,0,0,.54)}}@media only screen and (min-width:30em){.md-footer-nav__link{width:50%}}@media only screen and (max-width:29.9375em){.md-footer-nav__link--prev .md-footer-nav__title{display:none}}@media only screen and (max-width:44.9375em){.md-search__overlay{display:block;position:absolute;top:.4rem;left:.4rem;width:4rem;height:4rem;-webkit-transform-origin:center;transform-origin:center;-webkit-transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:transform .3s .1s,opacity .2s .2s;transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s;border-radius:2rem;background:#eee;opacity:0;overflow:hidden;z-index:0}.md-toggle--search:checked~.md-header .md-search__overlay{-webkit-transform:scale(40);transform:scale(40);-webkit-transition:opacity .1s,-webkit-transform .4s;transition:opacity .1s,-webkit-transform .4s;transition:transform .4s,opacity .1s;transition:transform .4s,opacity .1s,-webkit-transform .4s;opacity:1;z-index:1}.md-search__form{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.md-search__icon{top:1.2rem}.md-search__icon:before{content:"arrow_back"}.md-search__input{width:100%;height:4.8rem;font-size:1.8rem}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:56px;opacity:0;z-index:2;-webkit-transform:translate3d(5%,0,0);transform:translate3d(5%,0,0);-webkit-transition:opacity .15s .15s,-webkit-transform .3s .15s cubic-bezier(.1,.7,.1,1);transition:opacity .15s .15s,-webkit-transform .3s .15s cubic-bezier(.1,.7,.1,1);transition:transform .3s .15s cubic-bezier(.1,.7,.1,1),opacity .15s .15s;transition:transform .3s .15s cubic-bezier(.1,.7,.1,1),opacity .15s .15s,-webkit-transform .3s .15s cubic-bezier(.1,.7,.1,1)}.md-toggle--search:checked~.md-header .md-search__inner{-webkit-transform:translateZ(0);transform:translateZ(0);left:0;opacity:1}.md-search__suggest{position:relative;z-index:2}}@media only screen and (min-width: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-cbcef7edd5.css b/material/assets/stylesheets/application-cbcef7edd5.css new file mode 100644 index 000000000..3d0a3f233 --- /dev/null +++ b/material/assets/stylesheets/application-cbcef7edd5.css @@ -0,0 +1 @@ +@charset "UTF-8";.checklist li:before,.critic.comment:before,.footnote-backref,.md-icon,.md-nav__link:after,.md-nav__title:before,.md-search-term:before{font-family:Material Icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none;white-space:nowrap;speak:none;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-footer-nav__icon,.md-header-nav__icon,.md-nav__title:before{display:inline-block;margin:.4rem;padding:.8rem;font-size:2.4rem;cursor:pointer}.md-icon--back:before{content:"arrow_back"}.md-icon--forward:before{content:"arrow_forward"}.md-icon--close:before{content:"close"}.md-icon--menu:before{content:"menu"}.md-icon--search:before{content:"search"}html{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}*,:after,:before{box-sizing:inherit;-moz-box-sizing:inherit;-webkit-box-sizing:inherit}html{-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}body{margin:0}article,aside,figcaption,figure,footer,header,main,nav,section{display:block}hr{overflow:visible;box-sizing:content-box}a{color:inherit;text-decoration:none}a:active,a:hover{outline-width:0}a{-webkit-text-decoration-skip:objects}a,button,input,label{-webkit-tap-highlight-color:transparent}small,sub,sup{font-size:80%}sub,sup{position:relative;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}table{border-collapse:collapse;border-spacing:0}td,th{font-weight:400;text-align:left;vertical-align:top}button{padding:0;background:transparent;font-size:inherit}button,input{border:0;outline:0}body{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;-webkit-font-feature-settings:"kern","onum","liga";font-feature-settings:"kern","onum","liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.no-fontface body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:Roboto Mono,Courier New,Courier,monospace;font-weight:400;-webkit-font-feature-settings:"kern","onum","liga";font-feature-settings:"kern","onum","liga"}.no-fontface code,.no-fontface kbd,.no-fontface pre{font-family:Courier New,Courier,monospace}.md-content--typeset{color:rgba(0,0,0,.87);font-size:1.6rem;line-height:1.6}.md-content--typeset blockquote,.md-content--typeset ol,.md-content--typeset p,.md-content--typeset ul{margin:1em 0}.md-content--typeset h1{margin:0 0 4rem;color:rgba(0,0,0,.54);font-size:3.125rem;font-weight:300;letter-spacing:-.01em;line-height:1.3}.md-content--typeset h2{margin:4rem 0 1.6rem;font-size:2.5rem;font-weight:300;letter-spacing:-.01em;line-height:1.4}.md-content--typeset h3{margin:3.2rem 0 1.6rem;font-size:2rem;font-weight:400;letter-spacing:-.01em;line-height:1.5}.md-content--typeset h2+h3{margin-top:1.6rem}.md-content--typeset h4{margin:1.6rem 0;font-size:1.6rem;font-weight:700;letter-spacing:-.01em}.md-content--typeset h5,.md-content--typeset h6{margin:1.6rem 0;color:rgba(0,0,0,.54);font-size:1.28rem;font-weight:700;letter-spacing:-.01em}.md-content--typeset h5{text-transform:uppercase}.md-content--typeset hr{margin:2.4rem 0;border-bottom:.1rem dotted rgba(0,0,0,.26)}.md-content--typeset a{color:#3f51b5}.md-content--typeset a,.md-content--typeset a:before{-webkit-transition:color .125s;transition:color .125s}.md-content--typeset a:active,.md-content--typeset a:hover{color:#536dfe}.md-content--typeset code{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f7f7f7;color:#37474f;font-size:85%;box-shadow:.4rem 0 0 #f7f7f7,-.4rem 0 0 #f7f7f7;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-content--typeset h1 code,.md-content--typeset h2 code,.md-content--typeset h3 code,.md-content--typeset h4 code,.md-content--typeset h5 code,.md-content--typeset h6 code{margin:0;background:transparent;box-shadow:none}.md-content--typeset pre{margin:1em 0;padding:1rem 1.2rem;border-radius:.2rem;background:#f7f7f7;color:#37474f;font-size:85%;line-height:1.4;overflow-x:scroll}.md-content--typeset pre>code{font-size:inherit}.md-content--typeset kbd{display:inline-block;padding:.4rem .5rem .5rem;border:.1rem solid #c9c9c9;border-radius:.3rem;border-bottom-color:#bcbcbc;background-color:#fcfcfc;color:#555;font-size:85%;line-height:1rem;box-shadow:inset 0 -.1rem 0 #b0b0b0;vertical-align:.1rem;word-break:break-word}.md-content--typeset small{opacity:.75}.md-content--typeset sub,.md-content--typeset sup{margin-left:.1rem}.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;padding:0}.md-content--typeset ol li,.md-content--typeset ul li{margin-bottom:.5em;margin-left:2rem}.md-content--typeset ol li blockquote,.md-content--typeset ol li p,.md-content--typeset ul li blockquote,.md-content--typeset ul li p{margin:.5em 0}.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{margin-bottom:1rem;margin-left:1rem;padding-top:1rem}html{height:100%;font-size:62.5%}body{position:relative;min-height:100%}body.md-js__body--locked{height:100%;overflow:hidden}hr{display:block;height:.1rem;padding:0;border:0}.md-grid{max-width:120rem;margin-right:auto;margin-left:auto}.md-container,.md-main{overflow:auto}.md-main{margin-top:5.6rem}.md-main__inner{margin-top:3rem;margin-bottom:9.2rem;overflow:auto}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;-webkit-transition:width 0s .25s,height 0s .25s,opacity .25s;transition:width 0s .25s,height 0s .25s,opacity .25s;background:rgba(0,0,0,.54);opacity:0;z-index:2}.md-flex{display:table}.md-flex__cell{display:table-cell;position:relative;vertical-align:top}.md-flex__cell--shrink{width:1%}.md-flex__cell--stretch{display:table;width:100%;table-layout:fixed}.md-flex__ellipsis{display:table-cell;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-content__inner{margin:2.4rem 1.6rem;overflow:auto}.md-content__copyright{display:block}.md-header{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:fixed;top:0;right:0;left:0;height:5.6rem;background:#3f51b5;color:#fff;z-index:1}.md-header-nav{padding:.4rem}.md-header-nav__icon{position:relative;-webkit-transition:opacity .25s;transition:opacity .25s;z-index:1}.md-header-nav__icon:hover{opacity:.7}.md-header-nav__title{padding:0 2rem;font-size:1.8rem;line-height:4.8rem}.md-footer{position:absolute;bottom:0;width:100%}.md-footer-pagination{background:rgba(0,0,0,.87);color:#fff}.md-footer-nav{padding:.4rem;overflow:auto}.md-footer-nav__link{padding-top:2.8rem;padding-bottom:.8rem;-webkit-transition:opacity .25s;transition:opacity .25s}.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}.md-footer-nav__link--next{width:75%;float:right;text-align:right}.md-footer-nav__icon{-webkit-transition:background .25s;transition:background .25s}.md-footer-nav__title{position:relative;padding:0 .4rem;font-size:1.8rem;line-height:4.8rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-2rem;padding:0 .4rem;color:hsla(0,0%,100%,.7);font-size:1.5rem}.md-nav{font-size:1.28rem;line-height:1.2}.md-nav--secondary{border-left:.4rem solid #3f51b5}.md-nav__title{display:block;margin:0;padding:1.2rem 1.2rem 0;font-size:inherit;font-weight:700;line-height:inherit}.md-nav__title:before{display:none;content:"arrow_back"}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:.625em 1.2rem 0;line-height:1.3}.md-nav__item:last-child{padding-bottom:.625em}.md-nav__item .md-nav__item{padding-right:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__link{display:block;-webkit-transition:color .125s;transition:color .125s;text-overflow:ellipsis;cursor:pointer;overflow:hidden}.md-nav__item--nested>.md-nav__link:after{content:"expand_more"}.md-nav__link[for=toc],.md-nav__link[for=toc]+.md-nav__link:after,html .md-nav__link[for=toc]~.md-nav{display:none}.md-nav__link--marked{color:rgba(0,0,0,.54)}.md-nav__link--active,.md-nav__link:active,.md-nav__link:hover{color:#536dfe}.md-search{padding:.8rem .8rem 0}.md-search__overlay{display:none}.md-search__form{position:relative;border-radius:.2rem;text-align:right}.md-search__icon{position:absolute;top:.8rem;left:1.2rem;-webkit-transition:color .25s;transition:color .25s;font-size:2.4rem;cursor:pointer}.md-search__input{padding:0 1.6rem 0 6.4rem;border-radius:.2rem;text-overflow:ellipsis}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input+.md-search__icon,.md-search__input::placeholder{color:rgba(0,0,0,.54)}.md-sidebar{position:relative;width:24.2rem;float:left;overflow:visible}.md-sidebar.md-js__sidebar--locked{position:fixed;top:5.6rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{margin:2.4rem .4rem;overflow-y:scroll}.js .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.4rem;height:.4rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.26)}.md-source{display:table-cell;position:relative;min-width:23rem;max-width:23rem;height:4.8rem;padding:0 1.2rem;-webkit-transition:opacity .25s;transition:opacity .25s;font-size:1.3rem;line-height:1.2;white-space:nowrap;vertical-align:middle}.md-source:hover{opacity:.7}.md-source--bitbucket,.md-source--github,.md-source--gitlab{padding-left:4rem}.md-source--bitbucket:before,.md-source--github:before,.md-source--gitlab:before{display:block;position:absolute;top:50%;left:.8rem;width:2.4rem;height:2.4rem;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-repeat:no-repeat;background-size:2.4rem 2.4rem;content:""}.md-source--bitbucket:before{background-image:url(../images/icons/bitbucket-white-42306ad0de.svg)}.md-source--github:before{background-image:url(../images/icons/github-white-75cacf3601.svg)}.md-source--gitlab:before{background-image:url(../images/icons/gitlab-white-3c8a368006.svg)}.md-source__repository{font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-source__facts{margin:0;padding:0;color:hsla(0,0%,100%,.7);font-size:1.1rem;font-weight:700;list-style-type:none}.md-source__fact{float:left;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,-webkit-transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1);transition:opacity .25s,transform .25s cubic-bezier(.1,.7,.1,1),-webkit-transform .25s cubic-bezier(.1,.7,.1,1);opacity:1}.md-source__fact--hidden{-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}.md-source__fact:before{margin:0 .2rem;content:"\00B7"}.md-source__fact:first-child:before{display:none}.admonition{position:relative;margin:2rem 0;padding:.8rem 1.6rem;border-left:3.2rem solid #448aff;border-radius:.2rem;background:rgba(68,138,255,.05)}.admonition:before{display:block;position:absolute;top:.2rem;left:-2.6rem;float:left;color:#fff;font-family:Material Icons;font-size:2rem;font-weight:400;content:"edit";vertical-align:-.1em}.admonition-title{color:#2979ff;font-size:1.28rem;font-weight:700;line-height:2;text-transform:uppercase}html .admonition-title{margin-bottom:1.6rem}html .admonition-title+*{margin-top:1.6rem}.admonition :first-child{margin-top:0}.admonition :last-child{margin-bottom:0}.admonition.summary,.admonition.tldr{border-color:#00b0ff;background:rgba(0,176,255,.05)}.admonition.summary:before,.admonition.tldr:before{content:"subject"}.admonition.summary .admonition-title,.admonition.tldr .admonition-title{color:#00b0ff}.admonition.idea,.admonition.tip{border-color:#00bfa5;background:rgba(0,191,165,.05)}.admonition.idea:before,.admonition.tip:before{content:"whatshot"}.admonition.idea .admonition-title,.admonition.tip .admonition-title{color:#00bfa5}.admonition.check,.admonition.done,.admonition.success{border-color:#00e676;background:rgba(0,230,118,.05)}.admonition.check:before,.admonition.done:before,.admonition.success:before{content:"done"}.admonition.check .admonition-title,.admonition.done .admonition-title,.admonition.success .admonition-title{color:#00e676}.admonition.warn,.admonition.warning{border-color:#ff9100;background:rgba(255,145,0,.05)}.admonition.warn:before,.admonition.warning:before{content:"warning"}.admonition.warn .admonition-title,.admonition.warning .admonition-title{color:#ff9100}.admonition.fail,.admonition.failure,.admonition.missing{border-color:#ff5252;background:rgba(255,82,82,.05)}.admonition.fail:before,.admonition.failure:before,.admonition.missing:before{content:"clear"}.admonition.fail .admonition-title,.admonition.failure .admonition-title,.admonition.missing .admonition-title{color:#ff5252}.admonition.danger,.admonition.fatal{border-color:#ff1744;background:rgba(255,23,68,.05)}.admonition.danger:before,.admonition.fatal:before{content:"flash_on"}.admonition.danger .admonition-title,.admonition.fatal .admonition-title{color:#ff1744}.admonition.bug,.admonition.error{border-color:#f50057;background:rgba(245,0,87,.05)}.admonition.bug:before,.admonition.error:before{content:"bug_report"}.admonition.bug .admonition-title,.admonition.error .admonition-title{color:#f50057}.code .err,.codehilite .err{color:#a61717}.code .o,.codehilite .o{color:inherit}.code .ge,.codehilite .ge{color:#000}.code .gr,.codehilite .gr{color:#a00}.code .gh,.codehilite .gh{color:#999}.code .go,.codehilite .go{color:#888}.code .gp,.codehilite .gp{color:#555}.code .gs,.codehilite .gs{color:inherit}.code .gu,.codehilite .gu{color:#aaa}.code .gt,.codehilite .gt{color:#a00}.code .k,.code .kc,.code .kd,.code .kn,.code .kp,.codehilite .k,.codehilite .kc,.codehilite .kd,.codehilite .kn,.codehilite .kp{color:#a71d5d}.code .kr,.code .kt,.codehilite .kr,.codehilite .kt{color:#0086b3}.code .c,.code .cm,.codehilite .c,.codehilite .cm{color:#969896}.code .cp,.codehilite .cp{color:#666}.code .c1,.code .cs,.codehilite .c1,.codehilite .cs{color:#969896}.code .bp,.code .na,.code .nb,.code .nc,.code .nd,.code .ne,.code .nf,.code .ni,.code .nl,.code .nn,.code .no,.code .nt,.code .nv,.code .vc,.code .vg,.code .vi,.codehilite .bp,.codehilite .na,.codehilite .nb,.codehilite .nc,.codehilite .nd,.codehilite .ne,.codehilite .nf,.codehilite .ni,.codehilite .nl,.codehilite .nn,.codehilite .no,.codehilite .nt,.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi{color:#795da3}.code .ow,.codehilite .ow{color:inherit}.code .il,.code .m,.code .mf,.code .mh,.code .mi,.code .mo,.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#0086b3}.code .s,.code .s2,.code .sb,.code .sc,.code .sd,.code .se,.code .sh,.code .si,.code .sx,.codehilite .s,.codehilite .s2,.codehilite .sb,.codehilite .sc,.codehilite .sd,.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx{color:#183691}.code .sr,.codehilite .sr{color:#009926}.code .s1,.codehilite .s1{color:#d01040}.code .ss,.codehilite .ss{color:#990073}.code .gd,.codehilite .gd{background-color:#fdd}.code .gi,.codehilite .gi{background-color:#dfd}.code .w,.codehilite .w{color:transparent}.footnote{color:rgba(0,0,0,.54);font-size:80%}.footnote ol{margin-left:0}.footnote li:hover .footnote-backref,.footnote li:target .footnote-backref{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.footnote li:hover .footnote-backref:hover,.footnote li:target .footnote-backref{color:#536dfe}.footnote-ref:before{position:absolute;margin-top:-8rem;padding-top:8rem;content:"";pointer-events:none}.footnote-backref{position:absolute;-webkit-transform:translate3d(.5rem,0,0);transform:translate3d(.5rem,0,0);-webkit-transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s;color:rgba(0,0,0,.26);font-size:2rem;opacity:0;vertical-align:middle}.footnote-backref:first-letter{font-size:0}.footnote-backref:after{content:"keyboard_return"}.md-content--typeset .headerlink{display:inline-block;margin-left:1rem;-webkit-transform:translate3d(0,.5rem,0);transform:translate3d(0,.5rem,0);-webkit-transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s;color:rgba(0,0,0,.26);opacity:0}.md-content--typeset [id]:hover .headerlink,.md-content--typeset [id]:target .headerlink{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.md-content--typeset [id]:hover .headerlink:hover,.md-content--typeset [id]:target .headerlink{color:#536dfe}.md-content--typeset h1[id]:before{display:block;margin-top:-11rem;padding-top:11rem;content:""}.md-content--typeset h2[id]:before{display:block;margin-top:-8.2rem;padding-top:8.2rem;content:""}.md-content--typeset h3[id]:before{display:block;margin-top:-8.4rem;padding-top:8.4rem;content:""}.md-content--typeset h4[id]:before{display:block;margin-top:-8.6rem;padding-top:8.6rem;content:""}.md-content--typeset h5[id]:before,.md-content--typeset h6[id]:before{display:block;margin-top:-9rem;padding-top:9rem;content:""}.md-search__suggest{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);background:#fff;border-radius:0 0 .3rem .3rem;color:#000;text-align:left;border-top:.1rem solid rgba(0,0,0,.07);display:none;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s}.md-search__input:focus~.md-search__suggest{display:block;opacity:1}.md-search__input:focus{border-radius:.3rem .3rem 0 0}.md-search-term{position:relative;padding:0 .8rem 0 4.8rem;line-height:4rem;font-size:1.6rem;-webkit-transition:background .25s;transition:background .25s;cursor:pointer}.md-search-term:before{position:absolute;content:"access_time";font-size:2.4rem;line-height:4rem;left:1.2rem;color:rgba(0,0,0,.26)}.md-search-term:hover{background:#eceef8}.checklist li{position:relative;list-style-type:none}.checklist li:before{position:absolute;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:blue;content:"check_box";font-size:2.4rem}.checklist input[type=checkbox]:checked{width:20px}del.critic,ins.critic,mark{margin:0 .4rem;padding:.1rem 0;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.2rem}ins.critic{background:#dfd;box-shadow:.4rem 0 0 #dfd,-.4rem 0 0 #dfd;text-decoration:none}del.critic{background:#fdd;box-shadow:.4rem 0 0 #fdd,-.4rem 0 0 #fdd}mark{background:#ff0;box-shadow:.4rem 0 0 #ff0,-.4rem 0 0 #ff0}.critic.comment{margin:0 .4rem;padding:.1rem 0;border-radius:.2rem;background:#f0f0f0;color:#37474f;box-shadow:.4rem 0 0 #f0f0f0,-.4rem 0 0 #f0f0f0;-webkit-box-decoration-break:clone;box-decoration-break:clone}.critic.comment:before{color:rgba(0,0,0,.26);content:"chat";font-size:1.6rem;padding-right:.2rem;vertical-align:-.2rem}.md-button{float:right;margin-top:9px;font-size:13px;padding-left:2.6rem;font-weight:700;text-transform:uppercase}.task-list-item{list-style-type:none}.task-list-item input{margin:0 4px .25em -20px;vertical-align:middle}.task-list-item{position:relative}.task-list-item input[type=checkbox]{opacity:0}.task-list-item input[type=checkbox]+label{display:block;position:absolute;top:50%;left:-24px;width:16px;margin-top:-8px;height:16px;border-radius:2px;background:#ccc}.task-list-item input[type=checkbox]:checked+label:before{display:block;margin-top:-4px;margin-left:2px;font-size:1.2em;line-height:1;border-radius:2px;content:"βœ”";color:#1ebb52}.codehilite .hll{background:#ff0;display:block;margin:0 -16px;padding:0 16px}@media only screen and (min-width:100em){html{font-size:68.75%}}@media only screen and (min-width:125em){html{font-size:75%}}@media only screen and (max-width:74.9375em){.md-toggle--drawer:checked~.md-overlay{width:100%;height:100%;-webkit-transition:width 0s,height 0s,opacity .25s;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-nav--primary,.md-nav--primary .md-nav{display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;top:0;right:0;left:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:auto;height:100%;z-index:1}.md-nav--primary{background:#fff}.md-nav--primary .md-nav__toggle~.md-nav{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4);left:.4rem;background:#fff}.md-nav--primary .md-nav__title{position:relative;padding:.4rem 1.6rem .4rem 5.6rem;background:rgba(0,0,0,.07);color:rgba(0,0,0,.54);font-size:1.8rem;font-weight:400;line-height:4.8rem;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}.md-nav--primary .md-nav__title:before{display:block;position:absolute;left:.4rem;width:4rem;height:4rem;color:rgba(0,0,0,.54)}.md-nav--primary .md-nav__list{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll}.md-nav--primary .md-nav__item{padding:0;border-top:.1rem solid rgba(0,0,0,.07);font-size:1.6rem}.md-nav--primary .md-nav__link{position:relative;padding:1.6rem}.md-nav--primary .md-nav__link:after{position:absolute;right:1.2rem;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);color:rgba(0,0,0,.54);font-size:2.4rem;line-height:2rem}.md-nav__toggle~.md-nav{display:none}.csstransforms3d .md-nav__toggle~.md-nav{display:block;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s;transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);opacity:0}.md-nav__toggle:checked~.md-nav{display:block}.csstransforms3d .md-nav__toggle:checked~.md-nav{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1}.md-sidebar--primary{position:fixed;top:0;left:-24.2rem;width:24.2rem;height:100%;-webkit-transform:translateZ(0);transform:translateZ(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);background:#fff;z-index:2}.no-csstransforms3d .md-sidebar--primary{display:none}.md-toggle--drawer:checked~.md-container .md-sidebar--primary{-webkit-transform:translate3d(24.2rem,0,0);transform:translate3d(24.2rem,0,0)}.no-csstransforms3d .md-toggle--drawer:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden;margin:0}.md-sidebar--primary .md-nav--secondary .md-nav{position:static}.md-sidebar--primary .md-nav--secondary .md-nav .md-nav__item{padding-left:1.2rem}.md-sidebar--primary .md-nav--secondary .md-nav__list .md-nav__list{position:static;pointer-events:auto}}@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-nav__toggle~.md-nav{max-height:0;overflow:hidden}.md-nav__toggle:checked~.md-nav{max-height:100%}.md-nav__title+.md-nav__list .md-nav__title{display:none}.md-nav__item--nested>.md-nav__link:after{display:inline-block;-webkit-transform-origin:.5em .475em;transform-origin:.5em .475em;-webkit-transition:-webkit-transform .25s;transition:-webkit-transform .25s;transition:transform .25s;transition:transform .25s,-webkit-transform .25s;vertical-align:-.125em}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link:after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.md-sidebar__inner{border-right:.1rem solid rgba(0,0,0,.07)}}@media only screen and (min-width:45em){.md-header-nav__icon.md-icon--search{display:none}.md-search{padding:.4rem;padding-right:3.2rem}.md-search__input{width:23rem;height:4rem;padding-left:4.8rem;-webkit-transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;transition:width .25s cubic-bezier(.1,.7,.1,1),background-color .25s,color .25s;background:rgba(0,0,0,.26);color:#fff;font-size:1.6rem}.md-search__input+.md-search__icon,.md-search__input::-webkit-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::-moz-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input:-ms-input-placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input+.md-search__icon,.md-search__input::placeholder{-webkit-transition:color .25s;transition:color .25s;color:#fff}.md-search__input:hover{background:hsla(0,0%,100%,.12)}.md-search__input:focus{width:66.8rem;background:#fff;color:rgba(0,0,0,.87);text-overflow:none}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-webkit-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::-moz-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus:-ms-input-placeholder{color:rgba(0,0,0,.54)}.md-search__input:focus+.md-search__icon,.md-search__input:focus::placeholder{color:rgba(0,0,0,.54)}}@media only screen and (min-width:30em){.md-footer-nav__link{width:50%}}@media only screen and (max-width:29.9375em){.md-footer-nav__link--prev .md-footer-nav__title{display:none}}@media only screen and (max-width:59.9375em){.md-nav--secondary{border-left:0}.md-nav__link[for=toc]{display:block}.md-nav__link[for=toc]:after{-webkit-transform:none;transform:none;content:"toc"}.md-nav__link[for=toc]+.md-nav__link{display:none}html .md-nav__link[for=toc]~.md-nav{display:-webkit-box;display:-ms-flexbox;display:flex}}@media only screen and (max-width:44.9375em){.md-search__overlay{display:block;position:absolute;top:.4rem;left:.4rem;width:4rem;height:4rem;-webkit-transform-origin:center;transform-origin:center;-webkit-transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:transform .3s .1s,opacity .2s .2s;transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s;border-radius:2rem;background:#eee;opacity:0;overflow:hidden;z-index:0}.md-toggle--search:checked~.md-header .md-search__overlay{-webkit-transform:scale(40);transform:scale(40);-webkit-transition:opacity .1s,-webkit-transform .4s;transition:opacity .1s,-webkit-transform .4s;transition:transform .4s,opacity .1s;transition:transform .4s,opacity .1s,-webkit-transform .4s;opacity:1;z-index:1}.md-search__form{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.md-search__icon{top:1.2rem}.md-search__icon:before{content:"arrow_back"}.md-search__input{width:100%;height:4.8rem;font-size:1.8rem}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:56px;opacity:0;z-index:2;-webkit-transform:translate3d(5%,0,0);transform:translate3d(5%,0,0);-webkit-transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;transition:transform .3s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s,-webkit-transform .3s cubic-bezier(.1,.7,.1,1) .15s}.md-toggle--search:checked~.md-header .md-search__inner{-webkit-transform:translateZ(0);transform:translateZ(0);left:0;opacity:1}.md-search__suggest{position:relative;z-index:2}}@media only screen and (min-width:60em) and (min-width:75em){.md-sidebar--secondary.md-js__sidebar--locked{margin-left:120rem}} \ No newline at end of file diff --git a/material/base.html b/material/base.html index d29ca1e64..a83392e3e 100644 --- a/material/base.html +++ b/material/base.html @@ -20,11 +20,11 @@ {% endif %} - + - + - + {% for path in extra_css %} {% endfor %} @@ -33,21 +33,39 @@ - {% include "header.html" %} + {% include "partials/header.html" %}
{% set h1 = "\x3ch1 id=" in content %} {% if nav %} - {% include "nav.html" %} +
+
+
+ {% include "partials/nav.html" %} +
+
+
{% endif %} {% if toc %} - {% include "toc.html" %} +
+
+
+ {% include "partials/toc.html" %} +
+
+
{% endif %}
-
Edit on GitHub
- {{ content }} + {% block content %} + {% if edit_uri %} + + Edit + + {% endif %} + {{ content }} + {% endblock %}
{% if copyright %} @@ -67,15 +85,15 @@
- {% include "footer.html" %} + {% include "partials/footer.html" %}
- + {% for path in extra_javascript %} {% endfor %} - \ No newline at end of file + diff --git a/material/nav-item.html b/material/nav-item.html deleted file mode 100644 index 4375949cb..000000000 --- a/material/nav-item.html +++ /dev/null @@ -1,32 +0,0 @@ -{% 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 deleted file mode 100644 index 1c236e65d..000000000 --- a/material/nav.html +++ /dev/null @@ -1,13 +0,0 @@ -
    -
    - -
    -
    \ No newline at end of file diff --git a/material/footer.html b/material/partials/footer.html similarity index 99% rename from material/footer.html rename to material/partials/footer.html index f046abb2a..cb3382dd2 100644 --- a/material/footer.html +++ b/material/partials/footer.html @@ -35,4 +35,4 @@ {% endif %} - \ No newline at end of file + diff --git a/material/header.html b/material/partials/header.html similarity index 52% rename from material/header.html rename to material/partials/header.html index 41a4bb342..e0d409fbb 100644 --- a/material/header.html +++ b/material/partials/header.html @@ -9,31 +9,9 @@ {{ page_title | default(site_name, true) }} -
    +
    -
    -
    -
    - - -
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    -
    -
    -
    + {% include "partials/search.html" %}
    {% if "github." in repo_url %} {% set platform = "md-source--github" %} @@ -47,13 +25,11 @@
    - - \ No newline at end of file + diff --git a/material/partials/nav-item.html b/material/partials/nav-item.html new file mode 100644 index 000000000..ab2b4cb58 --- /dev/null +++ b/material/partials/nav-item.html @@ -0,0 +1,50 @@ +{% if nav_item.children or nav_item == current_page %} +
  • + {% if nav_item == current_page %} + {% set path = "toc" %} + {% endif %} + {% if nav_item.active and not nav_item == current_page %} + + {% else %} + + {% endif %} + {% if nav_item == current_page %} + + + {{ nav_item.title }} + + {% include "partials/toc.html" %} + {% else %} + + + {% endif %} +
  • +{% else %} +
  • + {% if nav_item.active %} + + {{ nav_item.title }} + + {% else %} + + {{ nav_item.title }} + + {% endif %} +
  • +{% endif %} diff --git a/material/partials/nav.html b/material/partials/nav.html new file mode 100644 index 000000000..9ee94a692 --- /dev/null +++ b/material/partials/nav.html @@ -0,0 +1,9 @@ + diff --git a/material/partials/search.html b/material/partials/search.html new file mode 100644 index 000000000..600cf1b5b --- /dev/null +++ b/material/partials/search.html @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/material/partials/toc-item.html b/material/partials/toc-item.html new file mode 100644 index 000000000..3b4f4d76c --- /dev/null +++ b/material/partials/toc-item.html @@ -0,0 +1,14 @@ +
  • + + {{ toc_item.title }} + + {% if toc_item.children %} + + {% endif %} +
  • diff --git a/material/partials/toc.html b/material/partials/toc.html new file mode 100644 index 000000000..ba8c68c30 --- /dev/null +++ b/material/partials/toc.html @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/material/search.html b/material/search.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/material/toc-item.html b/material/toc-item.html deleted file mode 100644 index 36abc89c0..000000000 --- a/material/toc-item.html +++ /dev/null @@ -1,12 +0,0 @@ -
  • - - {{ 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 deleted file mode 100644 index 560682ecb..000000000 --- a/material/toc.html +++ /dev/null @@ -1,17 +0,0 @@ -
    -
    - -
    -
    \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 289d1c3ad..7ea561816 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,7 +25,7 @@ site_author: Martin Donath site_url: http://squidfunk.github.io/mkdocs-material/ # Repository -repo_name: GitHub +repo_name: squidfunk/mkdocs-material repo_url: https://github.com/squidfunk/mkdocs-material # Copyright @@ -33,7 +33,6 @@ copyright: 'Copyright © 2016 Martin Donath' # Documentation and theme theme_dir: material -theme: amelia # Options extra: @@ -48,11 +47,11 @@ extra: # Extensions markdown_extensions: - - admonition - - codehilite - - footnotes - - meta - - toc: + - markdown.extensions.admonition + - markdown.extensions.codehilite + - markdown.extensions.footnotes + - markdown.extensions.meta + - markdown.extensions.toc: permalink: 'ΒΆ' # Page tree @@ -65,6 +64,10 @@ pages: - Footnotes: extensions/footnotes.md - Permalinks: extensions/permalinks.md - Meta: extensions/meta.md + - Foo: + - Test: + - Permalinks: extensions/permalinks.md + - Meta: index.md - Specimen: specimen.md - Customization: customization.md - License: license.md \ No newline at end of file diff --git a/src/404.html b/src/404.html index 2fd9f9570..9ebf68294 100644 --- a/src/404.html +++ b/src/404.html @@ -1 +1,28 @@ -TBD \ No newline at end of file + + +{% extends "base.html" %} + + +{% block content %} +

    404 - Not found

    +{% endblock %} \ No newline at end of file diff --git a/src/assets/images/icons/bitbucket-black.svg b/src/assets/images/icons/bitbucket-black.svg index 322d76ed9..0ab16772c 100644 --- a/src/assets/images/icons/bitbucket-black.svg +++ b/src/assets/images/icons/bitbucket-black.svg @@ -1,20 +1,20 @@ + 1.5q-9.75-4.25-13.375-14.5t-0.125-20.5 13-14.5q9-4.5 18.125-3t16 8.875 + 6.875 16.875zM231.5 209.5q-3.5-26.75-28.25-41t-49.25-3.25q-15.75 + 7-25.125 22.125t-8.625 32.375q1 22.75 19.375 38.75t41.375 14q22.75-2 + 38-21t12.5-42zM291.25 + 74q-5-6.75-14-11.125t-14.5-5.5-17.75-3.125q-72.75-11.75-141.5 0.5-10.75 + 1.75-16.5 3t-13.75 5.5-12.5 10.75q7.5 7 19 11.375t18.375 5.5 21.875 + 2.875q57 7.25 112 0.25 15.75-2 22.375-3t18.125-5.375 18.75-11.625zM305.5 + 332.75q-2 6.5-3.875 19.125t-3.5 21-7.125 17.5-14.5 14.125q-21.5 + 12-47.375 17.875t-50.5 5.5-50.375-4.625q-11.5-2-20.375-4.5t-19.125-6.75-18.25-10.875-13-15.375q-6.25-24-14.25-73l1.5-4 + 4.5-2.25q55.75 37 126.625 37t126.875-37q5.25 1.5 6 5.75t-1.25 11.25-2 + 9.25zM350.75 92.5q-6.5 41.75-27.75 163.75-1.25 7.5-6.75 14t-10.875 + 10-13.625 7.75q-63 31.5-152.5 + 22-62-6.75-98.5-34.75-3.75-3-6.375-6.625t-4.25-8.75-2.25-8.5-1.5-9.875-1.375-8.75q-2.25-12.5-6.625-37.5t-7-40.375-5.875-36.875-5.5-39.5q0.75-6.5 + 4.375-12.125t7.875-9.375 11.25-7.5 11.5-5.625 12-4.625q31.25-11.5 + 78.25-16 94.75-9.25 169 12.5 38.75 11.5 53.75 30.5 4 5 4.125 + 12.75t-1.375 13.5z" /> diff --git a/src/assets/images/icons/bitbucket-white.svg b/src/assets/images/icons/bitbucket-white.svg index 8a411881a..1a8210a4a 100644 --- a/src/assets/images/icons/bitbucket-white.svg +++ b/src/assets/images/icons/bitbucket-white.svg @@ -1,20 +1,20 @@ + 1.5q-9.75-4.25-13.375-14.5t-0.125-20.5 13-14.5q9-4.5 18.125-3t16 8.875 + 6.875 16.875zM231.5 209.5q-3.5-26.75-28.25-41t-49.25-3.25q-15.75 + 7-25.125 22.125t-8.625 32.375q1 22.75 19.375 38.75t41.375 14q22.75-2 + 38-21t12.5-42zM291.25 + 74q-5-6.75-14-11.125t-14.5-5.5-17.75-3.125q-72.75-11.75-141.5 0.5-10.75 + 1.75-16.5 3t-13.75 5.5-12.5 10.75q7.5 7 19 11.375t18.375 5.5 21.875 + 2.875q57 7.25 112 0.25 15.75-2 22.375-3t18.125-5.375 18.75-11.625zM305.5 + 332.75q-2 6.5-3.875 19.125t-3.5 21-7.125 17.5-14.5 14.125q-21.5 + 12-47.375 17.875t-50.5 5.5-50.375-4.625q-11.5-2-20.375-4.5t-19.125-6.75-18.25-10.875-13-15.375q-6.25-24-14.25-73l1.5-4 + 4.5-2.25q55.75 37 126.625 37t126.875-37q5.25 1.5 6 5.75t-1.25 11.25-2 + 9.25zM350.75 92.5q-6.5 41.75-27.75 163.75-1.25 7.5-6.75 14t-10.875 + 10-13.625 7.75q-63 31.5-152.5 + 22-62-6.75-98.5-34.75-3.75-3-6.375-6.625t-4.25-8.75-2.25-8.5-1.5-9.875-1.375-8.75q-2.25-12.5-6.625-37.5t-7-40.375-5.875-36.875-5.5-39.5q0.75-6.5 + 4.375-12.125t7.875-9.375 11.25-7.5 11.5-5.625 12-4.625q31.25-11.5 + 78.25-16 94.75-9.25 169 12.5 38.75 11.5 53.75 30.5 4 5 4.125 + 12.75t-1.375 13.5z" fill="white" /> diff --git a/src/assets/images/icons/github-black.svg b/src/assets/images/icons/github-black.svg index c1c87085a..843e3ac14 100644 --- a/src/assets/images/icons/github-black.svg +++ b/src/assets/images/icons/github-black.svg @@ -1,25 +1,18 @@ - - + + diff --git a/src/assets/images/icons/github-white.svg b/src/assets/images/icons/github-white.svg index 544a0fc6a..b475cdf2c 100644 --- a/src/assets/images/icons/github-white.svg +++ b/src/assets/images/icons/github-white.svg @@ -1,25 +1,18 @@ - - + + diff --git a/src/assets/javascripts/application.js b/src/assets/javascripts/application.js index 50c3bfc94..95e36f5de 100644 --- a/src/assets/javascripts/application.js +++ b/src/assets/javascripts/application.js @@ -118,7 +118,44 @@ document.addEventListener('DOMContentLoaded', function() { } }); +// setTimeout(function() { + fetch('https://api.github.com/repos/squidfunk/mkdocs-material') + .then(function(response) { + return response.json() + }).then(function(data) { + var stars = data.stargazers_count; + var forks = data.forks_count; + // store in session!!! + var list = document.querySelector('.md-source__facts'); + // list.innerHTML += '
  • ' + stars + ' Stars
  • \n'; + // list.innerHTML += '
  • ' + forks + ' Forks
  • \n'; + + var li = document.createElement('li'); + li.className = 'md-source__fact md-source__fact--hidden'; + li.innerText = stars + ' Stars'; + list.appendChild(li); + setTimeout(function(li) { + li.classList.remove('md-source__fact--hidden'); + }, 100, li); + + li = document.createElement('li'); + li.className = 'md-source__fact md-source__fact--hidden'; + li.innerText = forks + ' Forks'; + list.appendChild(li); + + setTimeout(function(li) { + li.classList.remove('md-source__fact--hidden'); + }, 500, li); + + // setTimeout(function() { + // li.classList.remove('md-source__fact--hidden'); + // }, 100); + + }).catch(function(ex) { + console.log('parsing failed', ex) + }); +// }, 1000); }); \ No newline at end of file diff --git a/src/assets/javascripts/components/sidebar.js b/src/assets/javascripts/components/sidebar.js index 560ee35c5..709eec72c 100644 --- a/src/assets/javascripts/components/sidebar.js +++ b/src/assets/javascripts/components/sidebar.js @@ -92,7 +92,7 @@ class Sidebar { */ reset() { this.el_.classList.remove('md-js__sidebar--locked'); - this.el_.style.height_ = ''; + this.el_.style.height = ''; /* Reset parameters */ this.height_ = 0; diff --git a/src/assets/stylesheets/_config.scss b/src/assets/stylesheets/_config.scss index b8f24a6d5..21160a4ce 100644 --- a/src/assets/stylesheets/_config.scss +++ b/src/assets/stylesheets/_config.scss @@ -54,17 +54,34 @@ $break-devices: ( // ---------------------------------------------------------------------------- // Primary and accent colors -$md-color-primary: $clr-indigo-500; -$md-color-accent: $clr-indigo-a200; +$md-color-primary: $clr-indigo-500; +$md-color-accent: $clr-indigo-a200; // Shades of black -$md-color-black: hsla(0, 0%, 0%, 0.87); -$md-color-black--light: hsla(0, 0%, 0%, 0.54); -$md-color-black--lighter: hsla(0, 0%, 0%, 0.26); -$md-color-black--lightest: hsla(0, 0%, 0%, 0.07); +$md-color-black: hsla(0, 0%, 0%, 0.87); +$md-color-black--light: hsla(0, 0%, 0%, 0.54); +$md-color-black--lighter: hsla(0, 0%, 0%, 0.26); +$md-color-black--lightest: hsla(0, 0%, 0%, 0.07); // Shades of white -$md-color-white: hsla(0, 0%, 100%, 1.00); -$md-color-white--light: hsla(0, 0%, 100%, 0.70); -$md-color-white--lighter: hsla(0, 0%, 100%, 0.30); -$md-color-white--lightest: hsla(0, 0%, 100%, 0.12); +$md-color-white: hsla(0, 0%, 100%, 1.00); +$md-color-white--light: hsla(0, 0%, 100%, 0.70); +$md-color-white--lighter: hsla(0, 0%, 100%, 0.30); +$md-color-white--lightest: hsla(0, 0%, 100%, 0.12); + +// ---------------------------------------------------------------------------- +// Sizing and spacing +// ---------------------------------------------------------------------------- + +// Icons +$md-icon-size: $ms-base * 1.5; +$md-icon-padding: $ms-base * 0.5; +$md-icon-margin: $ms-base * 0.25; + +// Code blocks +$md-code-background: #F7F7F7; +$md-code-color: #37474F; + +// Keystrokes +$md-keyboard-background: #FCFCFC; +$md-keyboard-color: #555555; diff --git a/src/assets/stylesheets/_shame.scss b/src/assets/stylesheets/_shame.scss index b550744a4..a4e946850 100644 --- a/src/assets/stylesheets/_shame.scss +++ b/src/assets/stylesheets/_shame.scss @@ -77,7 +77,27 @@ } .md-search-term { + position: relative; + padding: 0 0.8rem 0 4.8rem; + line-height: 4.0rem; // don't use line height???? + font-size: 1.6rem; + &::before { + @extend %md-icon; + + position: absolute; + + content: "access_time"; + font-size: 2.4rem; + line-height: 4.0rem; // this sucks... + left: 1.2rem; + color: $md-color-black--lighter; + } + transition: background .25s; + cursor: pointer; + &:hover { + background: mix($md-color-white, $md-color-primary, 90%); + } } .checklist { @@ -234,3 +254,48 @@ mark { padding: 0 16px; } +// [tablet -]: Adjust spacing on screens +@include break-to-device(tablet) { + .md-sidebar--primary { + .md-nav--secondary .md-nav { + position: static; // TODO DODODODODO + + .md-nav__item { + padding-left: 1.2rem; + } + } + // second level list! + .md-nav--secondary .md-nav__list .md-nav__list { + position: static; + pointer-events: initial; //!!! + } + .md-nav__item { + // transition: background .25s; + // + // & :hover { + // background: lighten($md-color-primary, 50%); + // } + } + } +} + +// .md-nav--secondary > .md-nav__title { +// // -webkit-overflow-scrolling: touch; +// @include z-depth(1); +// } +// .md-nav__toggle:checked ~ .md-nav > .md-nav__list { +// +// > :first-child { +// border-top: 0; +// } +// +// background: +// linear-gradient(white 10%, rgba(255,255,255,0)), // cover +// linear-gradient(to bottom, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0) 60%); // shadow +// background-repeat: no-repeat; +// background-color: white; +// background-size: 100% 20px, 100% 4px; +// +// /* Opera doesn't support this in the shorthand */ +// background-attachment: local, scroll; +// } \ No newline at end of file diff --git a/src/assets/stylesheets/base/_icons.scss b/src/assets/stylesheets/base/_icons.scss index 989057186..a987234ee 100644 --- a/src/assets/stylesheets/base/_icons.scss +++ b/src/assets/stylesheets/base/_icons.scss @@ -24,9 +24,8 @@ // Icon set // ---------------------------------------------------------------------------- -// Base icon class -%md-icon, -.md-icon { +// Icon placeholders +%md-icon { font-family: "Material Icons"; font-style: normal; font-variant: normal; @@ -41,17 +40,31 @@ // Enable font-smoothing in Webkit and FF -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -} -// Build representational classes -@each $ligature, $name in ( - "arrow_back": "back", - "arrow_forward": "forward", - "close": "close", - "menu": "menu", - "search": "search" -) { - .md-icon--#{$name}::before { - content: $ligature; + // Icon rendered as button + &__button { + display: inline-block; + margin: $md-icon-margin; + padding: $md-icon-padding; + font-size: $md-icon-size; + cursor: pointer; + } +} + +// Representational classes +.md-icon { + @extend %md-icon; + + // Build representational classes + @each $ligature, $name in ( + "arrow_back": "back", + "arrow_forward": "forward", + "close": "close", + "menu": "menu", + "search": "search" + ) { + &--#{$name}::before { + content: $ligature; + } } } diff --git a/src/assets/stylesheets/base/_reset.scss b/src/assets/stylesheets/base/_reset.scss index 4a0f5f3ba..8af839b34 100644 --- a/src/assets/stylesheets/base/_reset.scss +++ b/src/assets/stylesheets/base/_reset.scss @@ -42,9 +42,7 @@ html { } // 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%; text-size-adjust: none; } diff --git a/src/assets/stylesheets/base/_typeset.scss b/src/assets/stylesheets/base/_typeset.scss index 249bc5c5e..2c5d595e6 100644 --- a/src/assets/stylesheets/base/_typeset.scss +++ b/src/assets/stylesheets/base/_typeset.scss @@ -25,8 +25,7 @@ // ---------------------------------------------------------------------------- // Default fonts -body, -kbd { +body { font-family: "Roboto", Helvetica, Arial, sans-serif; font-weight: 400; font-feature-settings: "kern", "onum", "liga"; @@ -43,9 +42,10 @@ kbd { // Proportionally spaced fonts pre, -code { +code, +kbd { font-family: "Roboto Mono", "Courier New", Courier, monospace; - font-weight: 500; + font-weight: 400; font-feature-settings: "kern", "onum", "liga"; // Use system fonts, if browser doesn't support webfonts @@ -60,6 +60,7 @@ code { // Content that is typeset .md-content--typeset { + color: $md-color-black; font-size: ms(0); line-height: 1.6; @@ -68,7 +69,7 @@ code { ul, ol, blockquote { - margin: 1.25em 0; + margin: 1.0em 0; } // 1st level headline @@ -155,23 +156,34 @@ code { margin: 0 0.4rem; padding: 0.1rem 0; border-radius: 0.2rem; - background: #F7F7F7; - color: #37474F; + background: $md-code-background; + color: $md-code-color; font-size: 85%; - box-shadow: 0.4rem 0 0 #F7F7F7, - -0.4rem 0 0 #F7F7F7; + box-shadow: 0.4rem 0 0 $md-code-background, + -0.4rem 0 0 $md-code-background; word-break: break-word; - box-decoration-break: clone; } + // Disable containing block inside headlines + h1 code, + h2 code, + h3 code, + h4 code, + h5 code, + h6 code { + margin: 0; + background: transparent; + box-shadow: none; + } + // Formatted code blocks pre { - margin: 2.0rem 0; + margin: 1.0em 0; padding: 1.0rem 1.2rem; border-radius: 0.2rem; - background: #F7F7F7; - color: #37474F; + background: $md-code-background; + color: $md-code-color; font-size: 85%; line-height: 1.4; overflow-x: scroll; @@ -182,25 +194,26 @@ code { } } - // Keyboard tags + // Keystrokes kbd { display: inline-block; padding: 0.4rem 0.5rem 0.5rem; - border: px2rem(1px) solid #CCCCCC; + border: px2rem(1px) solid darken($md-keyboard-background, 20%); border-radius: px2rem(3px); - border-bottom-color: #BBBBBB; - background-color: #FCFCFC; - color: #555555; + border-bottom-color: darken($md-keyboard-background, 25%); + background-color: $md-keyboard-background; + color: $md-keyboard-color; font-size: 85%; line-height: 1.0rem; - box-shadow: 0 #{-(px2rem(1px))} 0 #BBBBBB inset; + box-shadow: 0 #{-(px2rem(1px))} 0 + darken($md-keyboard-background, 30%) inset; vertical-align: 0.1rem; word-break: break-word; } // Smaller text small { - color: $md-color-black--light; + opacity: 0.75; } // Superscript and subscript @@ -239,9 +252,15 @@ code { // List elements li { - margin-bottom: 1.0rem; + margin-bottom: 0.5em; margin-left: 2.0rem; + // Decrease vertical spacing + p, + blockquote { + margin: 0.5em 0; + } + // Remove margin on last element &:last-child { margin-bottom: 0; diff --git a/src/assets/stylesheets/extensions/_admonition.scss b/src/assets/stylesheets/extensions/_admonition.scss index 73b988831..b3dbf8aaf 100644 --- a/src/assets/stylesheets/extensions/_admonition.scss +++ b/src/assets/stylesheets/extensions/_admonition.scss @@ -36,7 +36,7 @@ // Icon &::before { display: block; - position: absolute; + position: absolute; // TODO: inherit icon! top: 0.2rem; left: -2.6rem; float: left; @@ -53,7 +53,7 @@ color: $clr-blue-a400; font-size: ms(-1); font-weight: 700; - line-height: 2.0rem; + line-height: 2; text-transform: uppercase; // Ensure smaller spacing to next element @@ -79,6 +79,7 @@ // Build representational classes @each $names, $appearance in ( + summary tldr: $clr-light-blue-a400 "subject", tip idea: $clr-teal-a700 "whatshot", success check done: $clr-green-a400 "done", warning warn: $clr-orange-a400 "warning", diff --git a/src/assets/stylesheets/extensions/_footnotes.scss b/src/assets/stylesheets/extensions/_footnotes.scss index 603e735e4..a13e028ba 100644 --- a/src/assets/stylesheets/extensions/_footnotes.scss +++ b/src/assets/stylesheets/extensions/_footnotes.scss @@ -24,76 +24,72 @@ // Footnotes extension // ---------------------------------------------------------------------------- -// Scoped in typesetted content for greater specificity -.md-content--typeset { +// Footnote +.footnote { + color: $md-color-black--light; + font-size: 80%; - // Footnote - .footnote { - color: $md-color-black--light; - font-size: 80%; + // Remove additional spacing on footnotes + ol { + margin-left: 0; + } - // Remove additional spacing on footnotes - > ol { - margin-left: 0; + // Single footnote + li { - // Single footnote - > li { + // TODO: this doesn't work entirely + // &::before { + // display: block; + // content: ""; + // padding-top: (5.6rem + 2.4rem + 0.4rem); + // margin-top: -(5.6rem + 2.4rem + 0.4rem); + // } - // TODO: this doesn't work entirely - // &::before { - // display: block; - // content: " "; - // padding-top: (5.6rem + 2.4rem + 0.4rem); - // margin-top: -(5.6rem + 2.4rem + 0.4rem); - // } - - // Make back references visible on hover - &:hover .footnote-backref, - &:target .footnote-backref { - transform: translate3d(0, 0, 0); - opacity: 1; - } - - // Active or targeted back reference - &:hover .footnote-backref:hover, - &:target .footnote-backref { - color: $md-color-accent; - } - } + // Make back references visible on hover + &:hover .footnote-backref, + &:target .footnote-backref { + transform: translate3d(0, 0, 0); + opacity: 1; } - // Correct anchor offset - &-ref::before { - position: absolute; - margin-top: -(5.6rem + 2.4rem + 0.4rem); - padding-top: (5.6rem + 2.4rem + 0.4rem); - content: " "; - pointer-events: none; + // Active or targeted back reference + &:hover .footnote-backref:hover, + &:target .footnote-backref { + color: $md-color-accent; + } + } + + // Correct anchor offset + &-ref::before { + position: absolute; + margin-top: -(5.6rem + 2.4rem); + padding-top: (5.6rem + 2.4rem); + content: ""; + pointer-events: none; + } + + // Make back reference text transparent for icon + &-backref { + @extend %md-icon; + + position: absolute; + transform: translate3d(0.5rem, 0, 0); + transition: transform 0.25s 0.125s, + color 0.25s, + opacity 0.125s 0.125s; + color: $md-color-black--lighter; + font-size: 2.0rem; + opacity: 0; + vertical-align: middle; + + // Hack: remove Unicode arrow for icon + &::first-letter { + font-size: 0; } - // Make back reference text transparent for icon - &-backref { - @extend %md-icon; - - position: absolute; - transform: translate3d(0.5rem, 0, 0); - transition: transform 0.25s 0.125s, - color 0.25s, - opacity 0.125s 0.125s; - color: $md-color-black--lighter; - font-size: 2.0rem; - opacity: 0; - vertical-align: middle; - - // Hack: remove Unicode arrow for icon - &::first-letter { - font-size: 0; - } - - // Back reference icon - &::after { - content: "keyboard_return"; - } + // Back reference icon + &::after { + content: "keyboard_return"; } } } diff --git a/src/assets/stylesheets/extensions/_permalinks.scss b/src/assets/stylesheets/extensions/_permalinks.scss index 4d1721223..bd4c8a561 100644 --- a/src/assets/stylesheets/extensions/_permalinks.scss +++ b/src/assets/stylesheets/extensions/_permalinks.scss @@ -69,7 +69,7 @@ display: block; margin-top: -(5.6rem + 2.4rem + $delta); padding-top: (5.6rem + 2.4rem + $delta); - content: " "; + content: ""; } } } diff --git a/src/assets/stylesheets/layout/_base.scss b/src/assets/stylesheets/layout/_base.scss index 0be1af0f4..9fa3c6acf 100644 --- a/src/assets/stylesheets/layout/_base.scss +++ b/src/assets/stylesheets/layout/_base.scss @@ -24,9 +24,11 @@ // Grid // ---------------------------------------------------------------------------- -// Stretch container to viewport +// Stretch container to viewport and set base font-size to 10px for simple +// calculations base on relative ems (rems). html { height: 100%; + font-size: 62.5%; // [screen medium +] Set base font-size to 11px @include break-from-device(screen medium) { @@ -35,7 +37,7 @@ html { // [screen large +] Set base font-size to 12px @include break-from-device(screen large) { - font-size: 75.00%; + font-size: 75%; } } @@ -76,9 +78,9 @@ hr { .md-main { margin-top: 5.6rem; - // Bottom spacing to account for footer + // Bottom spacing to account for header and footer &__inner { - margin-top: 3.0rem; + margin-top: 2.4rem + 0.6rem; margin-bottom: 9.2rem; overflow: auto; } @@ -106,8 +108,8 @@ hr { opacity: 0; z-index: 2; - // [tablet landscape -]: Trigger overlay - @include break-to-device(tablet landscape) { + // [tablet -]: Trigger overlay + @include break-to-device(tablet) { // Expanded drawer .md-toggle--drawer:checked ~ & { diff --git a/src/assets/stylesheets/layout/_content.scss b/src/assets/stylesheets/layout/_content.scss index 8fb09753f..52d698ca5 100644 --- a/src/assets/stylesheets/layout/_content.scss +++ b/src/assets/stylesheets/layout/_content.scss @@ -32,8 +32,8 @@ margin-right: 24.2rem; } - // [screen small +]: Add space for table of contents - @include break-from-device(screen small) { + // [screen +]: Add space for table of contents + @include break-from-device(screen) { margin-left: 24.2rem; } @@ -44,8 +44,8 @@ // Hack: this is necessary for floating the edit button overflow: auto; - // [screen small +]: Add space for table of contents - @include break-from-device(screen small) { + // [screen +]: Increase spacing + @include break-from-device(screen) { margin: 2.4rem; } } diff --git a/src/assets/stylesheets/layout/_footer.scss b/src/assets/stylesheets/layout/_footer.scss index 70bda4d0a..dc852d715 100644 --- a/src/assets/stylesheets/layout/_footer.scss +++ b/src/assets/stylesheets/layout/_footer.scss @@ -83,12 +83,9 @@ // Link icon &__icon { - display: inline-block; - margin: 0.4rem; - padding: 0.8rem; + @extend %md-icon__button; + transition: background 0.25s; - font-size: 2.4rem; - cursor: pointer; } // Link title diff --git a/src/assets/stylesheets/layout/_header.scss b/src/assets/stylesheets/layout/_header.scss index 4d211bd74..a6fa776de 100644 --- a/src/assets/stylesheets/layout/_header.scss +++ b/src/assets/stylesheets/layout/_header.scss @@ -44,13 +44,10 @@ // Header icon &__icon { - display: inline-block; + @extend %md-icon__button; + position: relative; - margin: 0.4rem; - padding: 0.8rem; transition: opacity 0.25s; - font-size: 2.4rem; - cursor: pointer; z-index: 1; // Hovered icon diff --git a/src/assets/stylesheets/layout/_nav.scss b/src/assets/stylesheets/layout/_nav.scss index 0f3a4df22..d6b3e1d5e 100644 --- a/src/assets/stylesheets/layout/_nav.scss +++ b/src/assets/stylesheets/layout/_nav.scss @@ -29,16 +29,27 @@ font-size: ms(-1); line-height: 1.2; - // Title - &__title { - margin: 0; - font-size: inherit; - line-height: inherit; + // Table of contents + &--secondary { + border-left: px2rem(4px) solid $md-color-primary; } - // Table of contents - &--toc { - border-left: px2rem(4px) solid $md-color-primary; + // Title + &__title { + display: block; + margin: 0; + padding: 1.2rem 1.2rem 0; + font-size: inherit; + font-weight: 700; + line-height: inherit; + + // Icon, hidden by default + &::before { + @extend %md-icon, %md-icon__button; + + display: none; + content: "arrow_back"; + } } // List of items @@ -46,28 +57,27 @@ margin: 0; padding: 0; list-style: none; - - // 2nd+ level list - & & { - 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%; - } } // List item &__item { - margin: 0.8rem 0 0; - line-height: 1.6rem; + padding: 0.625em 1.2rem 0; + line-height: 1.3; + + // Add bottom spacing to last item + &:last-child { + padding-bottom: 0.625em; + } + + // 2nd+ level items + & & { + padding-right: 0; + + // Remove bottom spacing for nested items + &:last-child { + padding-bottom: 0; + } + } } // Link inside item @@ -75,8 +85,34 @@ display: block; transition: color 0.125s; text-overflow: ellipsis; + cursor: pointer; overflow: hidden; + // Icon + &::after { + @extend %md-icon; + + // Item contains a nested list + .md-nav__item--nested > & { + content: "expand_more"; + } + } + + // Hide link to table of contents by default + &[for="toc"] { + display: none; + + // Hide table of contents by default + html & ~ .md-nav { + display: none; + } + + // Hide icon for current item + + .md-nav__link::after { + display: none; + } + } + // Marked item &--marked { color: $md-color-black--light; @@ -89,4 +125,187 @@ color: $md-color-accent; } } + + // [tablet -]: Layered navigation + @include break-to-device(tablet) { + + // Stretch primary navigation to drawer + &--primary, + &--primary .md-nav { + display: flex; + position: absolute; + top: 0; + right: 0; + left: 0; + flex-direction: column; + width: auto; + height: 100%; + z-index: 1; + } + + // Adjust styles for primary navigation + &--primary { + background: $md-color-white; + + // Move subsequent navigations off + .md-nav__toggle ~ .md-nav { + @include z-depth(4); + + left: 0.4rem; + background: $md-color-white; + } + + // Title + .md-nav__title { + position: relative; + padding: 0.4rem 1.6rem 0.4rem 5.6rem; + background: $md-color-black--lightest; + color: $md-color-black--light; + font-size: 1.8rem; + font-weight: 400; + line-height: 4.8rem; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + overflow: hidden; + + // Icon + &::before { + display: block; + position: absolute; + left: 0.4rem; + width: 4.0rem; + height: 4.0rem; + color: $md-color-black--light; + } + } + + // List of items + .md-nav__list { + flex: 1; + overflow-y: scroll; + } + + // List item + .md-nav__item { + padding: 0; + border-top: 0.1rem solid $md-color-black--lightest; + font-size: 1.6rem; + } + + // Link inside item + .md-nav__link { + position: relative; + padding: 1.6rem; + + // Rotate icon + &::after { + position: absolute; + right: 1.2rem; + transform: rotate(-90deg); + color: $md-color-black--light; + font-size: 2.4rem; + line-height: 2.0rem; + } + } + } + + // Hide nested navigation by default + .md-nav__toggle ~ & { + display: none; + + // Animate appearance, if browser supports 3D transforms + .csstransforms3d & { + display: block; + transform: translate3d(100%, 0, 0); + transition: transform 0.25s cubic-bezier(0.8, 0.0, 0.6, 1.0), + opacity 0.125s 0.05s; + opacity: 0; + } + } + + // Expand nested navigation, if toggle is checked + .md-nav__toggle:checked ~ & { + display: block; + + // Animate appearance, if browser supports 3D transforms + .csstransforms3d & { + transform: translate3d(0, 0, 0); + transition: transform 0.25s cubic-bezier(0.4, 0.0, 0.2, 1.0), + opacity 0.125s 0.125s; + opacity: 1; + } + } + } + + // [tablet portrait -]: Show table of contents in drawer + @include break-to-device(tablet portrait) { + + // Remove border on secondary navigation + &--secondary { + border-left: 0; + } + + // Show link to table of contents + &__link[for="toc"] { + display: block; + + // Unrotate icon for table of contents + &::after { + transform: none; + content: "toc"; + } + + // Hide link to current item + + .md-nav__link { + display: none; + } + + // Show table of contents + html & ~ .md-nav { + display: flex; + } + } + } + + // [screen +]: Tree-like navigation + @include break-from-device(screen) { + + // Hide nested navigation by default + .md-nav__toggle ~ & { + max-height: 0; + overflow: hidden; + } + + // Expand nested navigation, if toggle is checked + .md-nav__toggle:checked ~ & { + max-height: 100%; + } + + // Title + &__title { + + // Hide titles for nested navigation + & + .md-nav__list & { + display: none; + } + } + + // Link inside item + &__link { + + // Item contains a nested list + .md-nav__item--nested > &::after { + display: inline-block; + transform-origin: 0.5em 0.475em; + transition: transform 0.25s; + vertical-align: -0.125em; + } + + // Rotate icon for expanded lists + .md-nav__item--nested .md-nav__toggle:checked ~ &::after { + transform: rotate(180deg); + } + } + } } diff --git a/src/assets/stylesheets/layout/_search.scss b/src/assets/stylesheets/layout/_search.scss index 4d9ea6749..12167d732 100644 --- a/src/assets/stylesheets/layout/_search.scss +++ b/src/assets/stylesheets/layout/_search.scss @@ -26,7 +26,14 @@ // Application search .md-search { - position: relative; + // position: relative; + padding: 0.8rem 0.8rem 0; + + // [tablet +]: Header-embedded search + @include break-from-device(tablet) { + padding: 0.4rem; + padding-right: 3.2rem; + } // Search overlay &__overlay { @@ -60,17 +67,6 @@ } } - // Inner wrapper - &__inner { - padding: 0.8rem 0.8rem 0; - - // [tablet +]: Header-embedded search - @include break-from-device(tablet) { - padding: 0.4rem; - padding-right: 3.2rem; - } - } - // Search form &__form { position: relative; @@ -86,10 +82,10 @@ // Icon &__icon { position: absolute; - top: 0.8rem; - left: 1.2rem; + top: $md-icon-padding; + left: $md-icon-padding + $md-icon-margin; transition: color 0.25s; - font-size: 2.4rem; + font-size: $md-icon-size; cursor: pointer; // [mobile -]: Use back arrow as search icon @@ -105,7 +101,7 @@ // Search field &__input { - padding: 0 0.8rem 0 6.4rem; + padding: 0 1.6rem 0 6.4rem; border-radius: px2rem(2px); text-overflow: ellipsis; diff --git a/src/assets/stylesheets/layout/_sidebar.scss b/src/assets/stylesheets/layout/_sidebar.scss index 8a21f9240..8bd2cab17 100644 --- a/src/assets/stylesheets/layout/_sidebar.scss +++ b/src/assets/stylesheets/layout/_sidebar.scss @@ -37,19 +37,20 @@ top: 5.6rem; } - // [tablet landscape -]: Convert navigation to drawer - @include break-to-device(tablet landscape) { + // [tablet -]: Convert navigation to drawer + @include break-to-device(tablet) { // Render primary sidebar as a slideout container &--primary { position: fixed; top: 0; - width: 24.2em; + left: -24.2rem; + width: 24.2rem; height: 100%; - transform: translate3d(-24.2em, 0, 0); + transform: translate3d(0, 0, 0); transition: transform 0.25s cubic-bezier(0.4, 0.0, 0.2, 1.0); background: $md-color-white; - z-index: 3; + z-index: 2; // Just hide drawer, if browser doesn't support 3D transforms .no-csstransforms3d & { @@ -58,13 +59,18 @@ // Expanded drawer .md-toggle--drawer:checked ~ .md-container & { - transform: translate3d(0, 0, 0); + transform: translate3d(24.2rem, 0, 0); // Just show drawer, if browser doesn't support 3D transforms .no-csstransforms3d & { display: block; } } + + // Hide overflow for nested navigation + .md-sidebar__scrollwrap { + overflow: hidden; + } } } @@ -82,8 +88,8 @@ margin-left: 100%; transform: translate(-100%, 0); - // [screen small +]: Limit to grid - @include break-from-device(screen small) { + // [screen +]: Limit to grid + @include break-from-device(screen) { margin-left: 120.0rem; } } @@ -94,10 +100,10 @@ &__scrollwrap { margin: 2.4rem 0.4rem; overflow-y: scroll; - -webkit-overflow-scrolling: touch; + // -webkit-overflow-scrolling: touch; // TODO: define on sidebar - // [tablet landscape -]: Adjust margins - @include break-to-device(tablet landscape) { + // [tablet -]: Adjust margins + @include break-to-device(tablet) { // Adjust margins for primary scrollbar .md-sidebar--primary & { @@ -128,10 +134,9 @@ // Actual sidebar content &__inner { - padding: 1.2rem; - // [screen small +]: Add line for reference - @include break-from-device(screen small) { + // [screen +]: Add line for reference + @include break-from-device(screen) { border-right: px2rem(1px) solid $md-color-black--lightest; } } diff --git a/src/assets/stylesheets/layout/_source.scss b/src/assets/stylesheets/layout/_source.scss index 01cdc5341..d378bcdc5 100644 --- a/src/assets/stylesheets/layout/_source.scss +++ b/src/assets/stylesheets/layout/_source.scss @@ -54,12 +54,12 @@ display: block; position: absolute; top: 50%; - left: 0.8rem; - width: 2.4rem; - height: 2.4rem; + left: $md-icon-padding; + width: $md-icon-size; + height: $md-icon-size; transform: translateY(-50%); background-repeat: no-repeat; - background-size: 2.4rem 2.4rem; + background-size: $md-icon-size $md-icon-size; content: ""; } } diff --git a/src/base.html b/src/base.html index 3bca7dbca..23cbb7a2e 100644 --- a/src/base.html +++ b/src/base.html @@ -63,7 +63,7 @@ + href="https://fonts.googleapis.com/css?family=Roboto+Mono:400" /> @@ -86,7 +86,7 @@ - {% include "header.html" %} + {% include "partials/header.html" %}
    @@ -105,22 +105,43 @@ {% if nav %} - {% include "nav.html" %} +
    +
    +
    + {% include "partials/nav.html" %} +
    +
    +
    {% endif %} {% if toc %} - {% include "toc.html" %} +
    +
    +
    + {% include "partials/toc.html" %} +
    +
    +
    {% endif %}
    - -
    Edit on GitHub
    + + {% block content %} - {{ content }} + + {% if edit_uri %} + + Edit + + {% endif %} + + + {{ content }} + {% endblock %}
    @@ -144,7 +165,7 @@ - {% include "footer.html" %} + {% include "partials/footer.html" %}
    @@ -157,4 +178,4 @@ {% endfor %} - \ No newline at end of file + diff --git a/src/footer.html b/src/partials/footer.html similarity index 99% rename from src/footer.html rename to src/partials/footer.html index a45778a06..4c8cc7296 100644 --- a/src/footer.html +++ b/src/partials/footer.html @@ -70,4 +70,4 @@
    {% endif %} - \ No newline at end of file + diff --git a/src/header.html b/src/partials/header.html similarity index 66% rename from src/header.html rename to src/partials/header.html index fe2070431..b0693ac8c 100644 --- a/src/header.html +++ b/src/partials/header.html @@ -41,40 +41,17 @@ -
    +
    -
    -
    -
    - - -
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    - FOO
    -
    -
    -
    + + + {% include "partials/search.html" %}
    {% if "github." in repo_url %} {% set platform = "md-source--github" %} @@ -91,16 +68,11 @@
    {{ repo_name }}
    -
    - 0.2.4 · 177 Stars · 46 Forks -
    +
      +
    • v0.2.4
    • +
    - - - - \ No newline at end of file + diff --git a/src/nav-item.html b/src/partials/nav-item.html similarity index 56% rename from src/nav-item.html rename to src/partials/nav-item.html index fc5ba402e..45fb0d7e3 100644 --- a/src/nav-item.html +++ b/src/partials/nav-item.html @@ -21,33 +21,54 @@ --> -{% if nav_item.children %} -
  • +{% if nav_item.children or nav_item == current_page %} +
  • + {% if nav_item == current_page %} + {% set path = "toc" %} + {% endif %} - - {% if nav_item.active %} + + {% if nav_item.active and not nav_item == current_page %} {% 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 %} -
    + + {% if nav_item == current_page %} + + + {{ nav_item.title }} + + + + {% include "partials/toc.html" %} + {% else %} + + + {% endif %}
  • @@ -58,30 +79,6 @@ class="md-nav__link md-nav__link--active"> {{ nav_item.title }} - - - - - - - - - {% else %} @@ -89,4 +86,4 @@ {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/src/nav.html b/src/partials/nav.html similarity index 73% rename from src/nav.html rename to src/partials/nav.html index f965b01f2..30f0d15f1 100644 --- a/src/nav.html +++ b/src/partials/nav.html @@ -21,16 +21,12 @@ --> -
    -
    - -
    -
    \ No newline at end of file + diff --git a/src/partials/search.html b/src/partials/search.html new file mode 100644 index 000000000..c4ad8b23f --- /dev/null +++ b/src/partials/search.html @@ -0,0 +1,50 @@ + + + + \ No newline at end of file diff --git a/src/toc-item.html b/src/partials/toc-item.html similarity index 87% rename from src/toc-item.html rename to src/partials/toc-item.html index 82ab867a6..521c6ad9b 100644 --- a/src/toc-item.html +++ b/src/partials/toc-item.html @@ -29,10 +29,12 @@ {% 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/partials/toc.html similarity index 57% rename from src/toc.html rename to src/partials/toc.html index 92c167d4e..bd8183076 100644 --- a/src/toc.html +++ b/src/partials/toc.html @@ -21,29 +21,25 @@ --> -
    -
    -
    -
    \ No newline at end of file + + {% if toc and (toc | first) %} + +
      + {% for toc_item in toc %} + {% include "partials/toc-item.html" %} + {% endfor %} +
    + {% endif %} + \ No newline at end of file diff --git a/src/search.html b/src/search.html deleted file mode 100644 index e69de29bb..000000000