diff --git a/.babelrc b/.babelrc index 43a5682a6..cf97ee5ce 100644 --- a/.babelrc +++ b/.babelrc @@ -1,9 +1,10 @@ { "presets": [ [ - "env", + "@babel/preset-env", { - "forceAllTransforms": true + "useBuiltIns": "entry", + "targets": "> 2%" } ] ] diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..cdfdd3780 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +yarn.lock binary diff --git a/.gitignore b/.gitignore index 810939e66..8e067e264 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,8 @@ _site .jekyll-metadata /node_modules /vendor -.idea/ \ No newline at end of file +.idea/ + +# Generated by 'yarn dev' +/_includes/2017/critical/critical-home.js +/_includes/2017/critical/critical-sheet.js diff --git a/.prettierrc b/.prettierrc index ae863e143..4f49fe278 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "semi": false, "singleQuote": true, - "jsxSingleQuote": true + "jsxSingleQuote": true, + "trailingComma": "none" } diff --git a/.travis.yml b/.travis.yml index 3f83d39f1..f5002202e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,25 @@ language: ruby -rvm: -- 2.5 +rvm: [2.7.1] + +before_install: + - nvm install 12 + - nvm use 12 + - node --version + - ruby --version + +install: + - yarn --frozen-lockfile + - bundle --jobs=3 --retry=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle} + script: -- make -B _site -- if ! make test; then make test-warning; exit 16; fi -cache: bundler + - yarn build + - yarn test + - if ! make test; then make test-warning; exit 16; fi + +cache: + bundler: true + yarn: true + notifications: slack: if: branch = master OR branch =~ ^.*slack.*$ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fc6a1912..f5268af92 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,7 @@ # Developer notes -## Gitpod +## Gitpod + This repository supports contribution using [gitpod](https://gitpod.io) which is online IDE using [Theia](https://github.com/eclipse-theia/theia). To open-up the environment simple natigate on https://gitpod.io/#https://github.com/rstacruz/cheatsheets @@ -9,14 +10,14 @@ Or using a button:
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/rstacruz/cheatsheets) ### Preview built website + To preview the website you need to first build it then you can navigate to file that you are trying to contribute and preview directly. - ## Starting a local instance -This starts Jekyll and Webpack. This requires recent versions of [Node.js], [Yarn], [Ruby] and [Bundler] installed. +This starts Jekyll and Parcel. This requires recent versions of [Node.js], [Yarn], [Ruby] and [Bundler] installed. ```bash yarn install @@ -56,9 +57,11 @@ See for a reference on styling. ## JavaScript -When updating JavaScript, be sure webpack is running (`yarn run dev` takes care of this). +When updating JavaScript, be sure Parcel is running (`yarn dev` takes care of this). -This auto-updates `/assets/packed/` with sources in `_js/`. +This auto-updates `/assets/packed/` and `_includes/2017/critical/` with sources in `_parcel/`. + +Before committing, run `yarn parcel:build` first. ## JavaScript tests @@ -75,16 +78,16 @@ Each sheet supports these metadata: ```yml --- title: React.js -layout: 2017/sheet # 'default' | '2017/sheet' +layout: 2017/sheet # 'default' | '2017/sheet' # Optional: category: React -updated: 2017-08-30 # To show in the updated list -ads: false # Add this to disable ads -weight: -5 # lower number = higher in related posts list -deprecated: true # Don't show in related posts -deprecated_by: /enzyme # Point to latest version -prism_languages: [vim] # Extra syntax highlighting +updated: 2017-08-30 # To show in the updated list +ads: false # Add this to disable ads +weight: -5 # lower number = higher in related posts list +deprecated: true # Don't show in related posts +deprecated_by: /enzyme # Point to latest version +prism_languages: [vim] # Extra syntax highlighting intro: | This is some *Markdown* at the beginning of the article. tags: @@ -93,9 +96,10 @@ tags: # Special pages: # (don't set these for cheatsheets) -type: home # home | article | error -og_type: website # opengraph type +type: home # home | article | error +og_type: website # opengraph type --- + ``` ## Prism languages @@ -115,6 +119,7 @@ title: ES2015 category: Hidden redirect_to: /es6 --- + ``` ## Localizations @@ -170,26 +175,3 @@ building web user interfaces... ### intro only If you left out `description` or `keywords`, a default description will be added. - -## Critical path CSS - -The critical path CSS is stored in: - -- `_includes/2017/critical/home.html` -- `_includes/2017/critical/sheet.html` - -You'll need to update these every now and then when you change something in the CSS. Use this to update these snippets: - -``` -yarn run critical -``` - -You can temporarily disable critical path optimizations by loading it with `?nocrit=1`, eg, `https://devhints.io/?nocrit=1`. - -## Critical path JS - -There's JavaScript that's included inline in every page. It's entrypoint is: - -- `_js/critical.js` - -This is automatically compiled into the partial `_includes/2017/critical/critical.js`. Keep this bundle as small as possible. diff --git a/Dockerfile b/Dockerfile index 997ad584f..817e26443 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -FROM ruby:2.5.1 -RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - +FROM ruby:2.7.1 +RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ diff --git a/Makefile b/Makefile index e2ad817c4..f63846fed 100644 --- a/Makefile +++ b/Makefile @@ -9,43 +9,14 @@ help: @echo # Builds intermediate files. Needs a _site built first though -update: _site critical +update: _site # Builds _site _site: - bundle exec jekyll build --incremental + yarn build -critical: _site ## Builds critical path CSS/JS - node _support/critical.js - -# Ensure that bins are available. -ensure-bin: - @if [ ! -d $(npmbin) ]; then \ - echo "---"; \ - echo "Error: $(npmbin) not found, you may need to run '[docker-compose run --rm web] yarn install'."; \ - echo "---"; \ - exit 1; \ - fi - @if ! which jekyll &>/dev/null; then \ - echo "---"; \ - echo "Warning: Jekyll not found, you may need to run '[docker-compose run --rm web] bundle install'."; \ - echo "---"; \ - fi - -dev: ensure-bin ## Starts development server - $(npmbin)/concurrently -k -p command -c "blue,green" \ - "make dev-webpack" \ - "make dev-jekyll" - -dev-webpack: ensure-bin - $(npmbin)/webpack --watch --colors -p - -dev-jekyll: ensure-bin - if [ -f _site ]; then \ - bundle exec jekyll serve --safe --trace --drafts --watch --incremental --host $(HOST) --port $(PORT); \ - else \ - bundle exec jekyll serve --safe --trace --drafts --watch --host $(HOST) --port $(PORT); \ - fi +dev: + yarn dev test: _site ## Runs rudimentary tests @test -f _site/vim.html diff --git a/_config.yml b/_config.yml index f931eb28a..499ea866f 100644 --- a/_config.yml +++ b/_config.yml @@ -9,21 +9,23 @@ plugins: - jekyll-github-metadata exclude: - - Makefile - - README.md + - .babelrc + - .cache + - CNAME - CONTRIBUTING.md + - docker_compose.yml + - Dockerfile - Gemfile - Gemfile.lock - - CNAME - - vendor - - package.json - - .babelrc - - yarn.lock - - package-lock.json - - webpack.config.js + - Makefile - node_modules - - Dockerfile - - docker_compose.yml + - package.json + - package-lock.json + - README.md + - vendor + - webpack.config.js + - yarn-error.log + - yarn.lock # Markdown diff --git a/_includes/2017/critical/critical-home.css b/_includes/2017/critical/critical-home.css new file mode 100644 index 000000000..5b114b574 --- /dev/null +++ b/_includes/2017/critical/critical-home.css @@ -0,0 +1,3 @@ +*,:after,:before{box-sizing:border-box}:after,:before{text-decoration:inherit;vertical-align:inherit}html{cursor:default;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-break:break-word}body{margin:0}h1{font-size:2em;margin:.67em 0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{margin:0}hr{height:0;overflow:visible}main{display:block}nav ol,nav ul{list-style:none;padding:0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}audio,canvas,iframe,img,svg,video{vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}iframe,img{border-style:none}svg:not([fill]){fill:currentColor}svg:not(:root){overflow:hidden}table{border-collapse:collapse}button,input,select{margin:0}button{overflow:visible;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}fieldset{border:1px solid #a0a0a0;padding:.35em .75em .625em}input{overflow:visible}legend{color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}select{text-transform:none}textarea{margin:0;overflow:auto;resize:vertical}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}details,dialog{display:block}dialog{background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content}dialog:not([open]){display:none}summary{display:list-item}canvas{display:inline-block}template{display:none}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}[hidden]{display:none}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}@charset "UTF-8"; +/*! ionicons-inline v0.0.10 | MIT | https://github.com/rstacruz/ionicons-inline */ +/*! ionicons-inline v0.0.10 | MIT | https://github.com/rstacruz/ionicons-inline */body,html{background:#f1f3f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:14px;line-height:1.6;color:#345;overflow-x:hidden}body{font-size:13px;padding:0;margin:0}@media (min-width:480px) and (max-width:768px){body{font-size:calc(13px + 1*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){body{font-size:calc(14px + 0*(100vw - 768px)/512)}}@media (min-width:1280px){body{font-size:14px}}code,pre{font-family:cousine,SFMono-Regular,Consolas,Menlo,Liberation Mono,Ubuntu Mono,Courier,monospace;letter-spacing:-.03em}pre{font-size:.96em}:not(pre):not(code){-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#26648e}a:visited{color:#15234d}a:hover{color:#3ac1cb}[aria-hidden]:not(.line-highlight){display:none!important}@media (max-width:580px){.hint--bottom:after,.hint--bottom:before{display:none}}html.WithJs .post-content{opacity:0}html.WithJs .intro-content,html.WithJs .pages-list,html.WithJs .post-content.-wrapified{opacity:.4}html.WithJs.LoadDone .intro-content,html.WithJs.LoadDone .pages-list,html.WithJs.LoadDone .post-content.-wrapified{opacity:1;transition:opacity .1s linear .1s}.attribute-peg{display:inline-block;height:12px;width:20px;text-align:center}.attribute-peg>span{display:inline-block;width:8px;height:8px;background:#77dab2;border-radius:50%}.announcements-item{position:relative;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3),0 8px 12px rgba(58,193,203,.1);border-radius:1px;background:#fff;padding:16px 48px 16px 16px;animation:announcements-item-flyin .5s ease-out;transition:opacity .5s linear,transform .5s ease-out}.announcements-item.-hide{display:none}.announcements-item>.title{font-size:14.95px;font-weight:400;color:#745fb5;margin:0;padding:0}@media (min-width:480px) and (max-width:768px){.announcements-item>.title{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.announcements-item>.title{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.announcements-item>.title{font-size:16.38px}}.announcements-item>.body>p{margin:0;padding:0}.announcements-item>.body>p+p{margin-top:1em}.announcements-item>.close{position:absolute;right:0;top:0;width:40px;height:40px;line-height:40px;text-align:center;border:0;margin:0;padding:0;cursor:pointer;background:transparent}.announcements-item>.close:focus,.announcements-item>.close:hover{color:#745fb5}.announcements-item>.close:before{content:"×";font-size:14px}@keyframes announcements-item-flyin{0%{transform:translate3d(0,32px,0);opacity:0}to{transform:translateZ(0);opacity:1}}.announcements-list{position:fixed;left:0;bottom:0;max-width:420px;padding:0;z-index:10}@media (min-width:481px){.announcements-list{padding:16px}}@media (min-width:769px){.announcements-list{padding:32px}}.back-button{text-decoration:none;width:48px;height:48px;line-height:46px;text-align:center;display:inline-block;border-radius:50%;transition:all .1s linear}@media (max-width:480px){.back-button{width:32px;height:32px;line-height:30px}}.back-button,.back-button:visited{color:#678}.back-button:focus,.back-button:hover{color:#fff;background:#745fb5;opacity:1}.back-button:before{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M427 234.625H167.296l119.702-119.702L256 85 85 256l171 171 29.922-29.924-118.626-119.7H427v-42.75z'/%3E%3C/svg%3E") 50%/24px 24px no-repeat;height:24px;width:24px;vertical-align:middle}.back-button:focus:before,.back-button:hover:before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23FFF' d='M427 234.625H167.296l119.702-119.702L256 85 85 256l171 171 29.922-29.924-118.626-119.7H427v-42.75z'/%3E%3C/svg%3E") 50%/24px 24px no-repeat;height:24px;width:24px}@media (max-width:480px){.back-button:before{font-size:16px}}.body-area{max-width:1232px;margin:0 auto;padding:16px}@media (max-width:480px){.body-area{padding:16px}}.body-area.-slim{max-width:740px}.codefund-sponsor{min-height:114px}.codefund-sponsor .cf-wrapper{margin-left:auto;margin-right:auto}.page-actions{margin:0;padding:0;height:32px}.page-actions>.link.link>a{display:inline-block;height:32px;line-height:32px;vertical-align:top;width:auto}.page-actions>li{margin:0;padding:0;list-style-type:none}.page-actions>li>a,.page-actions>li>a:visited{color:#678;text-decoration:none}.page-actions>li>a:focus,.page-actions>li>a:focus>.text,.page-actions>li>a:hover,.page-actions>li>a:hover>.text{color:#745fb5}.page-actions>li>a>.text{font-size:11.3043478261px;display:none}@media (min-width:480px) and (max-width:768px){.page-actions>li>a>.text{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.page-actions>li>a>.text{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.page-actions>li>a>.text{font-size:11.9658119658px}}.page-actions>li>a>.text.-visible{display:inline}.page-actions+.page-actions{margin-left:8px}.page-actions>.facebook>a:before,.page-actions>.github>a:before,.page-actions>.twitter>a:before{content:"";vertical-align:middle}.page-actions>.facebook>a:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='%23345' d='M426.8 64H85.2C73.5 64 64 73.5 64 85.2v341.6c0 11.7 9.5 21.2 21.2 21.2H256V296h-45.9v-56H256v-41.4c0-49.6 34.4-76.6 78.7-76.6 21.2 0 44 1.6 49.3 2.3v51.8h-35.3c-24.1 0-28.7 11.4-28.7 28.2V240h57.4l-7.5 56H320v152h106.8c11.7 0 21.2-9.5 21.2-21.2V85.2c0-11.7-9.5-21.2-21.2-21.2z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat}.page-actions>.facebook>a:before,.page-actions>.twitter>a:before{display:inline-block;vertical-align:middle;height:16px;width:16px}.page-actions>.twitter>a:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M492 109.5c-17.4 7.7-36 12.9-55.6 15.3 20-12 35.4-31 42.6-53.6-18.7 11.1-39.4 19.2-61.5 23.5C399.8 75.8 374.6 64 346.8 64c-53.5 0-96.8 43.4-96.8 96.9 0 7.6.8 15 2.5 22.1-80.5-4-151.9-42.6-199.6-101.3-8.3 14.3-13.1 31-13.1 48.7 0 33.6 17.2 63.3 43.2 80.7-16-.4-31-4.8-44-12.1v1.2c0 47 33.4 86.1 77.7 95-8.1 2.2-16.7 3.4-25.5 3.4-6.2 0-12.3-.6-18.2-1.8 12.3 38.5 48.1 66.5 90.5 67.3-33.1 26-74.9 41.5-120.3 41.5-7.8 0-15.5-.5-23.1-1.4C62.8 432 113.7 448 168.3 448 346.6 448 444 300.3 444 172.2c0-4.2-.1-8.4-.3-12.5C462.6 146 479 129 492 109.5z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat}.page-actions>.github>a:before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9 1.4.3 2.6.4 3.8.4 8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1-8.4 1.9-15.9 2.7-22.6 2.7-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1 10.5 0 20-3.4 25.6-6 2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8 0 0 1.6-.5 5-.5 8.1 0 26.4 3.1 56.6 24.1 17.9-5.1 37-7.6 56.1-7.7 19 .1 38.2 2.6 56.1 7.7 30.2-21 48.5-24.1 56.6-24.1 3.4 0 5 .5 5 .5 12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5 1.2 0 2.6-.1 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat;height:16px;width:16px}.page-actions>.github>a:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23FFF' d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9 1.4.3 2.6.4 3.8.4 8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1-8.4 1.9-15.9 2.7-22.6 2.7-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1 10.5 0 20-3.4 25.6-6 2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8 0 0 1.6-.5 5-.5 8.1 0 26.4 3.1 56.6 24.1 17.9-5.1 37-7.6 56.1-7.7 19 .1 38.2 2.6 56.1 7.7 30.2-21 48.5-24.1 56.6-24.1 3.4 0 5 .5 5 .5 12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5 1.2 0 2.6-.1 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z'/%3E%3C/svg%3E")}.page-actions>.facebook>a:before,.page-actions>.twitter>a:before{width:32px;height:32px}.page-actions>.github>a:before{position:relative;top:-2px}.page-actions>.link.-button>a{box-shadow:inset 0 0 0 1px rgba(102,119,136,.2);border-radius:2px;padding:0 16px;margin:0 8px;transition:all .1s linear}.page-actions>.link.-button>a>.text{margin-left:4px;position:relative;top:-1px}.page-actions>.link.-button>a:focus,.page-actions>.link.-button>a:hover{background:linear-gradient(5deg,#745fb5,#9066b8);box-shadow:0 1px 1px rgba(102,119,136,.55)}.page-actions>.link.-button>a:focus,.page-actions>.link.-button>a:focus>.text,.page-actions>.link.-button>a:hover,.page-actions>.link.-button>a:hover>.text{color:#fff}@media (max-width:768px){.page-actions>.link{margin-left:16px}}.page-actions>.link:first-child>a{margin-left:0}.page-actions>.link:last-child>a{margin-right:0}.pages-list{display:flex;flex-wrap:wrap}.pages-list>.item{flex:0 0 100%}.pages-list>.item.article{flex:0 0 50%}@media (min-width:581px){.pages-list>.item.top-sheet{flex:0 0 25%}}.pages-list>.article{text-decoration:none;display:block;white-space:nowrap;padding:4px 0}.pages-list>.article,.pages-list>.article:visited{color:#92a0ad}.pages-list>.article>.info>.slug{color:#111}.pages-list>.article:visited>.info>.slug{color:#345}.pages-list>.article>.info>.title:before{content:"";margin:0 4px}.pages-list>.article>.info>.title{opacity:0}@media (max-width:768px){.pages-list>.article>.info>.title{display:none}}.pages-list>.article:focus,.pages-list>.article:hover{color:#678}.pages-list>.article:focus>.info>.title,.pages-list>.article:hover>.info>.title{opacity:1;color:#745fb5}.pages-list>.category{font-size:14.95px;border-bottom:1px solid rgba(102,119,136,.2);margin:16px 0;padding:0 0 16px;font-weight:400;color:#745fb5}@media (min-width:480px) and (max-width:768px){.pages-list>.category{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.pages-list>.category{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.pages-list>.category{font-size:16.38px}}.search-box{background:#fff;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3);display:flex;height:64px;align-items:center;cursor:text}.search-box>input{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:17.1925px;height:64px;background:transparent;border:0;flex:1 1 auto;padding:16px 16px 16px 0;font-weight:700;color:#111;min-width:48px}@media (min-width:480px) and (max-width:768px){.search-box>input{font-size:calc(17.1925px + 1.6459*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>input{font-size:calc(18.8384px + 0.3262*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>input{font-size:19.1646px}}.search-box>input::placeholder{font-weight:400;color:#678}.search-box>input:focus{outline:0}.search-box>.prefix{font-size:13px;display:block;color:rgba(102,119,136,.5);font-weight:400;user-select:none;line-height:1.5em;padding:2px 8px;border-radius:3px;background:rgba(241,243,245,.5);margin:0 0 0 16px;box-shadow:0 1px 1px rgba(102,119,136,.25)}@media (min-width:480px) and (max-width:768px){.search-box>.prefix{font-size:calc(13px + 1*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>.prefix{font-size:calc(14px + 0*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>.prefix{font-size:14px}}.search-box>.sep{color:rgba(102,119,136,.5);font-size:17.1925px;margin:0 8px}@media (min-width:480px) and (max-width:768px){.search-box>.sep{font-size:calc(17.1925px + 1.6459*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>.sep{font-size:calc(18.8384px + 0.3262*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>.sep{font-size:19.1646px}}@media (max-width:768px){.search-box>.prefix,.search-box>.sep{display:none}.search-box>input{padding-left:16px}}.search-box:before{content:"";display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23111' d='M337.51 305.372h-17.502l-6.57-5.486c20.79-25.232 33.92-57.054 33.92-93.257C347.36 127.63 283.897 64 205.136 64 127.452 64 64 127.632 64 206.63s63.452 142.627 142.225 142.627c35.01 0 67.83-13.167 92.99-34.008l6.562 5.486v17.55L415.18 448 448 415.086 337.51 305.372zm-131.285 0c-54.702 0-98.463-43.887-98.463-98.743 0-54.86 43.76-98.743 98.463-98.743 54.7 0 98.462 43.884 98.462 98.742 0 54.855-43.762 98.742-98.462 98.742z'/%3E%3C/svg%3E") 50%/32px 32px no-repeat;height:32px;width:32px;background-position:50%;flex:0 0 64px;width:64px;order:2}.search-box.-small{height:48px}.search-box.-small>input{height:48px;padding:8px 8px 8px 0}.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:14.95px}@media (min-width:480px) and (max-width:768px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:16.38px}}.search-box.-small:before{flex:0 0 48px;width:48px;line-height:48px;background-size:24px 24px;background-position:50%}.site-header{margin:32px 0}.site-header>p{margin:0;padding:0;text-align:center;color:#678}.site-header>p>a{text-decoration:none}.site-header>h1{font-size:39.767297213px;line-height:1.2;padding:0;color:#111;font-weight:200;text-align:center;margin:0 0 16px}@media (min-width:480px) and (max-width:768px){.site-header>h1{font-size:calc(39.7673px + 6.13051*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.site-header>h1{font-size:calc(45.89781px + 3.26254*(100vw - 768px)/512)}}@media (min-width:1280px){.site-header>h1{font-size:49.1603458612px}}.site-header>.action,.site-header>.search{margin-top:32px}.site-header>.adbox{margin:16px auto}@media (max-width:480px){.site-header>.adbox{margin-left:-16px;margin-right:-16px}}.top-nav,.top-nav>.container{height:64px;line-height:64px;text-align:center;position:relative}@media (max-width:480px){.top-nav>.container{height:32px;line-height:32px;margin-top:8px}.top-nav{height:48px;padding:8px 0;border-bottom:1px solid rgba(102,119,136,.2);margin-bottom:8px}}.top-nav>.container{padding-left:16px;padding-right:16px;max-width:1232px;margin:0 auto}@media (max-width:480px){.top-nav>.container{padding-left:16px;padding-right:16px}}.top-nav>.container{display:flex;align-items:center;position:relative}.top-nav>.container>.left{flex:0 0 auto;line-height:32px}.top-nav>.container>.brand{flex:1 1 auto}.top-nav>.container>.actions{flex:0 0 auto;display:flex}.top-nav>.container>.brand{font-size:11.3043478261px;display:inline-block;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-decoration:none}@media (min-width:480px) and (max-width:768px){.top-nav>.container>.brand{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.top-nav>.container>.brand{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.top-nav>.container>.brand{font-size:11.9658119658px}}.top-nav>.container>.brand,.top-nav>.container>.brand:visited{color:#345}.top-nav>.container>.brand:hover{color:#745fb5}@media (max-width:480px){.top-nav>.container>.brand{display:none}.top-nav>.container>.actions{margin-left:auto}}@media (min-width:481px){.top-nav>.container>.actions{position:absolute;right:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.actions{right:16px}}@media (min-width:481px){.top-nav>.container>.left{position:absolute;left:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.left{left:16px}}@media (min-width:1232px){.top-nav>.container>.left>.home{position:relative;left:-16px}}.top-sheet.top-sheet{padding:4px;text-decoration:none}.top-sheet.top-sheet>.info{display:block;background:#745fb5;color:#fff;text-align:left;padding:16px;width:auto;border-radius:3px;box-shadow:0 1px 1px rgba(102,119,136,.55);text-shadow:0 1px 1px rgba(51,68,85,.3);white-space:nowrap}.top-sheet.top-sheet:focus>.info,.top-sheet.top-sheet:hover>.info{box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3)}.top-sheet.top-sheet:nth-of-type(3n+1)>.info{background:linear-gradient(15deg,#745fb5,#9a6dbb)}.top-sheet.top-sheet:nth-of-type(3n+1):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+1):hover>.info{background:#5f4aa1}.top-sheet.top-sheet:nth-of-type(3n+2)>.info{background:linear-gradient(15deg,#678,#6f8793)}.top-sheet.top-sheet:nth-of-type(3n+2):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+2):hover>.info{background:#556371}.top-sheet.top-sheet:nth-of-type(3n+3)>.info{background:linear-gradient(15deg,#14af83,#15b89a)}.top-sheet.top-sheet:nth-of-type(3n+3):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+3):hover>.info{background:#108b68}.top-sheet.top-sheet>.info>.title{display:none} \ No newline at end of file diff --git a/_includes/2017/critical/critical-sheet.css b/_includes/2017/critical/critical-sheet.css new file mode 100644 index 000000000..ccef97024 --- /dev/null +++ b/_includes/2017/critical/critical-sheet.css @@ -0,0 +1,3 @@ +*,:after,:before{box-sizing:border-box}:after,:before{text-decoration:inherit;vertical-align:inherit}html{cursor:default;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-break:break-word}body{margin:0}h1{font-size:2em;margin:.67em 0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{margin:0}hr{height:0;overflow:visible}main{display:block}nav ol,nav ul{list-style:none;padding:0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}audio,canvas,iframe,img,svg,video{vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}iframe,img{border-style:none}svg:not([fill]){fill:currentColor}svg:not(:root){overflow:hidden}table{border-collapse:collapse}button,input,select{margin:0}button{overflow:visible;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}fieldset{border:1px solid #a0a0a0;padding:.35em .75em .625em}input{overflow:visible}legend{color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}select{text-transform:none}textarea{margin:0;overflow:auto;resize:vertical}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}details,dialog{display:block}dialog{background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content}dialog:not([open]){display:none}summary{display:list-item}canvas{display:inline-block}template{display:none}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}[hidden]{display:none}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}@charset "UTF-8"; +/*! ionicons-inline v0.0.10 | MIT | https://github.com/rstacruz/ionicons-inline */ +/*! ionicons-inline v0.0.10 | MIT | https://github.com/rstacruz/ionicons-inline */body,html{background:#f1f3f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:14px;line-height:1.6;color:#345;overflow-x:hidden}body{font-size:13px;padding:0;margin:0}@media (min-width:480px) and (max-width:768px){body{font-size:calc(13px + 1*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){body{font-size:calc(14px + 0*(100vw - 768px)/512)}}@media (min-width:1280px){body{font-size:14px}}code,pre{font-family:cousine,SFMono-Regular,Consolas,Menlo,Liberation Mono,Ubuntu Mono,Courier,monospace;letter-spacing:-.03em}pre{font-size:.96em}:not(pre):not(code){-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#26648e}a:visited{color:#15234d}a:hover{color:#3ac1cb}[aria-hidden]:not(.line-highlight){display:none!important}@media (max-width:580px){.hint--bottom:after,.hint--bottom:before{display:none}}html.WithJs .post-content{opacity:0}html.WithJs .intro-content,html.WithJs .pages-list,html.WithJs .post-content.-wrapified{opacity:.4}html.WithJs.LoadDone .intro-content,html.WithJs.LoadDone .pages-list,html.WithJs.LoadDone .post-content.-wrapified{opacity:1;transition:opacity .1s linear .1s}.attribute-peg{display:inline-block;height:12px;width:20px;text-align:center}.attribute-peg>span{display:inline-block;width:8px;height:8px;background:#77dab2;border-radius:50%}.announcements-item{position:relative;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3),0 8px 12px rgba(58,193,203,.1);border-radius:1px;background:#fff;padding:16px 48px 16px 16px;animation:announcements-item-flyin .5s ease-out;transition:opacity .5s linear,transform .5s ease-out}.announcements-item.-hide{display:none}.announcements-item>.title{font-size:14.95px;font-weight:400;color:#745fb5;margin:0;padding:0}@media (min-width:480px) and (max-width:768px){.announcements-item>.title{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.announcements-item>.title{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.announcements-item>.title{font-size:16.38px}}.announcements-item>.body>p{margin:0;padding:0}.announcements-item>.body>p+p{margin-top:1em}.announcements-item>.close{position:absolute;right:0;top:0;width:40px;height:40px;line-height:40px;text-align:center;border:0;margin:0;padding:0;cursor:pointer;background:transparent}.announcements-item>.close:focus,.announcements-item>.close:hover{color:#745fb5}.announcements-item>.close:before{content:"×";font-size:14px}@keyframes announcements-item-flyin{0%{transform:translate3d(0,32px,0);opacity:0}to{transform:translateZ(0);opacity:1}}.announcements-list{position:fixed;left:0;bottom:0;max-width:420px;padding:0;z-index:10}@media (min-width:481px){.announcements-list{padding:16px}}@media (min-width:769px){.announcements-list{padding:32px}}.pages-list{display:flex;flex-wrap:wrap}.pages-list>.item{flex:0 0 100%}.pages-list>.item.article{flex:0 0 50%}@media (min-width:581px){.pages-list>.item.top-sheet{flex:0 0 25%}}.pages-list>.article{text-decoration:none;display:block;white-space:nowrap;padding:4px 0}.pages-list>.article,.pages-list>.article:visited{color:#92a0ad}.pages-list>.article>.info>.slug{color:#111}.pages-list>.article:visited>.info>.slug{color:#345}.pages-list>.article>.info>.title:before{content:"";margin:0 4px}.pages-list>.article>.info>.title{opacity:0}@media (max-width:768px){.pages-list>.article>.info>.title{display:none}}.pages-list>.article:focus,.pages-list>.article:hover{color:#678}.pages-list>.article:focus>.info>.title,.pages-list>.article:hover>.info>.title{opacity:1;color:#745fb5}.pages-list>.category{font-size:14.95px;border-bottom:1px solid rgba(102,119,136,.2);margin:16px 0;padding:0 0 16px;font-weight:400;color:#745fb5}@media (min-width:480px) and (max-width:768px){.pages-list>.category{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.pages-list>.category{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.pages-list>.category{font-size:16.38px}}.search-box{background:#fff;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3);display:flex;height:64px;align-items:center;cursor:text}.search-box>input{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:17.1925px;height:64px;background:transparent;border:0;flex:1 1 auto;padding:16px 16px 16px 0;font-weight:700;color:#111;min-width:48px}@media (min-width:480px) and (max-width:768px){.search-box>input{font-size:calc(17.1925px + 1.6459*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>input{font-size:calc(18.8384px + 0.3262*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>input{font-size:19.1646px}}.search-box>input::placeholder{font-weight:400;color:#678}.search-box>input:focus{outline:0}.search-box>.prefix{font-size:13px;display:block;color:rgba(102,119,136,.5);font-weight:400;user-select:none;line-height:1.5em;padding:2px 8px;border-radius:3px;background:rgba(241,243,245,.5);margin:0 0 0 16px;box-shadow:0 1px 1px rgba(102,119,136,.25)}@media (min-width:480px) and (max-width:768px){.search-box>.prefix{font-size:calc(13px + 1*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>.prefix{font-size:calc(14px + 0*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>.prefix{font-size:14px}}.search-box>.sep{color:rgba(102,119,136,.5);font-size:17.1925px;margin:0 8px}@media (min-width:480px) and (max-width:768px){.search-box>.sep{font-size:calc(17.1925px + 1.6459*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box>.sep{font-size:calc(18.8384px + 0.3262*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box>.sep{font-size:19.1646px}}@media (max-width:768px){.search-box>.prefix,.search-box>.sep{display:none}.search-box>input{padding-left:16px}}.search-box:before{content:"";display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23111' d='M337.51 305.372h-17.502l-6.57-5.486c20.79-25.232 33.92-57.054 33.92-93.257C347.36 127.63 283.897 64 205.136 64 127.452 64 64 127.632 64 206.63s63.452 142.627 142.225 142.627c35.01 0 67.83-13.167 92.99-34.008l6.562 5.486v17.55L415.18 448 448 415.086 337.51 305.372zm-131.285 0c-54.702 0-98.463-43.887-98.463-98.743 0-54.86 43.76-98.743 98.463-98.743 54.7 0 98.462 43.884 98.462 98.742 0 54.855-43.762 98.742-98.462 98.742z'/%3E%3C/svg%3E") 50%/32px 32px no-repeat;height:32px;width:32px;background-position:50%;flex:0 0 64px;width:64px;order:2}.search-box.-small{height:48px}.search-box.-small>input{height:48px;padding:8px 8px 8px 0}.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:14.95px}@media (min-width:480px) and (max-width:768px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:16.38px}}.search-box.-small:before{flex:0 0 48px;width:48px;line-height:48px;background-size:24px 24px;background-position:50%}.site-header{margin:32px 0}.site-header>p{margin:0;padding:0;text-align:center;color:#678}.site-header>p>a{text-decoration:none}.site-header>h1{font-size:39.767297213px;line-height:1.2;padding:0;color:#111;font-weight:200;text-align:center;margin:0 0 16px}@media (min-width:480px) and (max-width:768px){.site-header>h1{font-size:calc(39.7673px + 6.13051*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.site-header>h1{font-size:calc(45.89781px + 3.26254*(100vw - 768px)/512)}}@media (min-width:1280px){.site-header>h1{font-size:49.1603458612px}}.site-header>.action,.site-header>.search{margin-top:32px}.site-header>.adbox{margin:16px auto}@media (max-width:480px){.site-header>.adbox{margin-left:-16px;margin-right:-16px}}.top-sheet.top-sheet{padding:4px;text-decoration:none}.top-sheet.top-sheet>.info{display:block;background:#745fb5;color:#fff;text-align:left;padding:16px;width:auto;border-radius:3px;box-shadow:0 1px 1px rgba(102,119,136,.55);text-shadow:0 1px 1px rgba(51,68,85,.3);white-space:nowrap}.top-sheet.top-sheet:focus>.info,.top-sheet.top-sheet:hover>.info{box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3)}.top-sheet.top-sheet:nth-of-type(3n+1)>.info{background:linear-gradient(15deg,#745fb5,#9a6dbb)}.top-sheet.top-sheet:nth-of-type(3n+1):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+1):hover>.info{background:#5f4aa1}.top-sheet.top-sheet:nth-of-type(3n+2)>.info{background:linear-gradient(15deg,#678,#6f8793)}.top-sheet.top-sheet:nth-of-type(3n+2):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+2):hover>.info{background:#556371}.top-sheet.top-sheet:nth-of-type(3n+3)>.info{background:linear-gradient(15deg,#14af83,#15b89a)}.top-sheet.top-sheet:nth-of-type(3n+3):focus>.info,.top-sheet.top-sheet:nth-of-type(3n+3):hover>.info{background:#108b68}.top-sheet.top-sheet>.info>.title{display:none}.MarkdownBody.MarkdownBody a+em{opacity:.5}.MarkdownBody code{color:#678;font-size:.96em}.MarkdownBody code,.MarkdownBody pre{font-family:cousine,SFMono-Regular,Consolas,Menlo,Liberation Mono,Ubuntu Mono,Courier,monospace}.MarkdownBody pre.-box-chars{line-height:1.32}.MarkdownBody pre.-figlet{line-height:1;font-size:11px}.MarkdownBody pre{box-shadow:none;border-left:0;overflow:hidden;overflow-x:auto;background:#fff;font-size:.96em;line-height:1.5}.MarkdownBody pre.-wrap{white-space:pre-wrap}.MarkdownBody pre>code{color:#111;max-height:auto;padding:0;background:transparent;overflow:visible;font-size:1em}.MarkdownBody .line-highlight{transform:translate3d(0,2px,0);background:linear-gradient(90deg,rgba(20,175,131,.05) 25%,transparent)}.MarkdownBody .line-highlight[data-end]{margin-top:0}.MarkdownBody .line-highlight:after,.MarkdownBody .line-highlight:before{display:none}.MarkdownBody p.-crosslink,.MarkdownBody p.-setup,.MarkdownBody pre.-setup,.MarkdownBody ul.-setup{background:#f8f9fa}.token.keyword,.token.tag{color:#26648e}.token.tag{color:#1d406e}.token.attr-value,.token.boolean,.token.number,.token.regex,.token.string,.token.value{color:#14af83}.token.attr-name,.token.function{color:#2e90ae}.token.comment,.token.operator,.token.punctuation{color:#aaa}.MarkdownBody h2{padding:0;position:relative;font-size:30.0697899531px;line-height:1.2;font-weight:200;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0 0 24px}@media (max-width:768px){.MarkdownBody h2{margin-bottom:8px;margin-top:32px}}@media (max-width:480px){.MarkdownBody h2{margin-bottom:8px;margin-top:32px}}@media (min-width:480px) and (max-width:768px){.MarkdownBody h2{font-size:calc(30.06979px + 4.03976*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody h2{font-size:calc(34.10955px + 1.80275*(100vw - 768px)/512)}}@media (min-width:1280px){.MarkdownBody h2{font-size:35.9122988248px}}.MarkdownBody h2:target{color:#745fb5}.MarkdownBody h3{padding:0;margin:0 0 16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:17.1925px;font-weight:400;color:#745fb5}@media (min-width:480px) and (max-width:768px){.MarkdownBody h3{font-size:calc(17.1925px + 1.6459*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody h3{font-size:calc(18.8384px + 0.3262*(100vw - 768px)/512)}}@media (min-width:1280px){.MarkdownBody h3{font-size:19.1646px}}.MarkdownBody a,.MarkdownBody a:visited{color:#26648e;text-decoration:none}.MarkdownBody a:hover{text-decoration:underline}.MarkdownBody em{font-style:normal;color:#678}.MarkdownBody iframe{border:0;margin:0;width:100%}.local-anchor{margin-left:-.9em;margin-right:.1em;padding:0 .1em}.MarkdownBody .local-anchor,.MarkdownBody .local-anchor:visited{color:#678;text-decoration:inherit;opacity:.5}.MarkdownBody .local-anchor:target,.MarkdownBody :target>.local-anchor{color:#745fb5;opacity:1}.MarkdownBody .local-anchor:focus,.MarkdownBody .local-anchor:hover{color:#fff;background:#745fb5;opacity:1;text-decoration:inherit}.MarkdownBody.MarkdownBody img{max-width:100%}.MarkdownBody.MarkdownBody p.-crosslink>a{display:block;text-decoration:none;color:#745fb5;border-bottom:0;box-shadow:none;margin:-16px;padding:16px}.MarkdownBody.MarkdownBody p.-crosslink>a:visited{color:#745fb5}.MarkdownBody.MarkdownBody p.-crosslink>a:before{content:"";display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23FFF' d='M85 277.375h259.704L225.002 397.077 256 427l171-171L256 85l-29.922 29.924 118.626 119.7H85v42.75z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat;height:16px;width:16px;margin-right:16px;width:32px;height:32px;line-height:32px;border-radius:50%}.MarkdownBody.MarkdownBody p.-crosslink>a:before,.MarkdownBody.MarkdownBody p.-crosslink>a:visited:before{background-color:#745fb5;color:#fff}.MarkdownBody.MarkdownBody p.-crosslink>a:focus,.MarkdownBody.MarkdownBody p.-crosslink>a:hover{color:#673d85}.MarkdownBody.MarkdownBody p.-crosslink>a:focus:before,.MarkdownBody.MarkdownBody p.-crosslink>a:hover:before{background-color:#673d85}.MarkdownBody table{width:100%}.MarkdownBody table tr+tr{border-top:1px solid rgba(102,119,136,.05)}.MarkdownBody table tbody+tbody{border-top:1px solid rgba(102,119,136,.2)}.MarkdownBody table td,.MarkdownBody table th{padding:8px 16px;vertical-align:top;text-align:left}.MarkdownBody table tr td:last-child,.MarkdownBody table tr th:last-child{text-align:right}.MarkdownBody table td:first-child{white-space:nowrap}.MarkdownBody table td>code{font-size:.96em}.MarkdownBody table td:first-child>code{color:#35a}.MarkdownBody table a,.MarkdownBody table a:visited{color:#35a;text-decoration:none}.MarkdownBody table td:first-child>code~em{font-size:11.3043478261px;font-style:normal;color:#678}@media (min-width:480px) and (max-width:768px){.MarkdownBody table td:first-child>code~em{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody table td:first-child>code~em{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.MarkdownBody table td:first-child>code~em{font-size:11.9658119658px}}.MarkdownBody table thead{display:none}.MarkdownBody table thead th{font-weight:400;color:#745fb5}.MarkdownBody table.-shortcuts-right td:last-child>code,.MarkdownBody table.-shortcuts td:first-child>code{font-size:1rem;padding:5px 6px 5px 8px;background:#f8f9fa;border-radius:3px;margin-right:2px;letter-spacing:.1em;color:#345}.MarkdownBody table.-left-align tr td,.MarkdownBody table.-left-align tr td:last-child,.MarkdownBody table.-left-align tr th{text-align:left}.MarkdownBody table.-headers thead{display:table-header-group;border-bottom:1px solid rgba(102,119,136,.2)}.MarkdownBody table.-key-values tbody tr td+td code{display:block}.MarkdownBody table.-css-breakdown tr td,.MarkdownBody table.-css-breakdown tr td:last-child,.MarkdownBody table.-css-breakdown tr th{text-align:left}.MarkdownBody table.-css-breakdown tr td{font-size:14.95px;white-space:nowrap}@media (min-width:480px) and (max-width:768px){.MarkdownBody table.-css-breakdown tr td{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody table.-css-breakdown tr td{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){.MarkdownBody table.-css-breakdown tr td{font-size:16.38px}}.MarkdownBody table.-css-breakdown tr td:not(:last-child){padding-right:4px}.MarkdownBody table.-css-breakdown tr td:not(:first-child){padding-left:4px}.MarkdownBody table.-css-breakdown tr:last-child{background:#f8f9fa}.MarkdownBody table.-css-breakdown tr:last-child td{font-size:11.3043478261px;color:#678;white-space:auto}@media (min-width:480px) and (max-width:768px){.MarkdownBody table.-css-breakdown tr:last-child td{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody table.-css-breakdown tr:last-child td{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.MarkdownBody table.-css-breakdown tr:last-child td{font-size:11.9658119658px}}.MarkdownBody table.-bold-first tr>td:first-child{font-weight:700}.MarkdownBody table.-no-wrap td,.MarkdownBody table.-no-wrap th{white-space:nowrap}.MarkdownBody table.-mute-em td em,.MarkdownBody table.-mute-em th em{opacity:.5}.MarkdownBody table.-mute-em td em>code,.MarkdownBody table.-mute-em th em>code{margin-right:.5em}.MarkdownBody ul.-six-column{display:flex;flex-wrap:wrap}.MarkdownBody ul.-six-column>li{flex:0 0 16.6666666667%}@media (max-width:480px){.MarkdownBody ul.-six-column>li{flex:0 0 50%}}@media (max-width:768px){.MarkdownBody ul.-six-column>li{flex:0 0 25%}}.MarkdownBody ul.-four-column{display:flex;flex-wrap:wrap}.MarkdownBody ul.-four-column>li{flex:0 0 25%}@media (max-width:480px){.MarkdownBody ul.-four-column>li{flex:0 0 50%}}@media (max-width:768px){.MarkdownBody ul.-four-column>li{flex:0 0 33.3333333333%}}.back-button{text-decoration:none;width:48px;height:48px;line-height:46px;text-align:center;display:inline-block;border-radius:50%;transition:all .1s linear}@media (max-width:480px){.back-button{width:32px;height:32px;line-height:30px}}.back-button,.back-button:visited{color:#678}.back-button:focus,.back-button:hover{color:#fff;background:#745fb5;opacity:1}.back-button:before{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M427 234.625H167.296l119.702-119.702L256 85 85 256l171 171 29.922-29.924-118.626-119.7H427v-42.75z'/%3E%3C/svg%3E") 50%/24px 24px no-repeat;height:24px;width:24px;vertical-align:middle}.back-button:focus:before,.back-button:hover:before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23FFF' d='M427 234.625H167.296l119.702-119.702L256 85 85 256l171 171 29.922-29.924-118.626-119.7H427v-42.75z'/%3E%3C/svg%3E") 50%/24px 24px no-repeat;height:24px;width:24px}@media (max-width:480px){.back-button:before{font-size:16px}}.body-area{max-width:1232px;margin:0 auto;padding:16px}@media (max-width:480px){.body-area{padding:16px}}.body-area.-slim{max-width:740px}.codefund-sponsor{min-height:114px}.codefund-sponsor .cf-wrapper{margin-left:auto;margin-right:auto}.h3-section>.body>pre{margin:0;padding:16px}@media (max-width:768px){.h3-section>.body{overflow-x:auto}}.h3-section>.body{background:#fff;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3)}@media (max-width:480px){.h3-section>.body{margin:0 -16px;box-shadow:0 1px 1px rgba(102,119,136,.55)}}@media (min-width:481px){.h3-section>.body{border-radius:2px}.h3-section>.body>:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.h3-section>.body>:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.h3-section>h3{margin-top:8px;margin-bottom:16px;white-space:nowrap;overflow:hidden}@media (max-width:768px){.h3-section>h3{margin-top:0}}.h3-section>h3:after{margin-left:24px;content:"";display:inline-block;vertical-align:middle;width:100%;height:1px;background:linear-gradient(90deg,rgba(116,95,181,.2),transparent 80%)}.h3-section>.body>ul{margin:0;padding:0;list-style-type:none}.h3-section>.body>ul>li{padding:8px 8px 8px 36px;position:relative}.h3-section>.body>ul>li>p{margin:0;padding:0}.h3-section>.body>ul>li:before{content:"";position:absolute;display:inline-block;width:4px;height:4px;background:#678;border-radius:50%;left:16px;top:18px}.h3-section>.body>ul>li+li{border-top:1px solid rgba(102,119,136,.05)}.h3-section>.body>p{padding:16px;margin:0}.h3-section>.body>h4{font-size:11.3043478261px;margin:0;padding:4px 16px;font-weight:400;background:#f8f9fa;color:#678}@media (min-width:480px) and (max-width:768px){.h3-section>.body>h4{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.h3-section>.body>h4{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.h3-section>.body>h4{font-size:11.9658119658px}}.h3-section>.body>h4+*{border-top:1px solid rgba(102,119,136,.05)}.h3-section>.body>iframe~p,.h3-section>.body>pre~p,.h3-section>.body>table~p,.h3-section>.body>ul~p{background:#f8f9fa;color:#678}.h3-section>.body>iframe~p a,.h3-section>.body>iframe~p a:visited,.h3-section>.body>pre~p a,.h3-section>.body>pre~p a:visited,.h3-section>.body>table~p a,.h3-section>.body>table~p a:visited,.h3-section>.body>ul~p a,.h3-section>.body>ul~p a:visited{color:#345;text-decoration:none;border-bottom:1px solid rgba(102,119,136,.05)}.h3-section>.body>iframe~p a:hover,.h3-section>.body>pre~p a:hover,.h3-section>.body>table~p a:hover,.h3-section>.body>ul~p a:hover{color:#26648e}.h3-section>.body>:not(:first-child){border-top:1px solid rgba(102,119,136,.05)}.h3-section>.body>p+p,.h3-section>.body>p+p:not(:first-child){margin-top:-1.5em;border-top:0}@media (min-width:481px){.h3-section.-prime>.body{border-radius:2px;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3),0 8px 12px rgba(58,193,203,.1)}}ul.-also-see.-also-see.-also-see{display:flex;flex-wrap:wrap;background:#f8f9fa}ul.-also-see.-also-see.-also-see>li{flex:1 0 20%;padding:24px;border-top:1px solid rgba(102,119,136,.2)}ul.-also-see.-also-see.-also-see>li+li{border-left:1px solid rgba(102,119,136,.2)}ul.-also-see.-also-see.-also-see,ul.-also-see.-also-see.-also-see>li{list-style-type:none}ul.-also-see.-also-see.-also-see>li:before{display:none}ul.-also-see.-also-see.-also-see>li>a{font-size:14.95px;display:block}@media (min-width:480px) and (max-width:768px){ul.-also-see.-also-see.-also-see>li>a{font-size:calc(14.95px + 1.29*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){ul.-also-see.-also-see.-also-see>li>a{font-size:calc(16.24px + 0.14*(100vw - 768px)/512)}}@media (min-width:1280px){ul.-also-see.-also-see.-also-see>li>a{font-size:16.38px}}ul.-also-see.-also-see.-also-see>li>em{font-size:11.3043478261px;display:block}@media (min-width:480px) and (max-width:768px){ul.-also-see.-also-see.-also-see>li>em{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){ul.-also-see.-also-see.-also-see>li>em{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){ul.-also-see.-also-see.-also-see>li>em{font-size:11.9658119658px}}.h3-section-list{margin:0 -16px}@media (max-width:1264px){.h3-section-list{margin-left:-8px;margin-right:-8px}}.h3-section-list:after{content:"";display:table;clear:both;zoom:1}.h3-section-list>.h3-section{padding:16px;float:left;width:100%}@media (max-width:1264px){.h3-section-list>.h3-section{padding:8px}}@media (min-width:769px){.h3-section-list>.h3-section{padding-top:0}}@media (min-width:769px){.h3-section-list.-two-column>.h3-section,.h3-section-list>.h3-section{width:50%}}.h3-section-list.-one-column>.h3-section{width:100%}.h3-section-list.-one-column>.h3-section+.h3-section{margin-top:16px}@media (min-width:769px){.h3-section-list.-three-column>.h3-section{width:50%}}@media (min-width:961px){.h3-section-list.-three-column>.h3-section{width:33.33%}}@media (min-width:769px){.h3-section-list.-left-reference>.h3-section{width:50%}}@media (min-width:961px){.h3-section-list.-left-reference>.h3-section{width:66.67%}.h3-section-list.-left-reference>.h3-section:first-child{width:33.33%}}.main-heading{padding:0;margin:64px 0 24px;position:relative}@media (max-width:768px){.main-heading{margin-bottom:8px;margin-top:32px}}@media (max-width:480px){.main-heading{margin-bottom:8px;margin-top:32px}}.main-heading{margin-top:0;margin-bottom:0}.main-heading>h1{font-size:39.767297213px;line-height:1.2;font-weight:200;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}@media (min-width:480px) and (max-width:768px){.main-heading>h1{font-size:calc(39.7673px + 6.13051*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.main-heading>h1{font-size:calc(45.89781px + 3.26254*(100vw - 768px)/512)}}@media (min-width:1280px){.main-heading>h1{font-size:49.1603458612px}}.main-heading>h1>em{font-style:normal;color:#9eaab6}.main-heading.-center>h1{text-align:center}.main-heading.-center>.adbox{margin-top:16px;text-align:center}.main-heading.-center>.adbox>.ad{display:inline-block}.main-heading.-center>.adbox>.ad.-carbon,.PreviewMode .main-heading{margin-top:16px}.page-actions{margin:0;padding:0;height:32px}.page-actions>.link.link>a{display:inline-block;height:32px;line-height:32px;vertical-align:top;width:auto}.page-actions>li{margin:0;padding:0;list-style-type:none}.page-actions>li>a,.page-actions>li>a:visited{color:#678;text-decoration:none}.page-actions>li>a:focus,.page-actions>li>a:focus>.text,.page-actions>li>a:hover,.page-actions>li>a:hover>.text{color:#745fb5}.page-actions>li>a>.text{font-size:11.3043478261px;display:none}@media (min-width:480px) and (max-width:768px){.page-actions>li>a>.text{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.page-actions>li>a>.text{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.page-actions>li>a>.text{font-size:11.9658119658px}}.page-actions>li>a>.text.-visible{display:inline}.page-actions+.page-actions{margin-left:8px}.page-actions>.facebook>a:before,.page-actions>.github>a:before,.page-actions>.twitter>a:before{content:"";vertical-align:middle}.page-actions>.facebook>a:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='%23345' d='M426.8 64H85.2C73.5 64 64 73.5 64 85.2v341.6c0 11.7 9.5 21.2 21.2 21.2H256V296h-45.9v-56H256v-41.4c0-49.6 34.4-76.6 78.7-76.6 21.2 0 44 1.6 49.3 2.3v51.8h-35.3c-24.1 0-28.7 11.4-28.7 28.2V240h57.4l-7.5 56H320v152h106.8c11.7 0 21.2-9.5 21.2-21.2V85.2c0-11.7-9.5-21.2-21.2-21.2z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat}.page-actions>.facebook>a:before,.page-actions>.twitter>a:before{display:inline-block;vertical-align:middle;height:16px;width:16px}.page-actions>.twitter>a:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M492 109.5c-17.4 7.7-36 12.9-55.6 15.3 20-12 35.4-31 42.6-53.6-18.7 11.1-39.4 19.2-61.5 23.5C399.8 75.8 374.6 64 346.8 64c-53.5 0-96.8 43.4-96.8 96.9 0 7.6.8 15 2.5 22.1-80.5-4-151.9-42.6-199.6-101.3-8.3 14.3-13.1 31-13.1 48.7 0 33.6 17.2 63.3 43.2 80.7-16-.4-31-4.8-44-12.1v1.2c0 47 33.4 86.1 77.7 95-8.1 2.2-16.7 3.4-25.5 3.4-6.2 0-12.3-.6-18.2-1.8 12.3 38.5 48.1 66.5 90.5 67.3-33.1 26-74.9 41.5-120.3 41.5-7.8 0-15.5-.5-23.1-1.4C62.8 432 113.7 448 168.3 448 346.6 448 444 300.3 444 172.2c0-4.2-.1-8.4-.3-12.5C462.6 146 479 129 492 109.5z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat}.page-actions>.github>a:before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23345' d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9 1.4.3 2.6.4 3.8.4 8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1-8.4 1.9-15.9 2.7-22.6 2.7-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1 10.5 0 20-3.4 25.6-6 2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8 0 0 1.6-.5 5-.5 8.1 0 26.4 3.1 56.6 24.1 17.9-5.1 37-7.6 56.1-7.7 19 .1 38.2 2.6 56.1 7.7 30.2-21 48.5-24.1 56.6-24.1 3.4 0 5 .5 5 .5 12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5 1.2 0 2.6-.1 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z'/%3E%3C/svg%3E") 50%/16px 16px no-repeat;height:16px;width:16px}.page-actions>.github>a:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='%23FFF' d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9 1.4.3 2.6.4 3.8.4 8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1-8.4 1.9-15.9 2.7-22.6 2.7-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1 10.5 0 20-3.4 25.6-6 2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8 0 0 1.6-.5 5-.5 8.1 0 26.4 3.1 56.6 24.1 17.9-5.1 37-7.6 56.1-7.7 19 .1 38.2 2.6 56.1 7.7 30.2-21 48.5-24.1 56.6-24.1 3.4 0 5 .5 5 .5 12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5 1.2 0 2.6-.1 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z'/%3E%3C/svg%3E")}.page-actions>.facebook>a:before,.page-actions>.twitter>a:before{width:32px;height:32px}.page-actions>.github>a:before{position:relative;top:-2px}.page-actions>.link.-button>a{box-shadow:inset 0 0 0 1px rgba(102,119,136,.2);border-radius:2px;padding:0 16px;margin:0 8px;transition:all .1s linear}.page-actions>.link.-button>a>.text{margin-left:4px;position:relative;top:-1px}.page-actions>.link.-button>a:focus,.page-actions>.link.-button>a:hover{background:linear-gradient(5deg,#745fb5,#9066b8);box-shadow:0 1px 1px rgba(102,119,136,.55)}.page-actions>.link.-button>a:focus,.page-actions>.link.-button>a:focus>.text,.page-actions>.link.-button>a:hover,.page-actions>.link.-button>a:hover>.text{color:#fff}@media (max-width:768px){.page-actions>.link{margin-left:16px}}.page-actions>.link:first-child>a{margin-left:0}.page-actions>.link:last-child>a{margin-right:0}.top-nav,.top-nav>.container{height:64px;line-height:64px;text-align:center;position:relative}@media (max-width:480px){.top-nav>.container{height:32px;line-height:32px;margin-top:8px}.top-nav{height:48px;padding:8px 0;border-bottom:1px solid rgba(102,119,136,.2);margin-bottom:8px}}.top-nav>.container{padding-left:16px;padding-right:16px;max-width:1232px;margin:0 auto}@media (max-width:480px){.top-nav>.container{padding-left:16px;padding-right:16px}}.top-nav>.container{display:flex;align-items:center;position:relative}.top-nav>.container>.left{flex:0 0 auto;line-height:32px}.top-nav>.container>.brand{flex:1 1 auto}.top-nav>.container>.actions{flex:0 0 auto;display:flex}.top-nav>.container>.brand{font-size:11.3043478261px;display:inline-block;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-decoration:none}@media (min-width:480px) and (max-width:768px){.top-nav>.container>.brand{font-size:calc(11.30435px + 0.76462*(100vw - 480px)/288)}}@media (min-width:768px) and (max-width:1280px){.top-nav>.container>.brand{font-size:calc(12.06897px + -0.10315*(100vw - 768px)/512)}}@media (min-width:1280px){.top-nav>.container>.brand{font-size:11.9658119658px}}.top-nav>.container>.brand,.top-nav>.container>.brand:visited{color:#345}.top-nav>.container>.brand:hover{color:#745fb5}@media (max-width:480px){.top-nav>.container>.brand{display:none}.top-nav>.container>.actions{margin-left:auto}}@media (min-width:481px){.top-nav>.container>.actions{position:absolute;right:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.actions{right:16px}}@media (min-width:481px){.top-nav>.container>.left{position:absolute;left:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.left{left:16px}}@media (min-width:1232px){.top-nav>.container>.left>.home{position:relative;left:-16px}} \ No newline at end of file diff --git a/_includes/2017/critical/critical.js b/_includes/2017/critical/critical.js index 9a95fcaa0..3d02adbea 100644 --- a/_includes/2017/critical/critical.js +++ b/_includes/2017/critical/critical.js @@ -1 +1,15 @@ -!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=2)}([function(e,n){function t(e,n){var t=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;if(t)return t.call(e,n);if(e.parentNode){for(var r=e.parentNode.querySelectorAll(n),o=r.length;o--;0)if(r[o]===e)return!0;return!1}}e.exports=t},function(e,n,t){function r(e,n){if(n){if(Array.isArray(n))return void o(n,function(n){r(e,n)});if(e.classList){var t=n.split(" ").filter(Boolean);o(t,function(n){e.classList.add(n)})}else e.className+=" "+n}}var o=t(4);e.exports=r},function(e,n,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){d||((0,c.default)(document.documentElement,"LoadDone"),d=!0)}var i=t(3),u=r(i),a=t(1),c=r(a),f=t(6),l=r(f),s=document.querySelector("[data-js-main-body]");s&&((0,u.default)(s),(0,c.default)(s,"-wrapified")),(0,l.default)(window,"load",o),setTimeout(o,5e3);var d=void 0},function(e,n,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);nt.length)&&(e=t.length);for(var r=0,n=new Array(e);rr.length)&&(t=r.length);for(var n=0,e=new Array(t);nspan{display:inline-block;width:8px;height:8px;background:#77dab2;border-radius:50%}.announcements-item{position:relative;padding:16px;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3),0 8px 12px rgba(58,193,203,.1);border-radius:1px;background:#fff;padding-right:48px;animation:announcements-item-flyin .5s ease-out}.announcements-item.-hide{display:none}.announcements-item>.title{font-size:15px;font-weight:400;color:#745fb5;margin:0;padding:0}@media (min-width:480px) and (max-width:768px){.announcements-item>.title{font-size:calc(15px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.announcements-item>.title{font-size:calc(16px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.announcements-item>.title{font-size:16px}}.announcements-item>.body>p{margin:0;padding:0}.announcements-item>.body>p+p{margin-top:1em}.announcements-item>.close{position:absolute;right:0;top:0;width:40px;height:40px;line-height:40px;text-align:center;border:0;margin:0;padding:0}.announcements-item>.close::before{content:"\00D7";font-size:14px}@keyframes announcements-item-flyin{0%{transform:translate3d(0,32px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}.announcements-list{position:fixed;left:0;bottom:0;max-width:420px;padding:0;z-index:10}@media (min-width:481px){.announcements-list{padding:16px}}@media (min-width:769px){.announcements-list{padding:32px}}.back-button{text-decoration:none;width:48px;height:48px;line-height:46px;text-align:center;display:inline-block;border-radius:50%}@media (max-width:480px){.back-button{width:32px;height:32px;line-height:30px}}.back-button,.back-button:visited{color:#678}.back-button::before{content:'';display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M427%20234.625H167.296l119.702-119.702L256%2085%2085%20256l171%20171%2029.922-29.924-118.626-119.7H427v-42.75z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat;height:24px;width:24px;vertical-align:middle}@media (max-width:480px){.back-button::before{font-size:16px}}.body-area{max-width:1232px;margin:0 auto;padding:16px}@media (max-width:480px){.body-area{padding:16px}}.body-area.-slim{max-width:740px}.codefund-sponsor{min-height:114px}.page-actions{margin:0;padding:0}.page-actions{height:32px}.page-actions>.link.link>a{display:inline-block;height:32px;line-height:32px;vertical-align:top;width:auto}.page-actions>li{margin:0;padding:0;list-style-type:none}.page-actions>li>a,.page-actions>li>a:visited{color:#678;text-decoration:none}.page-actions>li>a>.text{font-size:11px;display:none}@media (min-width:480px) and (max-width:768px){.page-actions>li>a>.text{font-size:calc(11px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.page-actions>li>a>.text{font-size:calc(12px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.page-actions>li>a>.text{font-size:12px}}.page-actions>.facebook>a::before,.page-actions>.twitter>a::before{content:'';vertical-align:middle}.page-actions>.facebook>a::before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M426.8%2064H85.2C73.5%2064%2064%2073.5%2064%2085.2v341.6c0%2011.7%209.5%2021.2%2021.2%2021.2H256V296h-45.9v-56H256v-41.4c0-49.6%2034.4-76.6%2078.7-76.6%2021.2%200%2044%201.6%2049.3%202.3v51.8h-35.3c-24.1%200-28.7%2011.4-28.7%2028.2V240h57.4l-7.5%2056H320v152h106.8c11.7%200%2021.2-9.5%2021.2-21.2V85.2c0-11.7-9.5-21.2-21.2-21.2z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat;height:16px;width:16px}.page-actions>.twitter>a::before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M492%20109.5c-17.4%207.7-36%2012.9-55.6%2015.3%2020-12%2035.4-31%2042.6-53.6-18.7%2011.1-39.4%2019.2-61.5%2023.5C399.8%2075.8%20374.6%2064%20346.8%2064c-53.5%200-96.8%2043.4-96.8%2096.9%200%207.6.8%2015%202.5%2022.1-80.5-4-151.9-42.6-199.6-101.3-8.3%2014.3-13.1%2031-13.1%2048.7%200%2033.6%2017.2%2063.3%2043.2%2080.7-16-.4-31-4.8-44-12.1v1.2c0%2047%2033.4%2086.1%2077.7%2095-8.1%202.2-16.7%203.4-25.5%203.4-6.2%200-12.3-.6-18.2-1.8%2012.3%2038.5%2048.1%2066.5%2090.5%2067.3-33.1%2026-74.9%2041.5-120.3%2041.5-7.8%200-15.5-.5-23.1-1.4C62.8%20432%20113.7%20448%20168.3%20448%20346.6%20448%20444%20300.3%20444%20172.2c0-4.2-.1-8.4-.3-12.5C462.6%20146%20479%20129%20492%20109.5z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat;height:16px;width:16px}.page-actions>.facebook>a::before,.page-actions>.twitter>a::before{width:32px;height:32px}@media (max-width:768px){.page-actions>.link{margin-left:16px}}.page-actions>.link:first-child>a{margin-left:0}.page-actions>.link:last-child>a{margin-right:0}.pages-list{display:flex;flex-wrap:wrap}.pages-list>.item{flex:0 0 100%}@media (min-width:581px){.pages-list>.item.top-sheet{flex:0 0 25%}}.search-box{background:#fff;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3);display:flex;height:64px;align-items:center}.search-box>input{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;font-size:17px;padding:16px;height:64px;background:0 0;border:0;flex:1 1 auto;padding-left:0;font-weight:700;color:#111;min-width:48px}@media (min-width:480px) and (max-width:768px){.search-box>input{font-size:calc(17px + 2 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.search-box>input{font-size:calc(19px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.search-box>input{font-size:19px}}.search-box>input::placeholder{font-weight:400;color:#678}.search-box>input:focus{outline:0}.search-box>.prefix{font-size:13px;display:block;color:rgba(102,119,136,.5);font-weight:400;line-height:1.5em;padding:2px 8px;border-radius:3px;background:rgba(241,243,245,.5);margin:0 0 0 16px;box-shadow:0 1px 1px rgba(102,119,136,.25)}@media (min-width:480px) and (max-width:768px){.search-box>.prefix{font-size:calc(13px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.search-box>.prefix{font-size:calc(14px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.search-box>.prefix{font-size:14px}}.search-box>.sep{color:rgba(102,119,136,.5);font-size:17px;margin:0 8px}@media (min-width:480px) and (max-width:768px){.search-box>.sep{font-size:calc(17px + 2 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.search-box>.sep{font-size:calc(19px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.search-box>.sep{font-size:19px}}@media (max-width:768px){.search-box>.prefix,.search-box>.sep{display:none}.search-box>input{padding-left:16px}}.search-box::before{content:'';display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(17%2C17%2C17)%22%20d%3D%22M337.51%20305.372h-17.502l-6.57-5.486c20.79-25.232%2033.92-57.054%2033.92-93.257C347.36%20127.63%20283.897%2064%20205.136%2064%20127.452%2064%2064%20127.632%2064%20206.63s63.452%20142.627%20142.225%20142.627c35.01%200%2067.83-13.167%2092.99-34.008l6.562%205.486v17.55L415.18%20448%20448%20415.086%20337.51%20305.372zm-131.285%200c-54.702%200-98.463-43.887-98.463-98.743%200-54.86%2043.76-98.743%2098.463-98.743%2054.7%200%2098.462%2043.884%2098.462%2098.742%200%2054.855-43.762%2098.742-98.462%2098.742z%22%2F%3E%3C%2Fsvg%3E") center center/32px 32px no-repeat;height:32px;width:32px;background-position:center center;flex:0 0 64px;width:64px;order:2}.search-box.-small{height:48px}.search-box.-small>input{padding:8px;height:48px;padding-left:0}.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:15px}@media (min-width:480px) and (max-width:768px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(15px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:calc(16px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.search-box.-small>.prefix,.search-box.-small>.sep,.search-box.-small>input{font-size:16px}}.search-box.-small::before{flex:0 0 48px;width:48px;line-height:48px;background-size:24px 24px;background-position:center center}.site-header{margin:32px 0}.site-header>p{margin:0;padding:0;text-align:center;color:#678}.site-header>p>a{text-decoration:none}.site-header>h1{font-size:40px;line-height:1.2;margin:0;padding:0;color:#111;font-weight:200;text-align:center;margin-bottom:16px}@media (min-width:480px) and (max-width:768px){.site-header>h1{font-size:calc(40px + 6 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.site-header>h1{font-size:calc(46px + 3 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.site-header>h1{font-size:49px}}.site-header>.search{margin-top:32px}.site-header>.adbox{margin:16px auto}@media (max-width:480px){.site-header>.adbox{margin-left:-16px;margin-right:-16px}}.top-nav,.top-nav>.container{height:64px;line-height:64px;text-align:center;position:relative}@media (max-width:480px){.top-nav>.container{height:32px;line-height:32px;margin-top:8px}.top-nav{height:48px;padding:8px 0;border-bottom:solid 1px rgba(102,119,136,.2);margin-bottom:8px}}.top-nav>.container{padding-left:16px;padding-right:16px;max-width:1232px;margin:0 auto}@media (max-width:480px){.top-nav>.container{padding-left:16px}}@media (max-width:480px){.top-nav>.container{padding-right:16px}}.top-nav>.container{display:flex;align-items:center;position:relative}.top-nav>.container>.left{flex:0 0 auto;line-height:32px}.top-nav>.container>.brand{flex:1 1 auto}.top-nav>.container>.actions{flex:0 0 auto;display:flex}.top-nav>.container>.brand{font-size:11px;display:inline-block;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-decoration:none}@media (min-width:480px) and (max-width:768px){.top-nav>.container>.brand{font-size:calc(11px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.top-nav>.container>.brand{font-size:calc(12px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.top-nav>.container>.brand{font-size:12px}}.top-nav>.container>.brand,.top-nav>.container>.brand:visited{color:#345}@media (max-width:480px){.top-nav>.container>.brand{display:none}.top-nav>.container>.actions{margin-left:auto}}@media (min-width:481px){.top-nav>.container>.actions{position:absolute;right:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.actions{right:16px}}@media (min-width:481px){.top-nav>.container>.left{position:absolute;left:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.left{left:16px}}@media (min-width:1232px){.top-nav>.container>.left>.home{position:relative;left:-16px}}.top-sheet.top-sheet{padding:4px;text-decoration:none}.top-sheet.top-sheet>.info{display:block;background:#745fb5;color:#fff;text-align:left;padding:16px;width:auto;border-radius:3px;box-shadow:0 1px 1px rgba(102,119,136,.55);text-shadow:0 1px 1px rgba(51,68,85,.3);white-space:nowrap}.top-sheet.top-sheet:nth-of-type(3n+1)>.info{background:linear-gradient(15deg,#745fb5,#9a6dbb)}.top-sheet.top-sheet:nth-of-type(3n+2)>.info{background:linear-gradient(15deg,#678,#6f8793)}.top-sheet.top-sheet:nth-of-type(3n+3)>.info{background:linear-gradient(15deg,#14af83,#15b89a)}.top-sheet.top-sheet>.info>.title{display:none} \ No newline at end of file diff --git a/_includes/2017/critical/sheet.css b/_includes/2017/critical/sheet.css deleted file mode 100644 index 74b1d18a6..000000000 --- a/_includes/2017/critical/sheet.css +++ /dev/null @@ -1 +0,0 @@ -*,::after,::before{background-repeat:no-repeat;box-sizing:inherit}::after,::before{text-decoration:inherit;vertical-align:inherit}html{box-sizing:border-box;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}aside,header,nav{display:block}body{margin:0}h1{font-size:2em;margin:.67em 0}main{display:block}nav ul{list-style:none}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}code{font-family:monospace,monospace;font-size:1em}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}a{-ms-touch-action:manipulation;touch-action:manipulation}body,html{background:#f1f3f5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;font-size:14px;line-height:1.6;color:#345;overflow-x:hidden}body{font-size:13px;padding:0;margin:0}@media (min-width:480px) and (max-width:768px){body{font-size:calc(13px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){body{font-size:calc(14px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){body{font-size:14px}}code,pre{font-family:cousine,SFMono-Regular,Consolas,Menlo,"Liberation Mono","Ubuntu Mono",Courier,monospace;letter-spacing:-.03em}pre{font-size:.96em}:not(pre):not(code){-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#26648e}a:visited{color:#15234d}@media (max-width:580px){.hint--bottom::after,.hint--bottom::before{display:none}}html.WithJs .post-content{opacity:0}html.WithJs .intro-content,html.WithJs .pages-list,html.WithJs .post-content.-wrapified{opacity:.4}html.WithJs.LoadDone .intro-content,html.WithJs.LoadDone .pages-list,html.WithJs.LoadDone .post-content.-wrapified{opacity:1}.MarkdownBody code{color:#678;font-size:.96em}.MarkdownBody code,.MarkdownBody pre{font-family:cousine,SFMono-Regular,Consolas,Menlo,"Liberation Mono","Ubuntu Mono",Courier,monospace}.MarkdownBody pre{box-shadow:none;border-left:0;overflow:hidden;overflow-x:auto;background:#fff;font-size:.96em;line-height:1.5}.MarkdownBody pre>code{color:#111;max-height:auto;padding:0;background:0 0;overflow:visible;font-size:1em}.MarkdownBody pre.-setup{background:#f8f9fa}.MarkdownBody h2{margin:0;padding:0;margin-bottom:24px;margin-top:64px;position:relative;font-size:30px;line-height:1.2;font-weight:200;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;margin-top:0}@media (max-width:768px){.MarkdownBody h2{margin-bottom:8px;margin-top:32px}}@media (max-width:480px){.MarkdownBody h2{margin-bottom:8px;margin-top:32px}}@media (min-width:480px) and (max-width:768px){.MarkdownBody h2{font-size:calc(30px + 4 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody h2{font-size:calc(34px + 2 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.MarkdownBody h2{font-size:36px}}.MarkdownBody h3{margin:0;padding:0;margin-bottom:16px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;font-size:17px;font-weight:400;color:#745fb5}@media (min-width:480px) and (max-width:768px){.MarkdownBody h3{font-size:calc(17px + 2 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.MarkdownBody h3{font-size:calc(19px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.MarkdownBody h3{font-size:19px}}.MarkdownBody a,.MarkdownBody a:visited{color:#26648e;text-decoration:none}.MarkdownBody table th{padding:8px 16px;vertical-align:top;text-align:left}.MarkdownBody table tr th:last-child{text-align:right}.MarkdownBody table thead{display:none}.MarkdownBody table thead th{font-weight:400;color:#745fb5}.MarkdownBody ul.-six-column{display:flex;flex-wrap:wrap}.MarkdownBody ul.-six-column>li{flex:0 0 16.6666666667%}@media (max-width:480px){.MarkdownBody ul.-six-column>li{flex:0 0 50%}}@media (max-width:768px){.MarkdownBody ul.-six-column>li{flex:0 0 25%}}.MarkdownBody ul.-four-column{display:flex;flex-wrap:wrap}.MarkdownBody ul.-four-column>li{flex:0 0 25%}@media (max-width:480px){.MarkdownBody ul.-four-column>li{flex:0 0 50%}}@media (max-width:768px){.MarkdownBody ul.-four-column>li{flex:0 0 33.3333333333%}}.back-button{text-decoration:none;width:48px;height:48px;line-height:46px;text-align:center;display:inline-block;border-radius:50%}@media (max-width:480px){.back-button{width:32px;height:32px;line-height:30px}}.back-button,.back-button:visited{color:#678}.back-button::before{content:'';display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M427%20234.625H167.296l119.702-119.702L256%2085%2085%20256l171%20171%2029.922-29.924-118.626-119.7H427v-42.75z%22%2F%3E%3C%2Fsvg%3E") center center/24px 24px no-repeat;height:24px;width:24px;vertical-align:middle}@media (max-width:480px){.back-button::before{font-size:16px}}.body-area{max-width:1232px;margin:0 auto;padding:16px}@media (max-width:480px){.body-area{padding:16px}}.codefund-sponsor{min-height:114px}.comments-section{display:flex}@media (max-width:768px){.comments-section>.comments{flex:1 0 100%;width:100%}}@media (min-width:769px){.comments-section>.comments{flex:0 1 66%;min-width:300px}}.h2-section:first-child:not(.-no-hide)>h2{display:none}.h3-section>.body>pre{margin:0;padding:16px}@media (max-width:768px){.h3-section>.body{overflow-x:auto}}.h3-section>.body{background:#fff;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3)}@media (max-width:480px){.h3-section>.body{margin:0 -16px;box-shadow:0 1px 1px rgba(102,119,136,.55)}}@media (min-width:481px){.h3-section>.body{border-radius:2px}.h3-section>.body>:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.h3-section>.body>:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.h3-section>h3{margin-top:8px;margin-bottom:16px;white-space:nowrap;overflow:hidden}@media (max-width:768px){.h3-section>h3{margin-top:0}}.h3-section>h3::after{margin-left:24px;content:'';display:inline-block;vertical-align:middle;width:100%;height:1px;background:linear-gradient(to right,rgba(116,95,181,.2),transparent 80%)}.h3-section>.body>ul{margin:0;padding:0;list-style-type:none}.h3-section>.body>ul>li{padding:8px;padding-left:36px;position:relative}.h3-section>.body>ul>li>p{margin:0;padding:0}.h3-section>.body>ul>li::before{content:'';position:absolute;display:inline-block;width:4px;height:4px;background:#678;border-radius:50%;left:16px;top:18px}.h3-section>.body>ul>li+li{border-top:solid 1px rgba(102,119,136,.05)}.h3-section>.body>p{padding:16px;margin:0}.h3-section>.body>h4{font-size:11px;margin:0;padding:4px 16px;font-weight:400;background:#f8f9fa;color:#678}@media (min-width:480px) and (max-width:768px){.h3-section>.body>h4{font-size:calc(11px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.h3-section>.body>h4{font-size:calc(12px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.h3-section>.body>h4{font-size:12px}}.h3-section>.body>h4+*{border-top:solid 1px rgba(102,119,136,.05)}.h3-section>.body>iframe~p,.h3-section>.body>pre~p,.h3-section>.body>table~p,.h3-section>.body>ul~p{background:#f8f9fa;color:#678}.h3-section>.body>iframe~p a,.h3-section>.body>iframe~p a:visited,.h3-section>.body>pre~p a,.h3-section>.body>pre~p a:visited,.h3-section>.body>table~p a,.h3-section>.body>table~p a:visited,.h3-section>.body>ul~p a,.h3-section>.body>ul~p a:visited{color:#345;text-decoration:none;border-bottom:solid 1px rgba(102,119,136,.05)}.h3-section>.body>iframe~p a:hover,.h3-section>.body>pre~p a:hover,.h3-section>.body>table~p a:hover,.h3-section>.body>ul~p a:hover{color:#26648e}.h3-section>.body>:not(:first-child){border-top:solid 1px rgba(102,119,136,.05)}.h3-section>.body>p+p,.h3-section>.body>p+p:not(:first-child){margin-top:-1.5em;border-top:0}@media (min-width:481px){.h3-section.-prime>.body{border-radius:2px;box-shadow:0 6px 8px rgba(102,119,136,.03),0 1px 2px rgba(102,119,136,.3),0 8px 12px rgba(58,193,203,.1)}}.h3-section-list{margin-left:-16px;margin-right:-16px;margin-top:0;margin-bottom:0}@media (max-width:1264px){.h3-section-list{margin-left:-8px}}@media (max-width:1264px){.h3-section-list{margin-right:-8px}}.h3-section-list::after{content:'';display:table;clear:both;zoom:1}.h3-section-list>.h3-section{padding:16px;float:left;width:100%}@media (max-width:1264px){.h3-section-list>.h3-section{padding:8px}}@media (min-width:769px){.h3-section-list>.h3-section{padding-top:0}}@media (min-width:769px){.h3-section-list.-two-column>.h3-section,.h3-section-list>.h3-section{width:50%}}.h3-section-list.-one-column>.h3-section{width:100%}.h3-section-list.-one-column>.h3-section+.h3-section{margin-top:16px}@media (min-width:769px){.h3-section-list.-three-column>.h3-section{width:50%}}@media (min-width:961px){.h3-section-list.-three-column>.h3-section{width:33.33%}}@media (min-width:769px){.h3-section-list.-left-reference>.h3-section{width:50%}}@media (min-width:961px){.h3-section-list.-left-reference>.h3-section{width:66.67%}.h3-section-list.-left-reference>.h3-section:first-child{width:33.33%}}.main-heading{margin:0;padding:0;margin-bottom:24px;margin-top:64px;position:relative}@media (max-width:768px){.main-heading{margin-bottom:8px;margin-top:32px}}@media (max-width:480px){.main-heading{margin-bottom:8px;margin-top:32px}}.main-heading{margin-top:0;margin-bottom:0}.main-heading>h1{font-size:40px;line-height:1.2;font-weight:200;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;margin:0}@media (min-width:480px) and (max-width:768px){.main-heading>h1{font-size:calc(40px + 6 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.main-heading>h1{font-size:calc(46px + 3 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.main-heading>h1{font-size:49px}}.main-heading>h1>em{font-style:normal;color:#9eaab6}.main-heading.-center>h1{text-align:center}.main-heading.-center>.adbox{margin-top:16px;text-align:center}.main-heading.-center>.adbox>.ad{display:inline-block}.page-actions{margin:0;padding:0}.page-actions{height:32px}.page-actions>.link.link>a{display:inline-block;height:32px;line-height:32px;vertical-align:top;width:auto}.page-actions>li{margin:0;padding:0;list-style-type:none}.page-actions>li>a,.page-actions>li>a:visited{color:#678;text-decoration:none}.page-actions>li>a>.text{font-size:11px;display:none}@media (min-width:480px) and (max-width:768px){.page-actions>li>a>.text{font-size:calc(11px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.page-actions>li>a>.text{font-size:calc(12px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.page-actions>li>a>.text{font-size:12px}}.page-actions>li>a>.text.-visible{display:inline}.page-actions+.page-actions{margin-left:8px}.page-actions>.facebook>a::before,.page-actions>.github>a::before,.page-actions>.twitter>a::before{content:'';vertical-align:middle}.page-actions>.facebook>a::before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M426.8%2064H85.2C73.5%2064%2064%2073.5%2064%2085.2v341.6c0%2011.7%209.5%2021.2%2021.2%2021.2H256V296h-45.9v-56H256v-41.4c0-49.6%2034.4-76.6%2078.7-76.6%2021.2%200%2044%201.6%2049.3%202.3v51.8h-35.3c-24.1%200-28.7%2011.4-28.7%2028.2V240h57.4l-7.5%2056H320v152h106.8c11.7%200%2021.2-9.5%2021.2-21.2V85.2c0-11.7-9.5-21.2-21.2-21.2z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat;height:16px;width:16px}.page-actions>.twitter>a::before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M492%20109.5c-17.4%207.7-36%2012.9-55.6%2015.3%2020-12%2035.4-31%2042.6-53.6-18.7%2011.1-39.4%2019.2-61.5%2023.5C399.8%2075.8%20374.6%2064%20346.8%2064c-53.5%200-96.8%2043.4-96.8%2096.9%200%207.6.8%2015%202.5%2022.1-80.5-4-151.9-42.6-199.6-101.3-8.3%2014.3-13.1%2031-13.1%2048.7%200%2033.6%2017.2%2063.3%2043.2%2080.7-16-.4-31-4.8-44-12.1v1.2c0%2047%2033.4%2086.1%2077.7%2095-8.1%202.2-16.7%203.4-25.5%203.4-6.2%200-12.3-.6-18.2-1.8%2012.3%2038.5%2048.1%2066.5%2090.5%2067.3-33.1%2026-74.9%2041.5-120.3%2041.5-7.8%200-15.5-.5-23.1-1.4C62.8%20432%20113.7%20448%20168.3%20448%20346.6%20448%20444%20300.3%20444%20172.2c0-4.2-.1-8.4-.3-12.5C462.6%20146%20479%20129%20492%20109.5z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat;height:16px;width:16px}.page-actions>.github>a::before{display:inline-block;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22rgb(51%2C68%2C85)%22%20d%3D%22M256%2032C132.3%2032%2032%20134.9%2032%20261.7c0%20101.5%2064.2%20187.5%20153.2%20217.9%201.4.3%202.6.4%203.8.4%208.3%200%2011.5-6.1%2011.5-11.4%200-5.5-.2-19.9-.3-39.1-8.4%201.9-15.9%202.7-22.6%202.7-43.1%200-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1%201.4-14.1h.1c22.5%202%2034.3%2023.8%2034.3%2023.8%2011.2%2019.6%2026.2%2025.1%2039.6%2025.1%2010.5%200%2020-3.4%2025.6-6%202-14.8%207.8-24.9%2014.2-30.7-49.7-5.8-102-25.5-102-113.5%200-25.1%208.7-45.6%2023-61.6-2.3-5.8-10-29.2%202.2-60.8%200%200%201.6-.5%205-.5%208.1%200%2026.4%203.1%2056.6%2024.1%2017.9-5.1%2037-7.6%2056.1-7.7%2019%20.1%2038.2%202.6%2056.1%207.7%2030.2-21%2048.5-24.1%2056.6-24.1%203.4%200%205%20.5%205%20.5%2012.2%2031.6%204.5%2055%202.2%2060.8%2014.3%2016.1%2023%2036.6%2023%2061.6%200%2088.2-52.4%20107.6-102.3%20113.3%208%207.1%2015.2%2021.1%2015.2%2042.5%200%2030.7-.3%2055.5-.3%2063%200%205.4%203.1%2011.5%2011.4%2011.5%201.2%200%202.6-.1%204-.4C415.9%20449.2%20480%20363.1%20480%20261.7%20480%20134.9%20379.7%2032%20256%2032z%22%2F%3E%3C%2Fsvg%3E") center center/16px 16px no-repeat;height:16px;width:16px}.page-actions>.facebook>a::before,.page-actions>.twitter>a::before{width:32px;height:32px}.page-actions>.github>a::before{position:relative;top:-2px}.page-actions>.link.-button>a{box-shadow:inset 0 0 0 1px rgba(102,119,136,.2);border-radius:2px;padding:0 16px;margin:0 8px}.page-actions>.link.-button>a>.text{margin-left:4px;position:relative;top:-1px}@media (max-width:768px){.page-actions>.link{margin-left:16px}}.page-actions>.link:first-child>a{margin-left:0}.page-actions>.link:last-child>a{margin-right:0}.top-nav,.top-nav>.container{height:64px;line-height:64px;text-align:center;position:relative}@media (max-width:480px){.top-nav>.container{height:32px;line-height:32px;margin-top:8px}.top-nav{height:48px;padding:8px 0;border-bottom:solid 1px rgba(102,119,136,.2);margin-bottom:8px}}.top-nav>.container{padding-left:16px;padding-right:16px;max-width:1232px;margin:0 auto}@media (max-width:480px){.top-nav>.container{padding-left:16px}}@media (max-width:480px){.top-nav>.container{padding-right:16px}}.top-nav>.container{display:flex;align-items:center;position:relative}.top-nav>.container>.left{flex:0 0 auto;line-height:32px}.top-nav>.container>.brand{flex:1 1 auto}.top-nav>.container>.actions{flex:0 0 auto;display:flex}.top-nav>.container>.brand{font-size:11px;display:inline-block;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-decoration:none}@media (min-width:480px) and (max-width:768px){.top-nav>.container>.brand{font-size:calc(11px + 1 * ((100vw - 480px)/ 288))}}@media (min-width:768px) and (max-width:1280px){.top-nav>.container>.brand{font-size:calc(12px + 0 * ((100vw - 768px)/ 512))}}@media (min-width:1280px){.top-nav>.container>.brand{font-size:12px}}.top-nav>.container>.brand,.top-nav>.container>.brand:visited{color:#345}@media (max-width:480px){.top-nav>.container>.brand{display:none}.top-nav>.container>.actions{margin-left:auto}}@media (min-width:481px){.top-nav>.container>.actions{position:absolute;right:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.actions{right:16px}}@media (min-width:481px){.top-nav>.container>.left{position:absolute;left:16px;top:16px}}@media (min-width:481px) and (max-width:480px){.top-nav>.container>.left{left:16px}}@media (min-width:1232px){.top-nav>.container>.left>.home{position:relative;left:-16px}} \ No newline at end of file diff --git a/_includes/2017/foot.html b/_includes/2017/foot.html index 947185b6c..038762af7 100644 --- a/_includes/2017/foot.html +++ b/_includes/2017/foot.html @@ -1,5 +1,3 @@ - - {% for lang in page.prism_languages %}{% endfor %} diff --git a/_includes/2017/head.html b/_includes/2017/head.html index 12ee9ce3d..a5b05d464 100644 --- a/_includes/2017/head.html +++ b/_includes/2017/head.html @@ -3,11 +3,11 @@ {% if include.critical == 'home' -%}{% +%}{% endif %}{% if include.critical == 'sheet' -%}{% +%}{% endif %} diff --git a/_js/app.js b/_js/app.js deleted file mode 100644 index 1099f465c..000000000 --- a/_js/app.js +++ /dev/null @@ -1,7 +0,0 @@ -// 3rd party libs -window.Prism = require('prismjs') - -// All the others -function requireAll (r) { r.keys().forEach(r) } -requireAll(require.context('./initializers/', true, /\.js$/)) -requireAll(require.context('./behaviors/', true, /\.js$/)) diff --git a/_js/helpers/__tests__/qs.test.js b/_js/helpers/__tests__/qs.test.js deleted file mode 100644 index e71495c32..000000000 --- a/_js/helpers/__tests__/qs.test.js +++ /dev/null @@ -1,21 +0,0 @@ -/* eslint-env jest */ -import qs from '../qs' - -describe('qs()', () => { - test('basic', run({ - input: '?preview=1', - output: { preview: '1' } - })) - - test('two fragments', run({ - input: '?a=1&b=2', - output: { a: '1', b: '2' } - })) - - function run ({ input, output }) { - return function () { - const result = qs(input) - expect(result).toEqual(output) - } - } -}) diff --git a/_js/wrapify/__tests__/index.test.js b/_js/wrapify/__tests__/index.test.js deleted file mode 100644 index 1b51f359d..000000000 --- a/_js/wrapify/__tests__/index.test.js +++ /dev/null @@ -1,63 +0,0 @@ -/* eslint-env jest */ -import wrapify from '../index' -import $ from 'jquery' - -it('simple usage', run(` -
-

