diff --git a/.babelrc b/.babelrc index cf97ee5ce..43a5682a6 100644 --- a/.babelrc +++ b/.babelrc @@ -1,10 +1,9 @@ { "presets": [ [ - "@babel/preset-env", + "env", { - "useBuiltIns": "entry", - "targets": "> 2%" + "forceAllTransforms": true } ] ] diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index cdfdd3780..000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -yarn.lock binary diff --git a/.gitignore b/.gitignore index 8e067e264..810939e66 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,4 @@ _site .jekyll-metadata /node_modules /vendor -.idea/ - -# Generated by 'yarn dev' -/_includes/2017/critical/critical-home.js -/_includes/2017/critical/critical-sheet.js +.idea/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 4f49fe278..ae863e143 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,5 @@ { "semi": false, "singleQuote": true, - "jsxSingleQuote": true, - "trailingComma": "none" + "jsxSingleQuote": true } diff --git a/.travis.yml b/.travis.yml index f5002202e..3f83d39f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,25 +1,10 @@ language: ruby -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} - +rvm: +- 2.5 script: - - yarn build - - yarn test - - if ! make test; then make test-warning; exit 16; fi - -cache: - bundler: true - yarn: true - +- make -B _site +- if ! make test; then make test-warning; exit 16; fi +cache: bundler notifications: slack: if: branch = master OR branch =~ ^.*slack.*$ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f5268af92..8fc6a1912 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,6 @@ # 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 @@ -10,14 +9,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 Parcel. This requires recent versions of [Node.js], [Yarn], [Ruby] and [Bundler] installed. +This starts Jekyll and Webpack. This requires recent versions of [Node.js], [Yarn], [Ruby] and [Bundler] installed. ```bash yarn install @@ -57,11 +56,9 @@ See for a reference on styling. ## JavaScript -When updating JavaScript, be sure Parcel is running (`yarn dev` takes care of this). +When updating JavaScript, be sure webpack is running (`yarn run dev` takes care of this). -This auto-updates `/assets/packed/` and `_includes/2017/critical/` with sources in `_parcel/`. - -Before committing, run `yarn parcel:build` first. +This auto-updates `/assets/packed/` with sources in `_js/`. ## JavaScript tests @@ -78,16 +75,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: @@ -96,10 +93,9 @@ 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 @@ -119,7 +115,6 @@ title: ES2015 category: Hidden redirect_to: /es6 --- - ``` ## Localizations @@ -175,3 +170,26 @@ 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 817e26443..997ad584f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -FROM ruby:2.7.1 -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - +FROM ruby:2.5.1 +RUN curl -sL https://deb.nodesource.com/setup_10.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 f63846fed..e2ad817c4 100644 --- a/Makefile +++ b/Makefile @@ -9,14 +9,43 @@ help: @echo # Builds intermediate files. Needs a _site built first though -update: _site +update: _site critical # Builds _site _site: - yarn build + bundle exec jekyll build --incremental -dev: - yarn dev +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 test: _site ## Runs rudimentary tests @test -f _site/vim.html diff --git a/_config.yml b/_config.yml index 499ea866f..f931eb28a 100644 --- a/_config.yml +++ b/_config.yml @@ -9,23 +9,21 @@ plugins: - jekyll-github-metadata exclude: - - .babelrc - - .cache - - CNAME + - Makefile + - README.md - CONTRIBUTING.md - - docker_compose.yml - - Dockerfile - Gemfile - Gemfile.lock - - Makefile - - node_modules - - package.json - - package-lock.json - - README.md + - CNAME - vendor - - webpack.config.js - - yarn-error.log + - package.json + - .babelrc - yarn.lock + - package-lock.json + - webpack.config.js + - node_modules + - Dockerfile + - docker_compose.yml # Markdown diff --git a/_includes/2017/critical/critical-home.css b/_includes/2017/critical/critical-home.css deleted file mode 100644 index 5b114b574..000000000 --- a/_includes/2017/critical/critical-home.css +++ /dev/null @@ -1,3 +0,0 @@ -*,: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 deleted file mode 100644 index ccef97024..000000000 --- a/_includes/2017/critical/critical-sheet.css +++ /dev/null @@ -1,3 +0,0 @@ -*,: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 3d02adbea..9a95fcaa0 100644 --- a/_includes/2017/critical/critical.js +++ b/_includes/2017/critical/critical.js @@ -1,15 +1 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;ct.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 new file mode 100644 index 000000000..74b1d18a6 --- /dev/null +++ b/_includes/2017/critical/sheet.css @@ -0,0 +1 @@ +*,::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 038762af7..947185b6c 100644 --- a/_includes/2017/foot.html +++ b/_includes/2017/foot.html @@ -1,3 +1,5 @@ + + {% for lang in page.prism_languages %}{% endfor %} diff --git a/_includes/2017/head.html b/_includes/2017/head.html index a5b05d464..12ee9ce3d 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 new file mode 100644 index 000000000..1099f465c --- /dev/null +++ b/_js/app.js @@ -0,0 +1,7 @@ +// 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/_parcel/behaviors/anchors.js b/_js/behaviors/anchors.js similarity index 93% rename from _parcel/behaviors/anchors.js rename to _js/behaviors/anchors.js index efe8f7ca4..025b5b14e 100644 --- a/_parcel/behaviors/anchors.js +++ b/_js/behaviors/anchors.js @@ -9,7 +9,7 @@ const DEFAULTS = { // text of anchor text: '#', // append before or after innerText? - shouldAppend: false + shouldAppend: false, } /* @@ -19,9 +19,7 @@ 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/_parcel/behaviors/dismiss.js b/_js/behaviors/dismiss.js similarity index 94% rename from _parcel/behaviors/dismiss.js rename to _js/behaviors/dismiss.js index 8dba8cd44..676db0f11 100644 --- a/_parcel/behaviors/dismiss.js +++ b/_js/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/_parcel/behaviors/dismissable.js b/_js/behaviors/dismissable.js similarity index 100% rename from _parcel/behaviors/dismissable.js rename to _js/behaviors/dismissable.js diff --git a/_parcel/behaviors/disqus.js b/_js/behaviors/disqus.js similarity index 100% rename from _parcel/behaviors/disqus.js rename to _js/behaviors/disqus.js diff --git a/_parcel/behaviors/h3-section-list.js b/_js/behaviors/h3-section-list.js similarity index 87% rename from _parcel/behaviors/h3-section-list.js rename to _js/behaviors/h3-section-list.js index 9a6bd5598..45ba06d16 100644 --- a/_parcel/behaviors/h3-section-list.js +++ b/_js/behaviors/h3-section-list.js @@ -1,6 +1,6 @@ /* eslint-disable no-new */ -import Isotope from 'isotope-layout' +import Isotope from 'isotope-layout/dist/isotope.pkgd.js' 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/_parcel/behaviors/main-body.js b/_js/behaviors/main-body.js similarity index 100% rename from _parcel/behaviors/main-body.js rename to _js/behaviors/main-body.js diff --git a/_parcel/behaviors/no-preview.js b/_js/behaviors/no-preview.js similarity index 100% rename from _parcel/behaviors/no-preview.js rename to _js/behaviors/no-preview.js diff --git a/_parcel/behaviors/search-form.js b/_js/behaviors/search-form.js similarity index 91% rename from _parcel/behaviors/search-form.js rename to _js/behaviors/search-form.js index 2cf243516..c0091bf24 100644 --- a/_parcel/behaviors/search-form.js +++ b/_js/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/_parcel/behaviors/search-input.js b/_js/behaviors/search-input.js similarity index 88% rename from _parcel/behaviors/search-input.js rename to _js/behaviors/search-input.js index ae17e0ac7..0162a2903 100644 --- a/_parcel/behaviors/search-input.js +++ b/_js/behaviors/search-input.js @@ -17,8 +17,6 @@ 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/_parcel/behaviors/searchable-header.js b/_js/behaviors/searchable-header.js similarity index 70% rename from _parcel/behaviors/searchable-header.js rename to _js/behaviors/searchable-header.js index b569921dc..a9947944b 100644 --- a/_parcel/behaviors/searchable-header.js +++ b/_js/behaviors/searchable-header.js @@ -10,12 +10,11 @@ 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/_parcel/behaviors/searchable-item.js b/_js/behaviors/searchable-item.js similarity index 100% rename from _parcel/behaviors/searchable-item.js rename to _js/behaviors/searchable-item.js diff --git a/_parcel/critical.js b/_js/critical.js similarity index 96% rename from _parcel/critical.js rename to _js/critical.js index b92f80be7..d949e5e85 100644 --- a/_parcel/critical.js +++ b/_js/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/__tests__/qs.test.js b/_js/helpers/__tests__/qs.test.js new file mode 100644 index 000000000..e71495c32 --- /dev/null +++ b/_js/helpers/__tests__/qs.test.js @@ -0,0 +1,21 @@ +/* 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/_parcel/helpers/data.js b/_js/helpers/data.js similarity index 74% rename from _parcel/helpers/data.js rename to _js/helpers/data.js index fddc4073a..2e74e4285 100644 --- a/_parcel/helpers/data.js +++ b/_js/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/_parcel/helpers/dismiss.js b/_js/helpers/dismiss.js similarity index 87% rename from _parcel/helpers/dismiss.js rename to _js/helpers/dismiss.js index 2d8b1a207..b629d2b71 100644 --- a/_parcel/helpers/dismiss.js +++ b/_js/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/_parcel/helpers/dom.js b/_js/helpers/dom.js similarity index 55% rename from _parcel/helpers/dom.js rename to _js/helpers/dom.js index 723c41fc5..bf94941cb 100644 --- a/_parcel/helpers/dom.js +++ b/_js/helpers/dom.js @@ -4,35 +4,33 @@ 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) } @@ -40,8 +38,9 @@ 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)) } /** @@ -53,9 +52,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/_parcel/helpers/inject_disqus.js b/_js/helpers/inject_disqus.js similarity index 81% rename from _parcel/helpers/inject_disqus.js rename to _js/helpers/inject_disqus.js index 5fd742504..886b15faa 100644 --- a/_parcel/helpers/inject_disqus.js +++ b/_js/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/_parcel/helpers/noop.js b/_js/helpers/noop.js similarity index 100% rename from _parcel/helpers/noop.js rename to _js/helpers/noop.js diff --git a/_parcel/helpers/permutate.js b/_js/helpers/permutate.js similarity index 79% rename from _parcel/helpers/permutate.js rename to _js/helpers/permutate.js index 2bbb4e9ca..99918d7a6 100644 --- a/_parcel/helpers/permutate.js +++ b/_js/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,11 +62,10 @@ 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/_parcel/helpers/preview.js b/_js/helpers/preview.js similarity index 79% rename from _parcel/helpers/preview.js rename to _js/helpers/preview.js index 1c1a49eff..670c09c68 100644 --- a/_parcel/helpers/preview.js +++ b/_js/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/_parcel/helpers/qs.js b/_js/helpers/qs.js similarity index 67% rename from _parcel/helpers/qs.js rename to _js/helpers/qs.js index e2a2fdc8a..c87edee8a 100644 --- a/_parcel/helpers/qs.js +++ b/_js/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/_parcel/helpers/search.js b/_js/helpers/search.js similarity index 66% rename from _parcel/helpers/search.js rename to _js/helpers/search.js index db6548664..914b6ef94 100644 --- a/_parcel/helpers/search.js +++ b/_js/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/_parcel/helpers/store.js b/_js/helpers/store.js similarity index 89% rename from _parcel/helpers/store.js rename to _js/helpers/store.js index a2f4ad652..8da6af718 100644 --- a/_parcel/helpers/store.js +++ b/_js/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/_parcel/initializers/onmount.js b/_js/initializers/onmount.js similarity index 73% rename from _parcel/initializers/onmount.js rename to _js/initializers/onmount.js index 26958618a..f015e59eb 100644 --- a/_parcel/initializers/onmount.js +++ b/_js/initializers/onmount.js @@ -6,7 +6,5 @@ import onmount from 'onmount' */ ready(() => { - setTimeout(() => { - onmount() - }) + setTimeout(() => { onmount() }) }) diff --git a/_parcel/wrapify/__tests__/__snapshots__/index.test.js.snap b/_js/wrapify/__tests__/__snapshots__/index.test.js.snap similarity index 100% rename from _parcel/wrapify/__tests__/__snapshots__/index.test.js.snap rename to _js/wrapify/__tests__/__snapshots__/index.test.js.snap diff --git a/_js/wrapify/__tests__/index.test.js b/_js/wrapify/__tests__/index.test.js new file mode 100644 index 000000000..1b51f359d --- /dev/null +++ b/_js/wrapify/__tests__/index.test.js @@ -0,0 +1,63 @@ +/* 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/wrapify/index.js b/_js/wrapify/index.js similarity index 77% rename from _parcel/wrapify/index.js rename to _js/wrapify/index.js index 0af5fbaf1..e2b93f589 100644 --- a/_parcel/wrapify/index.js +++ b/_js/wrapify/index.js @@ -1,12 +1,6 @@ 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. @@ -15,16 +9,14 @@ import { * @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) }) }) } @@ -41,15 +33,14 @@ 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': '' + }) }) } @@ -66,7 +57,7 @@ function wrapifyH2(root) { * @private */ -function wrapifyH3(root) { +function wrapifyH3 (root) { return groupify(root, { tag: 'h3', wrapperFn: () => createDiv({ class: 'h3-section' }), @@ -80,27 +71,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/_parcel/_base.scss b/_parcel/_base.scss deleted file mode 100644 index daebb4d5d..000000000 --- a/_parcel/_base.scss +++ /dev/null @@ -1,32 +0,0 @@ -// 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 deleted file mode 100644 index c19fd887b..000000000 --- a/_parcel/_utils.scss +++ /dev/null @@ -1,12 +0,0 @@ -// 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 deleted file mode 100644 index 24a50911c..000000000 --- a/_parcel/app.js +++ /dev/null @@ -1,30 +0,0 @@ -// 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/_parcel/critical-home.scss b/_parcel/critical-home.scss deleted file mode 100644 index c97e2bb79..000000000 --- a/_parcel/critical-home.scss +++ /dev/null @@ -1,16 +0,0 @@ -@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 deleted file mode 100644 index d8fab1425..000000000 --- a/_parcel/critical-sheet.scss +++ /dev/null @@ -1,21 +0,0 @@ -@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/_parcel/initializers/prism.js b/_parcel/initializers/prism.js deleted file mode 100644 index b32e140f8..000000000 --- a/_parcel/initializers/prism.js +++ /dev/null @@ -1 +0,0 @@ -window.Prism = require('prismjs') diff --git a/_parcel/wrapify/__tests__/index.test.js b/_parcel/wrapify/__tests__/index.test.js deleted file mode 100644 index 019161994..000000000 --- a/_parcel/wrapify/__tests__/index.test.js +++ /dev/null @@ -1,88 +0,0 @@ -/* 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/_sass/2017/components/announcements-item.scss b/_sass/2017/components/announcements-item.scss index f1a74dd9e..108eb0730 100644 --- a/_sass/2017/components/announcements-item.scss +++ b/_sass/2017/components/announcements-item.scss @@ -43,7 +43,6 @@ margin: 0; padding: 0; cursor: pointer; - background: transparent; &:hover, &:focus { diff --git a/_sass/2017/style.scss b/_sass/2017/style.scss index c69fcde89..fe6454134 100644 --- a/_sass/2017/style.scss +++ b/_sass/2017/style.scss @@ -1,6 +1,4 @@ -// Generated by parcel -@import '../../assets/packed/app.css'; - +@import '../vendor/sanitize.css/sanitize'; @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 cfa03c10d..3c21f42cc 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 new file mode 100644 index 000000000..345b80ffe --- /dev/null +++ b/_support/critical.js @@ -0,0 +1,45 @@ +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 new file mode 100644 index 000000000..c11d8376f --- /dev/null +++ b/_support/webpack.config.js @@ -0,0 +1,73 @@ +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 new file mode 100644 index 000000000..e32faf61b --- /dev/null +++ b/_support/webpack.critical.js @@ -0,0 +1,28 @@ +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 deleted file mode 100644 index 815dbef27..000000000 --- a/assets/packed/app.css +++ /dev/null @@ -1,3 +0,0 @@ -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 4958bc441..738692192 100644 --- a/assets/packed/app.js +++ b/assets/packed/app.js @@ -1,127 +1,42 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;ct.length)return;if(!(A instanceof r)){var S=1;if(y&&x!=n.tail.prev){h.lastIndex=w;var $=h.exec(t);if(!$)break;var _=$.index+(v&&$[1]?$[1].length:0),j=$.index+$[0].length,E=w;for(E+=x.value.length;_>=E;)x=x.next,E+=x.value.length;if(E-=x.value.length,w=E,x.value instanceof r)continue;for(var C=x;C!==n.tail&&(E1&&e(t,n,s,x.prev,w,!0,d+","+f),c)break}else if(c)break}}}}}(e,u,t,u.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(u)},hooks:{all:{},add:function(e,t){var n=a.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=a.hooks.all[e];if(n&&n.length)for(var r,s=0;r=n[s++];)r(t)}},Token:r};function r(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function i(e,t,n){var a=t.next,r={value:n,prev:t,next:a};return t.next=r,a.prev=r,e.length++,r}function l(e,t,n){for(var a=t.next,r=0;r"+s.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,s=n.code,i=n.immediateClose;e.postMessage(a.highlight(s,a.languages[r],r)),i&&e.close()},!1),a):a;var o=a.util.currentScript();function u(){a.manual||a.highlightAll()}if(o&&(a.filename=o.src,o.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var c=document.readyState;"loading"===c||"interactive"===c&&o&&o.defer?document.addEventListener("DOMContentLoaded",u):window.requestAnimationFrame?window.requestAnimationFrame(u):window.setTimeout(u,16)}return a}(t);"undefined"!=typeof module&&module.exports&&(module.exports=n),void 0!==e&&(e.Prism=n),n.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!)*\]\s*)?>/i,greedy:!0},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var a={};a["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[t]},a.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:a}};r["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]};var s={};s[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:r},n.languages.insertBefore("markup","cdata",s)}}),n.languages.xml=n.languages.extend("markup",{}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.markup.tag.addInlined("script","javascript"),n.languages.js=n.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var a,r=e.getAttribute("data-src"),s=e,i=/\blang(?:uage)?-([\w-]+)\b/i;s&&!i.test(s.className);)s=s.parentNode;if(s&&(a=(e.className.match(i)||[,""])[1]),!a){var l=(r.match(/\.(\w+)$/)||[,""])[1];a=t[l]||l}var o=document.createElement("code");o.className="language-"+a,e.textContent="",o.textContent="Loading…",e.appendChild(o);var u=new XMLHttpRequest;u.open("GET",r,!0),u.onreadystatechange=function(){4==u.readyState&&(u.status<400&&u.responseText?(o.textContent=u.responseText,n.highlightElement(o),e.setAttribute("data-src-loaded","")):u.status>=400?o.textContent="✖ Error "+u.status+" while fetching file: "+u.statusText:o.textContent="✖ Error: File does not exist or is empty")},u.send(null)}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()})); -},{}],"FNB3":[function(require,module,exports) { -!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var e,t=function(){if(void 0===e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" 
 ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e},n=0;Prism.hooks.add("before-sanity-check",function(e){var t=e.element.parentNode,n=t&&t.getAttribute("data-line");if(t&&n&&/pre/i.test(t.nodeName)){var r=0;i(".line-highlight",t).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(e.code.slice(-r))&&(e.code=e.code.slice(0,-r))}}),Prism.hooks.add("complete",function e(t){var i=t.element.parentNode,o=i&&i.getAttribute("data-line");if(i&&o&&/pre/i.test(i.nodeName)){clearTimeout(n);var s=Prism.plugins.lineNumbers,u=t.plugins&&t.plugins.lineNumbers;r(i,"line-numbers")&&s&&!u?Prism.hooks.add("line-numbers",e):(a(i,o)(),n=setTimeout(l,1))}}),window.addEventListener("hashchange",l),window.addEventListener("resize",function(){var e=[];i("pre[data-line]").forEach(function(t){e.push(a(t))}),e.forEach(o)})}function i(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function r(e,t){return t=" "+t+" ",-1<(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)}function o(e){e()}function a(e,n,i){var a=(n="string"==typeof n?n:e.getAttribute("data-line")).replace(/\s+/g,"").split(","),l=+e.getAttribute("data-line-offset")||0,s=(t()?parseInt:parseFloat)(getComputedStyle(e).lineHeight),u=r(e,"line-numbers"),d=u?e:e.querySelector("code")||e,c=[];return a.forEach(function(t){var n=t.split("-"),r=+n[0],o=+n[1]||r,a=e.querySelector('.line-highlight[data-range="'+t+'"]')||document.createElement("div");if(c.push(function(){a.setAttribute("aria-hidden","true"),a.setAttribute("data-range",t),a.className=(i||"")+" line-highlight"}),u&&Prism.plugins.lineNumbers){var f=Prism.plugins.lineNumbers.getLine(e,r),h=Prism.plugins.lineNumbers.getLine(e,o);if(f){var p=f.offsetTop+"px";c.push(function(){a.style.top=p})}if(h){var m=h.offsetTop-f.offsetTop+h.offsetHeight+"px";c.push(function(){a.style.height=m})}}else c.push(function(){a.setAttribute("data-start",r),r=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,t.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,t.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i,t.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,t.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},t.languages.jsx.tag),t.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:t.languages.jsx},alias:"language-javascript"}},t.languages.jsx.tag);var e=function(t){return t?"string"==typeof t?t:"string"==typeof t.content?t.content:t.content.map(e).join(""):""},a=function(n){for(var s=[],g=0;g"===i.content[i.content.length-1].content||s.push({tagName:e(i.content[0].content[1]),openedBraces:0}):0>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\2)[^\\])*\2/,lookbehind:!0,greedy:!0,inside:n}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}};for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=n.variable[1].inside,s=0;s=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; -},{}],"eQGU":[function(require,module,exports) { -!function(s){var e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+e.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+e.source+")*?(?=\\s*\\{)"),string:{pattern:e,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:t.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:s.languages.css}},alias:"language-css"}},t.tag))}(Prism); -},{}],"i6Tx":[function(require,module,exports) { -Prism.languages.elixir={comment:/#.*/m,regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+\??:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},Prism.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:Prism.languages.elixir}}}}); -},{}],"aTnL":[function(require,module,exports) { -!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}],e.languages.rb=e.languages.ruby}(Prism); -},{}],"Pzu0":[function(require,module,exports) { -window.Prism=require("prismjs"); -},{"prismjs":"hKAx"}],"a8gM":[function(require,module,exports) { -function e(e){if(t())return e();document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",function(){t()&&e()})}function t(){return"complete"===document.readyState||"interactive"===document.readyState}module.exports=e; -},{}],"yMxf":[function(require,module,exports) { -var define; -var t;!function(e,o){"function"==typeof t&&t.amd?t(o):"object"==typeof exports?module.exports=o():window.jQuery?window.jQuery.onmount=o():e.onmount=o()}(this,function(t){var e,o,n,i,r=0,s=0;function c(t,e,n,i){if("object"==typeof n&&(i=n,n=void 0),0===arguments.length||"function"==typeof(f=t)&&f.fn&&f.noConflict||"object"==typeof(s=t)&&s.target)c.poll();else if(1===arguments.length)c.poll(t);else{var r=new u(t,e,n,i);o.push(r),r.register()}var s,f;return this}function u(t,e,o,n){this.id="b"+r++,this.init=e,this.exit=o,this.selector=c.selectify(t),this.loaded=[],this.key="__onmount:"+r,this.detectMutate=n&&n.detectMutate}function f(t,e){var o=t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector;if(c.$)return c.$(t).is(e);if(o)return o.call(t,e);if(t.parentNode){for(var n=t.parentNode.querySelectorAll(e),i=n.length;i--;0)if(n[i]===t)return!0;return!1}}function l(t,e){var o,n=t.length;if(n===+n)for(o=0;o-1:t.indexOf(e)>-1}(o,t))return this.doExit(t,e)}else if(!function(t){for(;t;){if(t===document.documentElement)return!0;t=t.parentElement}}(t))return this.doExit(t,e)},u.prototype.doExit=function(t,e){void 0===e&&(e=this.loaded.indexOf(t)),this.loaded[e]=void 0,this.exit&&!1!==this.exit.call(t,t[this.key])&&(c.debug&&i("exit",this.selector,t),delete t[this.key])};var d={enter:"background-color:#dfd;font-weight:bold;color:#141",exit:"background-color:#fdd;font-weight:bold;color:#411"};return i=~navigator.userAgent.indexOf("Mozilla")?function(t,e,o){console.log("%c %s ",d[t],e,o)}:function(t,e,o){console.log("(onmount)",t,e)},c.reset(),c}); -},{}],"ijeW":[function(require,module,exports) { -"use strict";var e=t(require("dom101/ready")),u=t(require("onmount"));function t(e){return e&&e.__esModule?e:{default:e}}(0,e.default)(function(){setTimeout(function(){(0,u.default)()})}); -},{"dom101/ready":"a8gM","onmount":"yMxf"}],"koK4":[function(require,module,exports) { -function i(i,e){i.firstChild?i.insertBefore(e,i.firstChild):i.appendChild(e)}module.exports=i; -},{}],"knoa":[function(require,module,exports) { -"use strict";var t=r(require("onmount")),e=r(require("dom101/prepend"));function r(t){return t&&t.__esModule?t:{default:t}}function n(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=a(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return u=t.done,t},e:function(t){l=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(l)throw i}}}}function a(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r