simple usage

- -

install

-

(install)

- -

usage

-

(usage)

-
-`, $div => { - expect($div.find('.h2-section .h3-section-list .h3-section').length).toEqual(2) -})) - -it('h3 with class', run(` -
-

install

-

(install)

-
-`, $div => { - expect($div.find('div.h3-section.-hello').length).toEqual(1) - expect($div.find('div.h3-section-list.-hello').length).toEqual(1) -})) - -it('multiple h2s', run(` -
-

multiple h2

- -

install

-

(install)

- -

usage

-

(usage)

- -

getting started

- -

first

-

(first)

- -

second

-

(second)

-
-`)) - -function run (input, fn) { - return function () { - const $div = $(input) - wrapify($div[0]) - expect($div[0]).toMatchSnapshot() - if (fn) fn($div) - } -} - -it('h2 + pre', run(` -
-

heading

-
(code)
-
-`)) diff --git a/_parcel/_base.scss b/_parcel/_base.scss new file mode 100644 index 000000000..daebb4d5d --- /dev/null +++ b/_parcel/_base.scss @@ -0,0 +1,32 @@ +// Vendor and variables +@import 'sanitize.css/sanitize.css'; +@import '../_sass/2017/variables.scss'; +@import '../node_modules/modularscale-sass/stylesheets/_modularscale.scss'; +@import '../_sass/vendor/ionicons-inline/ionicons.scss'; + +// Utilities +@import '../_sass/2017/utils/carbon-style.scss'; +@import '../_sass/2017/utils/_font-size.scss'; +@import '../_sass/2017/utils/gutter.scss'; +@import '../_sass/2017/utils/heading-style.scss'; +@import '../_sass/2017/utils/section-gutter.scss'; +@import '../_sass/2017/utils/section-with-container.scss'; + +// Base +@import 'sanitize.css/sanitize.css'; +@import '../_sass/2017/base/base.scss'; +@import '../_sass/2017/base/fade.scss'; + +// Components +@import '../_sass/2017/components/attribute-peg.scss'; +@import '../_sass/2017/components/announcements-item.scss'; +@import '../_sass/2017/components/announcements-list.scss'; +@import '../_sass/2017/components/back-button.scss'; +@import '../_sass/2017/components/body-area.scss'; +@import '../_sass/2017/components/codefund-sponsor.scss'; +@import '../_sass/2017/components/page-actions.scss'; +@import '../_sass/2017/components/pages-list.scss'; +@import '../_sass/2017/components/search-box.scss'; +@import '../_sass/2017/components/site-header.scss'; +@import '../_sass/2017/components/top-nav.scss'; +@import '../_sass/2017/components/top-sheet.scss'; diff --git a/_parcel/_utils.scss b/_parcel/_utils.scss new file mode 100644 index 000000000..c19fd887b --- /dev/null +++ b/_parcel/_utils.scss @@ -0,0 +1,12 @@ +// Vendor +@import '../_sass/2017/variables.scss'; +@import '../node_modules/modularscale-sass/stylesheets/_modularscale.scss'; +@import '../_sass/vendor/ionicons-inline/ionicons.scss'; + +// Utilities +@import '../_sass/2017/utils/carbon-style.scss'; +@import '../_sass/2017/utils/_font-size.scss'; +@import '../_sass/2017/utils/gutter.scss'; +@import '../_sass/2017/utils/heading-style.scss'; +@import '../_sass/2017/utils/section-gutter.scss'; +@import '../_sass/2017/utils/section-with-container.scss'; diff --git a/_parcel/app.js b/_parcel/app.js new file mode 100644 index 000000000..24a50911c --- /dev/null +++ b/_parcel/app.js @@ -0,0 +1,30 @@ +// Prismjs +import 'prismjs' +import 'prismjs/plugins/line-highlight/prism-line-highlight.min.js' +import 'prismjs/components/prism-jsx.min.js' +import 'prismjs/components/prism-bash.min.js' +import 'prismjs/components/prism-scss.min.js' +import 'prismjs/components/prism-css.min.js' +import 'prismjs/components/prism-elixir.min.js' +import 'prismjs/components/prism-ruby.min.js' + +// Initializers +import './initializers/prism' +import './initializers/onmount' + +// Behaviors +import './behaviors/anchors' +import './behaviors/dismissable' +import './behaviors/dismiss' +import './behaviors/disqus' +import './behaviors/h3-section-list' +import './behaviors/main-body' +import './behaviors/no-preview' +import './behaviors/searchable-header' +import './behaviors/searchable-item' +import './behaviors/search-form' +import './behaviors/search-input' + +// CSS +import 'prismjs/plugins/line-highlight/prism-line-highlight.css' +import 'hint.css/hint.min.css' diff --git a/_js/behaviors/anchors.js b/_parcel/behaviors/anchors.js similarity index 93% rename from _js/behaviors/anchors.js rename to _parcel/behaviors/anchors.js index 025b5b14e..efe8f7ca4 100644 --- a/_js/behaviors/anchors.js +++ b/_parcel/behaviors/anchors.js @@ -9,7 +9,7 @@ const DEFAULTS = { // text of anchor text: '#', // append before or after innerText? - shouldAppend: false, + shouldAppend: false } /* @@ -19,7 +19,9 @@ const DEFAULTS = { onmount('[data-js-anchors]', function () { const data = JSON.parse(this.getAttribute('data-js-anchors') || '{}') const rules = Array.isArray(data) - ? (data.length ? data : [DEFAULTS]) + ? data.length + ? data + : [DEFAULTS] : [Object.assign({}, DEFAULTS, data)] for (const { rule, className, text, shouldAppend } of rules) { diff --git a/_js/behaviors/dismiss.js b/_parcel/behaviors/dismiss.js similarity index 94% rename from _js/behaviors/dismiss.js rename to _parcel/behaviors/dismiss.js index 676db0f11..8dba8cd44 100644 --- a/_js/behaviors/dismiss.js +++ b/_parcel/behaviors/dismiss.js @@ -14,7 +14,7 @@ onmount('[data-js-dismiss]', function () { const dismissable = getData(parent, 'js-dismissable') const id = (dismissable && dismissable.id) || '' - on(this, 'click', e => { + on(this, 'click', (e) => { Dismiss.setDismissed(id) e.preventDefault() if (parent) remove(parent) diff --git a/_js/behaviors/dismissable.js b/_parcel/behaviors/dismissable.js similarity index 100% rename from _js/behaviors/dismissable.js rename to _parcel/behaviors/dismissable.js diff --git a/_js/behaviors/disqus.js b/_parcel/behaviors/disqus.js similarity index 100% rename from _js/behaviors/disqus.js rename to _parcel/behaviors/disqus.js diff --git a/_js/behaviors/h3-section-list.js b/_parcel/behaviors/h3-section-list.js similarity index 87% rename from _js/behaviors/h3-section-list.js rename to _parcel/behaviors/h3-section-list.js index 45ba06d16..9a6bd5598 100644 --- a/_js/behaviors/h3-section-list.js +++ b/_parcel/behaviors/h3-section-list.js @@ -1,6 +1,6 @@ /* eslint-disable no-new */ -import Isotope from 'isotope-layout/dist/isotope.pkgd.js' +import Isotope from 'isotope-layout' import onmount from 'onmount' import on from 'dom101/on' import qsa from 'dom101/query-selector-all' @@ -17,7 +17,7 @@ onmount('[data-js-h3-section-list]', function () { const images = qsa('img', this) - images.forEach(image => { + images.forEach((image) => { on(image, 'load', () => { iso.layout() }) diff --git a/_js/behaviors/main-body.js b/_parcel/behaviors/main-body.js similarity index 100% rename from _js/behaviors/main-body.js rename to _parcel/behaviors/main-body.js diff --git a/_js/behaviors/no-preview.js b/_parcel/behaviors/no-preview.js similarity index 100% rename from _js/behaviors/no-preview.js rename to _parcel/behaviors/no-preview.js diff --git a/_js/behaviors/search-form.js b/_parcel/behaviors/search-form.js similarity index 91% rename from _js/behaviors/search-form.js rename to _parcel/behaviors/search-form.js index c0091bf24..2cf243516 100644 --- a/_js/behaviors/search-form.js +++ b/_parcel/behaviors/search-form.js @@ -6,7 +6,7 @@ import on from 'dom101/on' */ onmount('[data-js-search-form]', function () { - on(this, 'submit', e => { + on(this, 'submit', (e) => { e.preventDefault() const link = document.querySelector('a[data-search-index]:visible') diff --git a/_js/behaviors/search-input.js b/_parcel/behaviors/search-input.js similarity index 88% rename from _js/behaviors/search-input.js rename to _parcel/behaviors/search-input.js index 0162a2903..ae17e0ac7 100644 --- a/_js/behaviors/search-input.js +++ b/_parcel/behaviors/search-input.js @@ -17,6 +17,8 @@ onmount('[data-js-search-input]', function () { const query = (qs(window.location.search) || {}).q if (query && query.length) { this.value = query - setTimeout(() => { Search.show(query) }) + setTimeout(() => { + Search.show(query) + }) } }) diff --git a/_js/behaviors/searchable-header.js b/_parcel/behaviors/searchable-header.js similarity index 70% rename from _js/behaviors/searchable-header.js rename to _parcel/behaviors/searchable-header.js index a9947944b..b569921dc 100644 --- a/_js/behaviors/searchable-header.js +++ b/_parcel/behaviors/searchable-header.js @@ -10,11 +10,12 @@ import './searchable-item' */ onmount('[data-js-searchable-header]', function () { - const els = nextUntil(this, '[data-js-searchable-header]') - .filter(el => matches(el, '[data-search-index]')) + const els = nextUntil(this, '[data-js-searchable-header]').filter((el) => + matches(el, '[data-search-index]') + ) const keywords = els - .map(n => n.getAttribute('data-search-index')) + .map((n) => n.getAttribute('data-search-index')) .join(' ') .split(' ') diff --git a/_js/behaviors/searchable-item.js b/_parcel/behaviors/searchable-item.js similarity index 100% rename from _js/behaviors/searchable-item.js rename to _parcel/behaviors/searchable-item.js diff --git a/_parcel/critical-home.scss b/_parcel/critical-home.scss new file mode 100644 index 000000000..c97e2bb79 --- /dev/null +++ b/_parcel/critical-home.scss @@ -0,0 +1,16 @@ +@import './_utils.scss'; +@import './_base.scss'; + +// Components +@import '../_sass/2017/components/attribute-peg.scss'; +@import '../_sass/2017/components/announcements-item.scss'; +@import '../_sass/2017/components/announcements-list.scss'; +@import '../_sass/2017/components/back-button.scss'; +@import '../_sass/2017/components/body-area.scss'; +@import '../_sass/2017/components/codefund-sponsor.scss'; +@import '../_sass/2017/components/page-actions.scss'; +@import '../_sass/2017/components/pages-list.scss'; +@import '../_sass/2017/components/search-box.scss'; +@import '../_sass/2017/components/site-header.scss'; +@import '../_sass/2017/components/top-nav.scss'; +@import '../_sass/2017/components/top-sheet.scss'; diff --git a/_parcel/critical-sheet.scss b/_parcel/critical-sheet.scss new file mode 100644 index 000000000..d8fab1425 --- /dev/null +++ b/_parcel/critical-sheet.scss @@ -0,0 +1,21 @@ +@import './_utils.scss'; +@import './_base.scss'; + +// Markdown +@import '../_sass/2017/markdown/a-em.scss'; +@import '../_sass/2017/markdown/code.scss'; +@import '../_sass/2017/markdown/headings.scss'; +@import '../_sass/2017/markdown/local-anchor.scss'; +@import '../_sass/2017/markdown/p.scss'; +@import '../_sass/2017/markdown/table.scss'; +@import '../_sass/2017/markdown/ul.scss'; + +// Components +@import '../_sass/2017/components/back-button.scss'; +@import '../_sass/2017/components/body-area.scss'; +@import '../_sass/2017/components/codefund-sponsor.scss'; +@import '../_sass/2017/components/h3-section.scss'; +@import '../_sass/2017/components/h3-section-list.scss'; +@import '../_sass/2017/components/main-heading.scss'; +@import '../_sass/2017/components/page-actions.scss'; +@import '../_sass/2017/components/top-nav.scss'; diff --git a/_js/critical.js b/_parcel/critical.js similarity index 96% rename from _js/critical.js rename to _parcel/critical.js index d949e5e85..b92f80be7 100644 --- a/_js/critical.js +++ b/_parcel/critical.js @@ -20,7 +20,7 @@ on(window, 'load', done) setTimeout(done, 5000) let isDone -function done () { +function done() { if (isDone) return addClass(document.documentElement, 'LoadDone') isDone = true diff --git a/_js/helpers/data.js b/_parcel/helpers/data.js similarity index 74% rename from _js/helpers/data.js rename to _parcel/helpers/data.js index 2e74e4285..fddc4073a 100644 --- a/_js/helpers/data.js +++ b/_parcel/helpers/data.js @@ -2,7 +2,7 @@ * Stores and retrieves data from an element. Works like jQuery.data(). */ -export function data (el, key, val) { +export function data(el, key, val) { if (typeof val !== 'undefined') { return getData(el, key) } else { @@ -10,11 +10,11 @@ export function data (el, key, val) { } } -export function getData (el, key) { +export function getData(el, key) { const str = el.getAttribute('data-' + key) return JSON.parse(str || '{}') } -export function setData (el, key, val) { +export function setData(el, key, val) { el.setAttribute('data-' + key, JSON.stringify(val)) } diff --git a/_js/helpers/dismiss.js b/_parcel/helpers/dismiss.js similarity index 87% rename from _js/helpers/dismiss.js rename to _parcel/helpers/dismiss.js index b629d2b71..2d8b1a207 100644 --- a/_js/helpers/dismiss.js +++ b/_parcel/helpers/dismiss.js @@ -7,7 +7,7 @@ import * as Store from './store' * setDismissed('2017-09-02-happy-birthday') */ -export function setDismissed (id) { +export function setDismissed(id) { Store.update('dismissed', function (data) { data[id] = true return data @@ -22,7 +22,7 @@ export function setDismissed (id) { * isDismissed('2017-09-02-happy-birthday') => true */ -export function isDismissed (id) { +export function isDismissed(id) { const data = Store.fetch('dismissed') return data && data[id] } diff --git a/_js/helpers/dom.js b/_parcel/helpers/dom.js similarity index 55% rename from _js/helpers/dom.js rename to _parcel/helpers/dom.js index bf94941cb..723c41fc5 100644 --- a/_js/helpers/dom.js +++ b/_parcel/helpers/dom.js @@ -4,33 +4,35 @@ import matches from 'dom101/matches' * Just like jQuery.append */ -export function appendMany (el, children) { - children.forEach(child => { el.appendChild(child) }) +export function appendMany(el, children) { + children.forEach((child) => { + el.appendChild(child) + }) } /* * Just like jQuery.nextUntil */ -export function nextUntil (el, selector) { +export function nextUntil(el, selector) { const nextEl = el.nextSibling return nextUntilTick(nextEl, selector, []) } -function nextUntilTick (el, selector, acc) { +function nextUntilTick(el, selector, acc) { if (!el) return acc const isMatch = matches(el, selector) if (isMatch) return acc - return nextUntilTick(el.nextSibling, selector, [ ...acc, el ]) + return nextUntilTick(el.nextSibling, selector, [...acc, el]) } /* * Just like jQuery.before */ -export function before (reference, newNode) { +export function before(reference, newNode) { reference.parentNode.insertBefore(newNode, reference) } @@ -38,9 +40,8 @@ export function before (reference, newNode) { * Like jQuery.children('selector') */ -export function findChildren (el, selector) { - return [].slice.call(el.children) - .filter(child => matches(child, selector)) +export function findChildren(el, selector) { + return [].slice.call(el.children).filter((child) => matches(child, selector)) } /** @@ -52,9 +53,9 @@ export function findChildren (el, selector) { * createDiv({ class: 'foo' }) */ -export function createDiv (props) { +export function createDiv(props) { const d = document.createElement('div') - Object.keys(props).forEach(key => { + Object.keys(props).forEach((key) => { d.setAttribute(key, props[key]) }) return d diff --git a/_js/helpers/inject_disqus.js b/_parcel/helpers/inject_disqus.js similarity index 81% rename from _js/helpers/inject_disqus.js rename to _parcel/helpers/inject_disqus.js index 886b15faa..5fd742504 100644 --- a/_js/helpers/inject_disqus.js +++ b/_parcel/helpers/inject_disqus.js @@ -5,12 +5,12 @@ * inject('devhints.disqus.com') */ -export default function inject (host) { +export default function inject(host) { injectEmbed(host) injectCount(host) } -export function injectEmbed (host) { +export function injectEmbed(host) { const d = document const s = d.createElement('script') s.src = `https://${host}/embed.js` @@ -18,7 +18,7 @@ export function injectEmbed (host) { ;(d.head || d.body).appendChild(s) } -export function injectCount (host) { +export function injectCount(host) { const d = document const s = d.createElement('script') s.src = `https://${host}/count.js` diff --git a/_js/helpers/noop.js b/_parcel/helpers/noop.js similarity index 100% rename from _js/helpers/noop.js rename to _parcel/helpers/noop.js diff --git a/_js/helpers/permutate.js b/_parcel/helpers/permutate.js similarity index 79% rename from _js/helpers/permutate.js rename to _parcel/helpers/permutate.js index 99918d7a6..2bbb4e9ca 100644 --- a/_js/helpers/permutate.js +++ b/_parcel/helpers/permutate.js @@ -7,7 +7,7 @@ * }) */ -export default function permutate (data) { +export default function permutate(data) { let words = [] if (data.slug) { words = words.concat(permutateString(data.slug)) @@ -26,11 +26,11 @@ export default function permutate (data) { * => ['h', 'hi', 'j', 'jo', 'joe'] */ -export function permutateString (str) { +export function permutateString(str) { let words = [] let inputs = splitwords(str) - inputs.forEach(word => { + inputs.forEach((word) => { words = words.concat(permutateWord(word)) }) @@ -45,7 +45,7 @@ export function permutateString (str) { * => ['h', 'he', 'hel', 'hell', 'hello'] */ -export function permutateWord (str) { +export function permutateWord(str) { let words = [] const len = str.length for (var i = 1; i <= len; ++i) { @@ -62,10 +62,11 @@ export function permutateWord (str) { * => ['hello', 'world'] */ -export function splitwords (str) { - const words = str.toLowerCase() +export function splitwords(str) { + const words = str + .toLowerCase() .split(/[ /\-_]/) - .filter(k => k && k.length !== 0) + .filter((k) => k && k.length !== 0) return words } diff --git a/_js/helpers/preview.js b/_parcel/helpers/preview.js similarity index 79% rename from _js/helpers/preview.js rename to _parcel/helpers/preview.js index 670c09c68..1c1a49eff 100644 --- a/_js/helpers/preview.js +++ b/_parcel/helpers/preview.js @@ -2,6 +2,6 @@ * Checks if we're in preview mode (?preview=1). */ -export function isPreview () { +export function isPreview() { return window.location.search.indexOf('preview=1') !== -1 } diff --git a/_js/helpers/qs.js b/_parcel/helpers/qs.js similarity index 67% rename from _js/helpers/qs.js rename to _parcel/helpers/qs.js index c87edee8a..e2a2fdc8a 100644 --- a/_js/helpers/qs.js +++ b/_parcel/helpers/qs.js @@ -2,16 +2,16 @@ * Helper: minimal qs implementation */ -export default function qs (search) { +export default function qs(search) { search = search.substr(1) - const parts = search.split('&').map(p => p.split('=')) + const parts = search.split('&').map((p) => p.split('=')) return parts.reduce((result, part) => { result[part[0]] = qsdecode(part[1]) return result }, {}) } -export function qsdecode (string) { +export function qsdecode(string) { if (!string) string = '' string = string.replace(/\+/g, ' ') return string diff --git a/_js/helpers/search.js b/_parcel/helpers/search.js similarity index 66% rename from _js/helpers/search.js rename to _parcel/helpers/search.js index 914b6ef94..db6548664 100644 --- a/_js/helpers/search.js +++ b/_parcel/helpers/search.js @@ -8,8 +8,8 @@ import qsa from 'dom101/query-selector-all' * Search.showAll() */ -export function showAll () { - qsa('[data-search-index]').forEach(el => { +export function showAll() { + qsa('[data-search-index]').forEach((el) => { el.removeAttribute('aria-hidden') }) } @@ -21,20 +21,20 @@ export function showAll () { * Search.show('hello') */ -export function show (val) { +export function show(val) { const keywords = splitwords(val) if (!keywords.length) return showAll() const selectors = keywords - .map(k => `[data-search-index~=${JSON.stringify(k)}]`) + .map((k) => `[data-search-index~=${JSON.stringify(k)}]`) .join('') - qsa('[data-search-index]').forEach(el => { + qsa('[data-search-index]').forEach((el) => { el.setAttribute('aria-hidden', true) }) - qsa(selectors).forEach(el => { + qsa(selectors).forEach((el) => { el.removeAttribute('aria-hidden') }) } diff --git a/_js/helpers/store.js b/_parcel/helpers/store.js similarity index 89% rename from _js/helpers/store.js rename to _parcel/helpers/store.js index 8da6af718..a2f4ad652 100644 --- a/_js/helpers/store.js +++ b/_parcel/helpers/store.js @@ -9,7 +9,7 @@ * }) */ -export function update (key, fn) { +export function update(key, fn) { if (!window.localStorage) return let data = JSON.parse(window.localStorage[key] || '{}') data = fn(data) @@ -23,7 +23,7 @@ export function update (key, fn) { * const data = fetch('dismissed') */ -export function fetch (key) { +export function fetch(key) { if (!window.localStorage) return return JSON.parse(window.localStorage[key] || '{}') } diff --git a/_js/initializers/onmount.js b/_parcel/initializers/onmount.js similarity index 73% rename from _js/initializers/onmount.js rename to _parcel/initializers/onmount.js index f015e59eb..26958618a 100644 --- a/_js/initializers/onmount.js +++ b/_parcel/initializers/onmount.js @@ -6,5 +6,7 @@ import onmount from 'onmount' */ ready(() => { - setTimeout(() => { onmount() }) + setTimeout(() => { + onmount() + }) }) diff --git a/_parcel/initializers/prism.js b/_parcel/initializers/prism.js new file mode 100644 index 000000000..b32e140f8 --- /dev/null +++ b/_parcel/initializers/prism.js @@ -0,0 +1 @@ +window.Prism = require('prismjs') diff --git a/_js/wrapify/__tests__/__snapshots__/index.test.js.snap b/_parcel/wrapify/__tests__/__snapshots__/index.test.js.snap similarity index 100% rename from _js/wrapify/__tests__/__snapshots__/index.test.js.snap rename to _parcel/wrapify/__tests__/__snapshots__/index.test.js.snap diff --git a/_parcel/wrapify/__tests__/index.test.js b/_parcel/wrapify/__tests__/index.test.js new file mode 100644 index 000000000..019161994 --- /dev/null +++ b/_parcel/wrapify/__tests__/index.test.js @@ -0,0 +1,88 @@ +/* eslint-env jest */ +import wrapify from '../index' + +it( + 'simple usage', + run( + ` +
+

simple usage

+ +

install

+

(install)

+ +

usage

+

(usage)

+
+`, + (root) => { + expect( + root.querySelectorAll('.h2-section .h3-section-list .h3-section').length + ).toEqual(2) + } + ) +) + +it( + 'h3 with class', + run( + ` +
+

install

+

(install)

+
+`, + (root) => { + expect(root.querySelectorAll('div.h3-section.-hello').length).toEqual(1) + expect( + root.querySelectorAll('div.h3-section-list.-hello').length + ).toEqual(1) + } + ) +) + +it( + 'multiple h2s', + run(` +
+

multiple h2

+ +

install

+

(install)

+ +

usage

+

(usage)

+ +

getting started

+ +

first

+

(first)

+ +

second

+

(second)

+
+`) +) + +function run(input, fn) { + return function () { + const div = document.createElement('div') + div.innerHTML = input + + const root = div.children[0] + wrapify(root) + expect(root).toMatchSnapshot() + + if (fn) fn(root) + } +} + +it( + 'h2 + pre', + run(` +
+

heading

+
(code)
+
+`) +) diff --git a/_js/wrapify/index.js b/_parcel/wrapify/index.js similarity index 77% rename from _js/wrapify/index.js rename to _parcel/wrapify/index.js index e2b93f589..0af5fbaf1 100644 --- a/_js/wrapify/index.js +++ b/_parcel/wrapify/index.js @@ -1,6 +1,12 @@ import matches from 'dom101/matches' import addClass from 'dom101/add-class' -import { appendMany, nextUntil, before, findChildren, createDiv } from '../helpers/dom' +import { + appendMany, + nextUntil, + before, + findChildren, + createDiv +} from '../helpers/dom' /** * Wraps h2 sections into h2-section. @@ -9,14 +15,16 @@ import { appendMany, nextUntil, before, findChildren, createDiv } from '../helpe * @private */ -export default function wrapify (root) { +export default function wrapify(root) { // These are your H2 sections. Returns a list of .h2-section nodes. const sections = wrapifyH2(root) // For each h2 section, wrap the H3's in them - sections.forEach(section => { + sections.forEach((section) => { const bodies = findChildren(section, '[data-js-h3-section-list]') - bodies.forEach(body => { wrapifyH3(body) }) + bodies.forEach((body) => { + wrapifyH3(body) + }) }) } @@ -33,14 +41,15 @@ export default function wrapify (root) { * @private */ -function wrapifyH2 (root) { +function wrapifyH2(root) { return groupify(root, { tag: 'h2', wrapperFn: () => createDiv({ class: 'h2-section' }), - bodyFn: () => createDiv({ - class: 'body h3-section-list', - 'data-js-h3-section-list': '' - }) + bodyFn: () => + createDiv({ + class: 'body h3-section-list', + 'data-js-h3-section-list': '' + }) }) } @@ -57,7 +66,7 @@ function wrapifyH2 (root) { * @private */ -function wrapifyH3 (root) { +function wrapifyH3(root) { return groupify(root, { tag: 'h3', wrapperFn: () => createDiv({ class: 'h3-section' }), @@ -71,27 +80,27 @@ function wrapifyH3 (root) { * @private */ -export function groupify (el, { tag, wrapperFn, bodyFn }) { +export function groupify(el, { tag, wrapperFn, bodyFn }) { const first = el.children[0] let result = [] // Handle the markup before the first h2 if (first && !matches(first, tag)) { const sibs = nextUntil(first, tag) - result.push(wrap(first, null, [ first, ...sibs ])) + result.push(wrap(first, null, [first, ...sibs])) } // Find all h3's inside it const children = findChildren(el, tag) - children.forEach(child => { + children.forEach((child) => { const sibs = nextUntil(child, tag) result.push(wrap(child, child, sibs)) }) return result - function wrap (pivot, first, sibs) { + function wrap(pivot, first, sibs) { const wrap = wrapperFn() const pivotClass = pivot.className diff --git a/_sass/2017/components/announcements-item.scss b/_sass/2017/components/announcements-item.scss index 108eb0730..f1a74dd9e 100644 --- a/_sass/2017/components/announcements-item.scss +++ b/_sass/2017/components/announcements-item.scss @@ -43,6 +43,7 @@ margin: 0; padding: 0; cursor: pointer; + background: transparent; &:hover, &:focus { diff --git a/_sass/2017/style.scss b/_sass/2017/style.scss index fe6454134..c69fcde89 100644 --- a/_sass/2017/style.scss +++ b/_sass/2017/style.scss @@ -1,4 +1,6 @@ -@import '../vendor/sanitize.css/sanitize'; +// Generated by parcel +@import '../../assets/packed/app.css'; + @import './variables'; @import '../vendor/modularscale/modularscale'; @import '../vendor/ionicons-inline/ionicons'; diff --git a/_sass/vendor/modularscale/_modularscale.scss b/_sass/vendor/modularscale/_modularscale.scss index 3c21f42cc..cfa03c10d 100644 --- a/_sass/vendor/modularscale/_modularscale.scss +++ b/_sass/vendor/modularscale/_modularscale.scss @@ -80,14 +80,14 @@ $modularscale : () !default;// Parse settings starting with defaults. // This does not support non-integer exponents, // Check and return an error if a non-integer exponent is passed. @if (floor($e) != $e) { - @error ' -====================================================================== -Non-integer values are not supported in modularscale by default. + // @error ' +// ====================================================================== +// Non-integer values are not supported in modularscale by default. -Try using mathsass in your project to add non-integer scale support. -https://github.com/terkel/mathsass -====================================================================== -' +// Try using mathsass in your project to add non-integer scale support. +// https://github.com/terkel/mathsass +// ====================================================================== +// ' } // Seed the return. diff --git a/_support/critical.js b/_support/critical.js deleted file mode 100644 index 345b80ffe..000000000 --- a/_support/critical.js +++ /dev/null @@ -1,45 +0,0 @@ -const critical = require('critical') - -console.warn('Generating critical path styles into _includes/2017/critical/...') - -const OPTIONS = { - base: '_site', - width: 1400, - height: 900, - minify: true, - extract: true, - ignore: [ - '@font-face' - ], - include: [ - // fade-in magic (base/fade) - /html\.WithJs/ - ] -} - -critical.generate({ - ...OPTIONS, - src: 'index.html', - dest: '../_includes/2017/critical/home.css', - include: [ - ...OPTIONS.include, - - // searchbox with placeholder - /\.search-box/ - ] -}) - -critical.generate({ - ...OPTIONS, - src: 'react.html', - dest: '../_includes/2017/critical/sheet.css', - include: [ - ...OPTIONS.include, - - // sections (and h3 section list), just to be sure - /\.h3-section/, - - // eg, -six-column in devhints.io/layout-thrashing - /-column/ - ] -}) diff --git a/_support/webpack.config.js b/_support/webpack.config.js deleted file mode 100644 index c11d8376f..000000000 --- a/_support/webpack.config.js +++ /dev/null @@ -1,73 +0,0 @@ -const join = require('path').resolve -const webpack = require('webpack') - -module.exports = { - context: join(__dirname, '..'), - entry: { - app: './_js/app.js', - vendor: [ - // Large 3rd-party libs - 'prismjs', - - // Prism plugins - 'prismjs/plugins/line-highlight/prism-line-highlight.min.js', - 'prismjs/components/prism-jsx.min.js', - 'prismjs/components/prism-bash.min.js', - 'prismjs/components/prism-scss.min.js', - 'prismjs/components/prism-css.min.js', - 'prismjs/components/prism-elixir.min.js', - 'prismjs/components/prism-ruby.min.js', - - // CSS - 'prismjs/plugins/line-highlight/prism-line-highlight.css', - 'hint.css/hint.min.css' - ] - }, - output: { - path: join(__dirname, '..', 'assets', 'packed'), - filename: '[name].js', - devtoolModuleFilenameTemplate: 'webpack:///[absolute-resource-path]' - }, - module: { - rules: [ - { - test: /\.js$/, - exclude: /node_modules/, - use: [ - { loader: 'babel-loader' } - ] - }, - { - test: /\.css$/, - use: [ - { loader: 'style-loader' }, - { loader: 'css-loader' } - ] - } - ] - }, - resolve: { - alias: { - // Never bundle jQuery - 'jquery': join(__dirname, '..', '_js/helpers/noop.js') - } - }, - stats: 'minimal', - plugins: [ - // Optimize module ID's for vendor chunks - new webpack.HashedModuleIdsPlugin({ - hashFunction: 'sha256', - hashDigest: 'base64', - hashDigestLength: 20 - }), - - // Optimize vendor - new webpack.optimize.CommonsChunkPlugin('vendor'), - - // Don't include debug symbols ever - new webpack.EnvironmentPlugin({ - NODE_ENV: 'production' - }) - ], - devtool: 'source-map' -} diff --git a/_support/webpack.critical.js b/_support/webpack.critical.js deleted file mode 100644 index e32faf61b..000000000 --- a/_support/webpack.critical.js +++ /dev/null @@ -1,28 +0,0 @@ -const join = require('path').resolve -const webpack = require('webpack') - -module.exports = { - context: join(__dirname, '..'), - entry: './_js/critical.js', - output: { - path: join(__dirname, '..', '_includes', '2017', 'critical'), - filename: 'critical.js' - }, - module: { - rules: [ - { - test: /\.js$/, - exclude: /node_modules/, - use: [ - { loader: 'babel-loader' } - ] - } - ] - }, - stats: 'minimal', - plugins: [ - new webpack.EnvironmentPlugin({ - NODE_ENV: 'production' - }) - ] -} diff --git a/assets/packed/app.css b/assets/packed/app.css new file mode 100644 index 000000000..815dbef27 --- /dev/null +++ b/assets/packed/app.css @@ -0,0 +1,3 @@ +pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:hsla(24,20%,50%,.08);background:linear-gradient(90deg,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:hsla(24,20%,50%,.4);color:#f5f2f0;font:700 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px #fff}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:after,.line-numbers .line-highlight:before{content:none}/*! Hint.css - v2.6.0 - 2019-04-27 +* http://kushagragour.in/lab/hint/ +* Copyright (c) 2019 Kushagra Gour */[class*=hint--]{position:relative;display:inline-block}[class*=hint--]:after,[class*=hint--]:before{position:absolute;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);transform:translateZ(0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0s;-moz-transition-delay:0s;transition-delay:0s}[class*=hint--]:hover:after,[class*=hint--]:hover:before{visibility:visible;opacity:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}[class*=hint--]:before{content:"";position:absolute;background:0 0;border:6px solid transparent;z-index:1000001}[class*=hint--]:after{background:#383838;color:#fff;padding:8px 10px;font-size:12px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap;text-shadow:0 -1px 0 #000;box-shadow:4px 4px 8px rgba(0,0,0,.3)}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:after,[aria-label=""]:before,[data-hint=""]:after,[data-hint=""]:before{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#383838}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#383838}.hint--top:after,.hint--top:before{bottom:100%;left:50%}.hint--top:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translateX(-50%)}.hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}.hint--bottom:after,.hint--bottom:before{top:100%;left:50%}.hint--bottom:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translateX(-50%)}.hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}.hint--right:before{border-right-color:#383838;margin-left:-11px;margin-bottom:-6px}.hint--right:after{margin-bottom:-14px}.hint--right:after,.hint--right:before{left:100%;bottom:50%}.hint--right:hover:after,.hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--left:before{border-left-color:#383838;margin-right:-11px;margin-bottom:-6px}.hint--left:after{margin-bottom:-14px}.hint--left:after,.hint--left:before{right:100%;bottom:50%}.hint--left:hover:after,.hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--top-left:after,.hint--top-left:before{bottom:100%;left:50%}.hint--top-left:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translateX(-100%);margin-left:12px}.hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translateX(-100%) translateY(-8px)}.hint--top-right:after,.hint--top-right:before{bottom:100%;left:50%}.hint--top-right:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0);margin-left:-12px}.hint--top-right:hover:after,.hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--bottom-left:after,.hint--bottom-left:before{top:100%;left:50%}.hint--bottom-left:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translateX(-100%);margin-left:12px}.hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translateX(-100%) translateY(8px)}.hint--bottom-right:after,.hint--bottom-right:before{top:100%;left:50%}.hint--bottom-right:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0);margin-left:-12px}.hint--bottom-right:hover:after,.hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--large:after,.hint--medium:after,.hint--small:after{white-space:normal;line-height:1.4em;word-wrap:break-word}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}.hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0 #592726}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0 #6c5328}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0 #1a3c4d}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{background-color:#458746;text-shadow:0 -1px 0 #1a321a}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}.hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translateX(-100%) translateY(-8px)}.hint--always.hint--top-right:after,.hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}.hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translateX(-100%) translateY(8px)}.hint--always.hint--bottom-right:after,.hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--left:after,.hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--always.hint--right:after,.hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:after,.hint--no-animate:before{-webkit-transition-duration:0s;-moz-transition-duration:0s;transition-duration:0s}.hint--bounce:after,.hint--bounce:before{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:after,.hint--no-shadow:before{text-shadow:none;box-shadow:none} \ No newline at end of file diff --git a/assets/packed/app.js b/assets/packed/app.js index 738692192..4958bc441 100644 --- a/assets/packed/app.js +++ b/assets/packed/app.js @@ -1,42 +1,127 @@ -webpackJsonp([0],{"/k7tj9kxRFhFtZjlt346":function(t,e,i){"use strict";function n(t,e){if(window.localStorage){var i=JSON.parse(window.localStorage[t]||"{}");i=e(i),window.localStorage[t]=JSON.stringify(i)}}function o(t){if(window.localStorage)return JSON.parse(window.localStorage[t]||"{}")}Object.defineProperty(e,"__esModule",{value:!0}),e.update=n,e.fetch=o},"2QOxTCxkuzN0PP2kJ2jn":function(t,e,i){"use strict";function n(t){s.update("dismissed",function(e){return e[t]=!0,e})}function o(t){var e=s.fetch("dismissed");return e&&e[t]}Object.defineProperty(e,"__esModule",{value:!0}),e.setDismissed=n,e.isDismissed=o;var r=i("/k7tj9kxRFhFtZjlt346"),s=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(r)},"2tov+8o2NrZdw/Lg8JZA":function(t,e,i){function n(t){return i(o(t))}function o(t){var e=r[t];if(!(e+1))throw new Error("Cannot find module '"+t+"'.");return e}var r={"./onmount.js":"6hLKOGpXaWUwTDQA5TL2"};n.keys=function(){return Object.keys(r)},n.resolve=o,t.exports=n,n.id="2tov+8o2NrZdw/Lg8JZA"},"6hLKOGpXaWUwTDQA5TL2":function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=i("tqbVxj9+xGAhlFrQpyTS"),r=n(o),s=i("yfX/NEeqeNrvWENPWWKS"),a=n(s);(0,r.default)(function(){setTimeout(function(){(0,a.default)()})})},"BF4TFfJ+K+wsuHfLZ/S3":function(t,e,i){"use strict";function n(){return-1!==window.location.search.indexOf("preview=1")}Object.defineProperty(e,"__esModule",{value:!0}),e.isPreview=n},BuWMdGeXUEK0GmkN01pU:function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=i("yfX/NEeqeNrvWENPWWKS"),r=n(o),s=i("cYqQDyTPtD7lV79ovj4Y"),a=n(s);(0,r.default)("[data-js-disqus]",function(){var t=JSON.parse(this.getAttribute("data-js-disqus")),e=this.parentNode;e.setAttribute("hidden",!0),window.disqus_config=function(){this.page.url=t.url,this.page.identifier=t.identifier},window.addEventListener("load",function(){setTimeout(function(){(0,a.default)(t.host),e.removeAttribute("hidden")},100)})})},C2mk7N9JzKWlcOYJrkfi:function(t,e){function i(t,e){var i=t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector;if(i)return i.call(t,e);if(t.parentNode){for(var n=t.parentNode.querySelectorAll(e),o=n.length;o--;0)if(n[o]===t)return!0;return!1}}t.exports=i},"CjZN/azBHJxH2NsOjfdD":function(t,e,i){"use strict";function n(t,e,i){return void 0!==i?o(t,e):r(t,e,i)}function o(t,e){var i=t.getAttribute("data-"+e);return JSON.parse(i||"{}")}function r(t,e,i){t.setAttribute("data-"+e,JSON.stringify(i))}Object.defineProperty(e,"__esModule",{value:!0}),e.data=n,e.getData=o,e.setData=r},"D3SYMdNAenu80VOO7/Dv":function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=i("yfX/NEeqeNrvWENPWWKS"),r=n(o),s=i("MKJaVdnD9jF7rk6rW6AJ"),a=n(s);(0,r.default)("[data-js-search-form]",function(){(0,a.default)(this,"submit",function(t){t.preventDefault();var e=document.querySelector("a[data-search-index]:visible"),i=e&&e.getAttribute("href");i&&(window.location=i)})})},DfTyEU8lscjHXmCMlptO:function(t,e,i){"use strict";function n(){(0,a.default)("[data-search-index]").forEach(function(t){t.removeAttribute("aria-hidden")})}function o(t){var e=(0,r.splitwords)(t);if(!e.length)return n();var i=e.map(function(t){return"[data-search-index~="+JSON.stringify(t)+"]"}).join("");(0,a.default)("[data-search-index]").forEach(function(t){t.setAttribute("aria-hidden",!0)}),(0,a.default)(i).forEach(function(t){t.removeAttribute("aria-hidden")})}Object.defineProperty(e,"__esModule",{value:!0}),e.showAll=n,e.show=o;var r=i("GOdGag34TlRuHa2OZoh9"),s=i("EvxNxLK9yKFmn1U14Kvw"),a=function(t){return t&&t.__esModule?t:{default:t}}(s)},"E+dCGfS1pT5WowYv7jpv":function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=i("GbzL7C/QFmiBZDICkla+"),r=n(o),s=i("yfX/NEeqeNrvWENPWWKS"),a=n(s),u=i("MKJaVdnD9jF7rk6rW6AJ"),h=n(u),c=i("EvxNxLK9yKFmn1U14Kvw"),f=n(c);(0,a.default)("[data-js-h3-section-list]",function(){var t=new r.default(this,{itemSelector:".h3-section",transitionDuration:0});(0,f.default)("img",this).forEach(function(e){(0,h.default)(e,"load",function(){t.layout()})}),(0,h.default)(window,"load",function(){t.layout()})})},EvxNxLK9yKFmn1U14Kvw:function(t,e){function i(t,e){return Array.prototype.slice.call((e||document).querySelectorAll(t))}t.exports=i},GOdGag34TlRuHa2OZoh9:function(t,e,i){"use strict";function n(t){var e=[];return t.slug&&(e=e.concat(o(t.slug))),t.category&&(e=e.concat(o(t.category))),e}function o(t){var e=[];return s(t).forEach(function(t){e=e.concat(r(t))}),e}function r(t){for(var e=[],i=t.length,n=1;n<=i;++n)e.push(t.substr(0,n));return e}function s(t){return t.toLowerCase().split(/[ \/\-_]/).filter(function(t){return t&&0!==t.length})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=n,e.permutateString=o,e.permutateWord=r,e.splitwords=s},"GbzL7C/QFmiBZDICkla+":function(t,e,i){var n,o,r,s,a,n,u,h,c,f,n,d,n,l,p,n,m,n,l,v,n,l,g,n,l,y,n,l,_,n,l,b,n,l,E,n,o;/*! - * Isotope PACKAGED v3.0.4 - * - * Licensed GPLv3 for open source use - * or Isotope Commercial License for commercial use - * - * http://isotope.metafizzy.co - * Copyright 2017 Metafizzy - */ -!function(r,s){n=[i("g2okcHDGBNRpe9zqR9sR")],void 0!==(o=function(t){return s(r,t)}.apply(e,n))&&(t.exports=o)}(window,function(t,e){"use strict";function i(i,r,a){function u(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,u){var h=a.data(u,i);if(!h)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var c=h[e];if(!c||"_"==e.charAt(0))return void s(r+" is not a valid method");var f=c.apply(h,n);o=void 0===o?f:o}),void 0!==o?o:t}function h(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}(a=a||e||t.jQuery)&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){return u(this,t,o.call(arguments,1))}return h(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s=void 0===r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){s=e,a={id:"ev-emitter/ev-emitter",exports:{},loaded:!1},r="function"==typeof s?s.call(a.exports,i,a.exports,a):s,a.loaded=!0,void 0===r&&(r=a.exports)}("undefined"!=typeof window&&window,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var r=this._onceEvents&&this._onceEvents[t];o;){var s=r&&r[o];s&&(this.off(t,o),delete r[o]),o.apply(this,e),n+=s?0:1,o=i[n]}return this}},t}),/*! - * getSize v2.0.2 - * measure size of elements - * MIT license - */ -function(t,i){"use strict";n=[],u=function(){return i()}.apply(e,n)}(window,function(){"use strict";function t(t){var e=parseFloat(t);return-1==t.indexOf("%")&&!isNaN(e)&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e