diff --git a/.gitattributes b/.gitattributes index a12b5fb4e512..4d536e4abe56 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,10 @@ -assets/fonts/* linguist-vendored -assets/js/main.min.js linguist-vendored -assets/js/lunr/* linguist-vendored -assets/js/plugins/* linguist-vendored -assets/js/vendor/* linguist-vendored +assets/fonts/* linguist-vendored +assets/js/main.min.js linguist-vendored +assets/js/lunr/* linguist-vendored +assets/js/plugins/* linguist-vendored +assets/js/vendor/* linguist-vendored _sass/minimal-mistakes/vendor/* linguist-vendored +CHANGELOG.md text merge=union +docs/_docs/18-history.md text merge=union + +*.md text diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5b9b83063bee..847b69e8c5a9 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,11 +1,8 @@ # Contributing -Having trouble working with the theme? Found a typo in the documentation? -Interested in adding a feature or [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? -Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) -or [pull request](https://help.github.com/articles/using-pull-requests/). -If this is your first pull request, it may be helpful to read up on the -[GitHub Flow](https://guides.github.com/introduction/flow/) first. +Found a typo in the documentation or interested in [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first. + +For help with using the theme or general Jekyll support questions, please use the [Jekyll Talk forums](https://talk.jekyllrb.com/). Minimal Mistakes has been designed as a base for you to customize and fit your site's unique needs. Please keep this in mind when requesting features and/or diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 63a44d864661..000000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -name: "Bug Report" -about: "Is something not working as expected?" ---- - -<!-- - Before opening a new issue please: - - - Verify you have the latest versions of Jekyll and Minimal Mistakes - installed by running `bundle update`. - - Thoroughly read the theme's documentation at - https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ - - Search all issues at https://github.com/mmistakes/minimal-mistakes/issues - for solutions and to avoid duplication. - - Ask for help at http://talk.jekyllrb.com/ - - After exhausting these suggestions use the format below. ---> - -## Environment - -<!-- - Please include theme version, Jekyll version, public git repository, whether - you are hosting with GitHub Pages, and the operating system you tested with. - - Issues without a link to a public repository or ZIP file will likely go ignored. - Being able to see your actual files is necessary to troubleshoot, as most - issues stem from invalid/missing YAML Front Matter, a mis-configured _config.sys - file, or problematic site content. ---> - -- Minimal Mistakes version: -- Ruby gem or remote theme version: -- Jekyll version: -- Git repository URL: -- GitHub Pages hosted (if yes provide URL to site): -- Operating system: - -## Expected behavior - -<!-- - What is it you expected to happen? This should be a description of how the - functionality you tried to use is supposed to work. ---> - -## Steps to reproduce the behavior - -<!-- - Describe the steps you took for this problem to exist. Such as: you installed - the theme, customized _config.yml, added your own posts, and started up a - Jekyll server locally. - - If an error occurred on GitHub Pages when pushing, please test a local version - following these setup instructions: - https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/ - - Then provide a complete log by running `bundle exec jekyll build --trace --verbose` - and include this output in the filed issue. - - Screenshots can also be included if they help illustrate a behavior. ---> - -## Other - -<!-- - NOTE: Please provide a code repository, gist, code snippet, sample files, - screenshots, or anything else you think will aid in reproducing the issue. ---> diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000000..ac8b933ce42a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,94 @@ +name: Bug Report +description: There is something wrong with the theme. 99% of the time you should select Support below. +body: + - type: markdown + attributes: + value: | + Before opening a new issue please: + + - Verify you have the latest versions of Jekyll and Minimal Mistakes + installed by running `bundle update`. + - Thoroughly read the theme's documentation at + https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ + - Search all issues at https://github.com/mmistakes/minimal-mistakes/issues + for solutions and to avoid duplication. + - Ask for help at https://talk.jekyllrb.com/ + + If none of the above solved your problem, you can continue below. + + - type: textarea + id: environment + attributes: + label: Theme version and system environment + description: | + Please include theme version, Jekyll version, public git repository, whether + you are hosting with GitHub Pages, and the operating system you tested with. + + Issues without a link to a public repository or ZIP file will likely go ignored. + Being able to see your actual files is necessary to troubleshoot, as most + issues stem from invalid/missing YAML Front Matter, a mis-configured _config.yml + file, or problematic site content. + value: |- + - Minimal Mistakes version: + - Ruby gem or remote theme version: + - Jekyll version: + - Git repository URL: + - URL to the page with the problem: + - Operating system: + - Browser version: + validations: + required: true + + - type: textarea + id: what-happened + attributes: + label: What happened? + description: | + Describe the problem **in detail**. For example: + + - What is missing? + - What error do you see? Attach the error log if available. + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: | + Please describe the expected behavior and the actual result you got. + placeholder: > + What is it you expected to happen? This should be a description of how the + functionality you tried to use is supposed to work. + validations: + required: true + + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce the behavior + description: | + Describe the steps you took for this problem to come up. Such as: you installed + the theme, customized _config.yml, added your own posts, and started up a + Jekyll server locally. + + If an error occurred on GitHub Pages when pushing, please test a local version + following these setup instructions: + https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/ + + Then provide a complete log by running `bundle exec jekyll build --trace --verbose` + and include this output in the filed issue. + + Screenshots can also be included if they help illustrate a behavior. + validations: + required: true + + - type: textarea + id: other + attributes: + label: Other + description: | + Please provide a code repository, gist, code snippet, sample files, + screenshots, or anything else you think will aid in reproducing the issue. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000000..e02be34d82d0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Support + url: https://github.com/mmistakes/minimal-mistakes/discussions + about: Please post your support questions in the Discussions section. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md deleted file mode 100644 index 25f111fd7a23..000000000000 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: "Documentation" -about: "Found a typo or something that needs clarification?" ---- - -<!-- Thanks for taking the time to open an issue and help make the docs better --> - -## Motivation - -<!-- Why should we update our docs? --> - -<!-- What should we do instead? --> - -## Suggestion - -<!-- What should we do instead? --> \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 000000000000..65a03152deae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,25 @@ +name: Documentation +description: Found a typo or something that needs clarification? +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to open an issue and help make the docs better. + + - type: textarea + id: motivation + attributes: + label: Motivation + description: | + Why should we update our docs? + validations: + required: true + + - type: textarea + id: suggestion + attributes: + label: Suggestion + description: | + What should we do instead? + validations: + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 8477f6364487..000000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: "Enhancement / Feature Request" -about: "What would make this theme better?" ---- - -<!-- - Before opening a new issue please search all issues at - https://github.com/mmistakes/minimal-mistakes/issues to avoid duplication. ---> - -## Summary - -<!-- - A short explanation of the enhancement or feature. ---> - -## Motivation - -<!-- - Why do you want to see this feature in the theme? - What use cases does it support? - - NOTE: This theme has been designed as a base for you to customize and fit - your site's unique needs. If a feature is not something most people will use, - it likely won't be considered. When in doubt ask. ---> - -## Drawbacks - -<!-- - Why should this enhancement or feature **not** be considered? ---> \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/support.md b/.github/ISSUE_TEMPLATE/support.md deleted file mode 100644 index c8f0d21a4676..000000000000 --- a/.github/ISSUE_TEMPLATE/support.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: "Question" -about: "Having trouble working with the theme?" ---- - -<!-- - Before opening a new issue please: - - - Verify you have the latest versions of Jekyll and Minimal Mistakes - installed by running `bundle update`. - - Thoroughly read the theme's documentation at - https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ - - Search all issues at https://github.com/mmistakes/minimal-mistakes/issues - for solutions and to avoid duplication. - - Ask for help at http://talk.jekyllrb.com/ - - After exhausting these suggestions ask your question below. - - NOTE: Please provide a code repository, gist, code snippet, sample files, or - screenshots to triage your issue. ---> - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index df3d98d9c034..3271858f6dae 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -23,4 +23,8 @@ <!-- Is this related to any GitHub issue(s)? ---> \ No newline at end of file +--> + +<!-- + Please confirm that you want to submit this Pull Request to Minimal Mistakes, the free Jekyll theme by Michael Rose, by deleting this comment block. +--> diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 3aa2e79c6e77..000000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - "Status: Accepted" - - "Status: Under Consideration" -# Label to use when marking an issue as stale -staleLabel: "Status: Stale" -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: | - This issue has been automatically marked as stale because it has not had recent activity. - - If this is a **bug** and you can still reproduce this error on the `master` branch, please reply with any additional information you have about it in order to keep the issue open. - - If this is a feature request, please consider whether it can be accomplished in another way. If it cannot, please elaborate on why it is core to this project and why you feel more than 80% of users would find this beneficial. - - This issue will automatically be closed in 7 days if no further activity occurs. Thank you for all your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/.github/workflows/bad-pr.yml b/.github/workflows/bad-pr.yml new file mode 100644 index 000000000000..9c9c3647ad08 --- /dev/null +++ b/.github/workflows/bad-pr.yml @@ -0,0 +1,35 @@ +name: Cleanup bad PR + +on: + pull_request_target: + types: [opened, reopened] + +permissions: + contents: read + +jobs: + close-pr: + permissions: + pull-requests: write + runs-on: ubuntu-latest + if: "contains(github.event.pull_request.body, 'by deleting this comment block') || github.event.pull_request.body == ''" + steps: + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: 'Type: Invalid' + - uses: actions-ecosystem/action-add-labels@v1 + with: + labels: 'Type: Spam' + - uses: superbrothers/close-pull-request@v3 + with: + # Optional. Post an issue comment just before closing a pull request. + comment: | + **You have created a Pull Request to the wrong repository.** This is the repository for [Minimal Mistakes][1], the free Jekyll theme. See [GitHub Docs: About pull requests][2] if you need help. + + [1]: https://mmistakes.github.io/minimal-mistakes/ + [2]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests + - uses: sudo-bot/action-pull-request-lock@v1.0.5 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + number: ${{ github.event.pull_request.number }} + lock-reason: spam diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000000..733ad0d6668c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: build + +on: + push: + branches: + - master + workflow_dispatch: {} + repository_dispatch: {} + +jobs: + build: + if: github.repository == 'mmistakes/minimal-mistakes' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.2' + - name: Setup cache for Bundler + id: cache + uses: actions/cache@v4 + with: + path: | + docs/Gemfile.lock + docs/vendor/bundle + key: ${{ runner.os }}-bundler-${{ hashFiles('docs/Gemfile') }} + restore-keys: | + ${{ runner.os }}-bundler- + + - name: Install - Bundler + env: + MAKE: make -j2 + working-directory: docs/ + run: | + bundle config set path vendor/bundle + bundle install --jobs=4 --retry=3 + bundle clean + + - name: Update Algolia index + working-directory: docs/ + run: bundle exec jekyll algolia push + env: + ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }} + continue-on-error: true diff --git a/.gitignore b/.gitignore index 5c4866d719f9..406061feb7db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,32 @@ -*.gem +# Vim +*~ +*.sw[p_] + +# IntelliJ IDEA +*.idea + +# Sublime Text *.sublime-project *.sublime-workspace + +# Ruby Gem +*.gem .bundle +Gemfile.lock +**/vendor/bundle + +# Node.js and NPM +node_modules +npm-debug.log* +package-lock.json +codekit-config.json + +# macOS .DS_Store + +# Jekyll generated files +.jekyll-cache .jekyll-metadata .sass-cache _asset_bundler_cache _site -codekit-config.json -example/_site -Gemfile.lock -node_modules -npm-debug.log* \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9539617db799..fff61828b3fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,474 @@ +# Changelog + +## Unreleased + +### Enhancements + +- Add RTL Support. [#4886](https://github.com/mmistakes/minimal-mistakes/pull/4886) +- Add missing Polish translation. [#4890](https://github.com/mmistakes/minimal-mistakes/pull/4890) +- Rewrite most directions with [CSS logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values). +- Remove unnecessary "type" attribute (#4956) +- The "if" means the default is never used (#4955) +- For pages without a title, show the site title only once (#4959) +- Use `documents-collection.html` partial in `home` layout. +- Add Bulgarian translation. [#5003](https://github.com/mmistakes/minimal-mistakes/pull/5003) +- Add provider and comments info to `single.html` layout for non-production. (#5068) +- Tweak contrast skin $primary-color to adhere to WCAG guidelines. (#5126) + +### Bug Fixes + +- Replace a redirected link to MadeMistakes in footer. [#4882](https://github.com/mmistakes/minimal-mistakes/pull/4882) +- Fix wrong float direction for `feature_row` with `type="right"`. [#4061](https://github.com/mmistakes/minimal-mistakes/issues/4061) +- Fix reset stylesheet overruling `$doc-font-size`. [#4983](https://github.com/mmistakes/minimal-mistakes/issues/4983) +- Fix JavaScript null error on home and splash layouts. [#4938](https://github.com/mmistakes/minimal-mistakes/issues/4938), [#4939](https://github.com/mmistakes/minimal-mistakes/pull/4939) +- Fix bad <figure> HTML if "alt" contains quotes. +- Fix extra newline generated in `_includes/post_pagination.html`. +- Hide hidden links & remove the overlay when one is clicked. [#5042](https://github.com/mmistakes/minimal-mistakes/pull/5042) +- Fix typo in "Configuration" (#5106) + +### Documentation & Maintenance + +- Automatically update Algolia search index with GitHub Actions. + +## [4.26.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2) + +### Enhancements + +- Add Czech localization. [#4866](https://github.com/mmistakes/minimal-mistakes/pull/4866) +- Allow overriding HTML `lang` attribute on a per-page basis. [#4862](https://github.com/mmistakes/minimal-mistakes/pull/4862) + +### Bug Fixes + +- Figure helper breaks when using code markup in caption with `popup=true`. [#4841](https://github.com/mmistakes/minimal-mistakes/issues/4841) + +## [4.26.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.1) + +### Bug Fixes + +- Disable copy button on invalid syntax highlighting blocks to avoid positioning issues. +- Fix typo for `fa-dribbble` in `_utilities.scss`. +- Restrict "auto scroll sticky ToC to content" feature to Chromium browsers for now. [#4826](https://github.com/mmistakes/minimal-mistakes/issues/4826) + +### Documentation & Maintenance + +- Rewrite social icons SCSS with a loop. + +### Enhancements + +- Change the icon of a copy button into a tick for 1.5 seconds on successful copy. + +## [4.26.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0) + +### Bug Fixes + +- Fix an unclosed `<p>` tag in `page__hero.html`, near `page.header.actions`. +- Remove overlay and revert X to hamburger icon when popup disappears. [#3958](https://github.com/mmistakes/minimal-mistakes/pull/3958) +- Fix SEO title when it contains a vertical bar. [#3094](https://github.com/mmistakes/minimal-mistakes/pull/3094) [#3113](https://github.com/mmistakes/minimal-mistakes/pull/3113) +- Remove "sticky sidebar" JS as it's now completely based on CSS media queries. [#4245](https://github.com/mmistakes/minimal-mistakes/issues/4245) [#4645](https://github.com/mmistakes/minimal-mistakes/pull/4645) + +### Enhancements + +- Add support for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2) 🎉 [#2636](https://github.com/mmistakes/minimal-mistakes/pull/2636) +- Add "copy to clipboard" button for code blocks 🎉 [#2812](https://github.com/mmistakes/minimal-mistakes/pull/2812) +- Auto scroll sticky ToC with content. [#3115](https://github.com/mmistakes/minimal-mistakes/pull/3115) +- Replace "hidden" check in Liquid templates with `where_exp: "item", "item.hidden != true"`. +- Remove deprecated `page.header.cta_url` setting. [#4821](https://github.com/mmistakes/minimal-mistakes/pull/4821) +- Allow multiple nav lists in sidebar. [#2843](https://github.com/mmistakes/minimal-mistakes/pull/2843) +- Add popup parameter to `{% include figure %}` to enable Magnific Popup. [#3119](https://github.com/mmistakes/minimal-mistakes/pull/3119) +- Add target attribute for navigation link. [#3056](https://github.com/mmistakes/minimal-mistakes/pull/3056) +- Split schema to a separate include file. [#3085](https://github.com/mmistakes/minimal-mistakes/pull/3085) +- Cleanup `_includes/seo.html`. + +### Documentation & Maintenance + +- Rewrite skin previews on `05-configuration.md` in Liquid template. +- Remove unused classes from `_layouts/single.html`. +- Migrate npm run scripts to Ruby Rake tasks. +- Add Rake task `version` for updating all hard-coded version numbers from `package.json` all at once. +- Merge `categories` and `tags` layout into `_includes/posts-taxonomy.html`. +- Update Social Sharing links section. [#4066](https://github.com/mmistakes/minimal-mistakes/pull/4066) + +## [4.25.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1) + +### Bug Fixes + +- "You may also enjoy" no longer recommends hidden posts. [#4653](https://github.com/mmistakes/minimal-mistakes/issues/4653) +- Replaced dead link to "Viewport and Media Queries" slides. [#4421](https://github.com/mmistakes/minimal-mistakes/discussions/4421) +- Fix broken `where_exp` in `lunr-store.js` for Jekyll < 4.0. [#4808](https://github.com/mmistakes/minimal-mistakes/issues/4808) + +### Enhancements + +- Add Ukrainian translations. [#4273](https://github.com/mmistakes/minimal-mistakes/pull/4273) +- Add more configuration for Giscus. [#4274](https://github.com/mmistakes/minimal-mistakes/pull/4274) +- Bump jekyll-toc to [v1.2.1](https://github.com/allejo/jekyll-toc/releases/tag/v1.2.1). + +### Documentation & Maintenance + +- Bump shell-quote from 1.7.1 to 1.7.3 [#3692](https://github.com/mmistakes/minimal-mistakes/issues/3692) +- Add `after-content.html` and `before-related.html` includes to ease docs site overrides. +- GitHub Workflows security hardening [#3884](https://github.com/mmistakes/minimal-mistakes/issues/3884) +- Replace Font Awesome v5 search page with v6. +- Try adding an FAQ page. +- Update remote theme reference in Quick-Start Guide to point to 4.25.0. [#4809](https://github.com/mmistakes/minimal-mistakes/issues/4809) + +## [4.25.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.0) + +### Bug Fixes + +- Fix Linkedin social share link [#4754](https://github.com/mmistakes/minimal-mistakes/issues/4754) +- Fix non-English characters being url encoded in breadcrumb [#3819](https://github.com/mmistakes/minimal-mistakes/issues/3819) +- Fix wrong `first_page_path` because of hard-coded `page:num` [#3778](https://github.com/mmistakes/minimal-mistakes/issues/3778) +- Remove JS and other files from search index [#4000](https://github.com/mmistakes/minimal-mistakes/pull/4000) +- Fix unlisted YouTube video embeds in documentation/test sites. [#3649](https://github.com/mmistakes/minimal-mistakes/issues/3649) +- Fix error in Algolia search script when returning a hit that without `html` and `hightlight.html`. [#3101](https://github.com/mmistakes/minimal-mistakes/issues/3101) [#3102](https://github.com/mmistakes/minimal-mistakes/pull/3102) +- Fix inline code style not applied to stylized text. [#3253](https://github.com/mmistakes/minimal-mistakes/pull/3253) +- Fix Keybase icon in author sidebar. [#3221](https://github.com/mmistakes/minimal-mistakes/pull/3221) +- Fix sort order of Staticman comments when data files aren't named alphabetically. [#3184](https://github.com/mmistakes/minimal-mistakes/pull/3184) +- Fix `layout: compress` issue with HTML comment in video include. [#3117](https://github.com/mmistakes/minimal-mistakes/pull/3117) +- Add Magnific Popup class to anchors that only contain an `img` element. [#3111](https://github.com/mmistakes/minimal-mistakes/issues/3111) [#3114](https://github.com/mmistakes/minimal-mistakes/pull/3114) +- Fix heading level of related posts section from `h4` to `h2` to improve accessibility and SEO. [#3064](https://github.com/mmistakes/minimal-mistakes/pull/3064) +- Fix grammar error in German localized UI text string. [#3063](https://github.com/mmistakes/minimal-mistakes/pull/3063) +- Remove site.url from first breadcrumb link. [#3051](https://github.com/mmistakes/minimal-mistakes/pull/3051) + +### Enhancements + +- Add `site.copyright` and `site.copyright_url` config options [#4313](https://github.com/mmistakes/minimal-mistakes/pull/4313) +- Lazy-load InstantSearch scripts and stylesheets [#3691](https://github.com/mmistakes/minimal-mistakes/pull/3691) +- Improve Finnish translations [#4595](https://github.com/mmistakes/minimal-mistakes/pull/4595) +- Remove redundant downcase from \_layouts/categories.html. [#4531](https://github.com/mmistakes/minimal-mistakes/pull/4531) +- Load latest Font Awesome package. [#3765](https://github.com/mmistakes/minimal-mistakes/pull/3765) +- Add missing Polish missing UI text strings. [#3969](https://github.com/mmistakes/minimal-mistakes/pull/3969) +- Update breadcrumbs conditional to enable/disable them via Front Matter on pages using `layout: single`. [#3096](https://github.com/mmistakes/minimal-mistakes/pull/3096) [#3669](https://github.com/mmistakes/minimal-mistakes/pull/3669) +- Remove Internet Explorer 9 upgrade notice. [#3666](https://github.com/mmistakes/minimal-mistakes/pull/3666) +- Add Kiswahili localized UI text strings. [#3489](https://github.com/mmistakes/minimal-mistakes/pull/3489) +- Exclude `main.scss` from Lunr search index. +- Allow `site.pages` to be indexed and searched via Lunr. [#3352](https://github.com/mmistakes/minimal-mistakes/pull/3352) +- Update jQuery to v3.6.0. [#3254](https://github.com/mmistakes/minimal-mistakes/pull/3254) +- Use notice `<a>` colors for blockquotes that have `notice--` classes applied. [#3140](https://github.com/mmistakes/minimal-mistakes/pull/3140) [#3068](https://github.com/mmistakes/minimal-mistakes/issues/3068) +- Add sameAs itemprop to author link. [#3087](https://github.com/mmistakes/minimal-mistakes/pull/3087) +- Update and add missing Brazilian Portuguese translations. [#3204](https://github.com/mmistakes/minimal-mistakes/pull/3204) +- Add optional label attribute for utterances comments. [#3128](https://github.com/mmistakes/minimal-mistakes/pull/3128) +- Add missing Danish translations. [#3095](https://github.com/mmistakes/minimal-mistakes/pull/3095) +- Add ARIA role to search forms. [#3086](https://github.com/mmistakes/minimal-mistakes/pull/3086) +- Add overflow scroll bar to sticky table of contents that are taller than the viewport's height. [#2874](https://github.com/mmistakes/minimal-mistakes/pull/2874) +- Add Microformats markup. [#3052](https://github.com/mmistakes/minimal-mistakes/pull/3052) + +### Documentation & Maintenance + +- Fix links to Font Awesome gallery. [#3599](https://github.com/mmistakes/minimal-mistakes/pull/3599) +- Fix GreedyNav.js attribution link. [#3553](https://github.com/mmistakes/minimal-mistakes/pull/3553) +- Fix typo about loading JavaScript in layout documentation. [#3350](https://github.com/mmistakes/minimal-mistakes/pull/3350) +- Fix documentation typos. [#3232](https://github.com/mmistakes/minimal-mistakes/pull/3232) [#3318](https://github.com/mmistakes/minimal-mistakes/pull/3318) +- Add link to documentation clarifying how to add plugins. [#3181](https://github.com/mmistakes/minimal-mistakes/pull/3181) +- Fix broken documentation link and add Baidu site verification to `_config.yml` files. [#3139](https://github.com/mmistakes/minimal-mistakes/pull/3139) +- Bump path-parse from 1.0.6 to 1.0.7. [#3116](https://github.com/mmistakes/minimal-mistakes/pull/3116) +- Automatically close invalid PRs using GitHub Actions. [#3313](https://github.com/mmistakes/minimal-mistakes/pull/3313) +- Add instructions on how to unminify `main.js` for easier browser debugging. [#3055](https://github.com/mmistakes/minimal-mistakes/pull/3055) +- Consolidate hard-coded version numbers where possible. +- Add Rakefile for automatically syncing CHANGELOG with history and synched them. + +## [4.24.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.24.0) + +### Bug Fixes + +- Fix README text for Gumshoejs license. [#3024](https://github.com/mmistakes/minimal-mistakes/pull/3024) +- Remove `tabindex="-1"` from `input` elements in `search.html` layout to allow them to be accessible by keyboard. [#2982](https://github.com/mmistakes/minimal-mistakes/issues/2982) +- Fix broken sidebar image in sample post. [#3013](https://github.com/mmistakes/minimal-mistakes/issues/3013) +- Fix broken links in Upgrading documentation. [#3004](https://github.com/mmistakes/minimal-mistakes/issues/3004) + +### Enhancements + +- Remove IE9 flexbox fallback. [#3042](https://github.com/mmistakes/minimal-mistakes/pull/3042) +- Remove `h2` from skip links navigation as it is not important for site structure. [#3012](https://github.com/mmistakes/minimal-mistakes/pull/3012) +- Loads Font Awesome asynchronously. [#2967](https://github.com/mmistakes/minimal-mistakes/pull/2967) +- Replace custom search icon SVG with Font Awesome icon. [#2774](https://github.com/mmistakes/minimal-mistakes/pull/2774) +- Adds support for giscus comments. [#3022](https://github.com/mmistakes/minimal-mistakes/pull/3022) + +## [4.23.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.23.0) + +### Enhancements + +- Add Arabic (عربي) localized UI text strings. [#2936](https://github.com/mmistakes/minimal-mistakes/pull/2936) +- Update onchange and uglify-js dependencies. +- Document head and footer `custom.html` includes. [#2815](https://github.com/mmistakes/minimal-mistakes/pull/2815) +- Color notices based on skin colors instead of fixed values. [#2887](https://github.com/mmistakes/minimal-mistakes/pull/2887) +- Add configurable datetime format. [#2844](https://github.com/mmistakes/minimal-mistakes/pull/2844) +- Add Baidu site verification [#2830](https://github.com/mmistakes/minimal-mistakes/pull/2830) +- Add `alt` attribute to site logo. [#2529](https://github.com/mmistakes/minimal-mistakes/issues/2529) [#2824](https://github.com/mmistakes/minimal-mistakes/issues/2824) + +### Bug Fixes + +- Fix menu toggle to properly show close icon when open. +- Fix Jekyll environment note in configuration documentation. [#2912](https://github.com/mmistakes/minimal-mistakes/issues/2912) +- Fix typo in Helpers documentation. [#2940](https://github.com/mmistakes/minimal-mistakes/pull/2940) +- Remove all references to official public Staticman API instance. [#2818](https://github.com/mmistakes/minimal-mistakes/issues/2818) [#2831](https://github.com/mmistakes/minimal-mistakes/pull/2831) +- Remove Google Search CSS. [#2852](https://github.com/mmistakes/minimal-mistakes/issues/2852) [#2855](https://github.com/mmistakes/minimal-mistakes/pull/2855) + +## [4.22.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.22.0) + +### Bug Fixes + +- Remove Google Search script from `404.md`. [#2597](https://github.com/mmistakes/minimal-mistakes/issues/2597) [#2737](https://github.com/mmistakes/minimal-mistakes/pull/2737) [#2789](https://github.com/mmistakes/minimal-mistakes/pull/2789) +- Fix Font Awesome icon color in `contrast`, `dark`, `mint`, `neon`, `plum`, and `sunrise` skins. [#2724](https://github.com/mmistakes/minimal-mistakes/issues/2724) + +### Enhancements + +- Allow custom sorting for collections. [#2723](https://github.com/mmistakes/minimal-mistakes/pull/2723) +- Use `sort_natural` instead of custom Liquid logic to sort tags and categories. [#2756](https://github.com/mmistakes/minimal-mistakes/pull/2756) +- Add configuration option to toggle off RSS feed link in `<head>` and site footer. [#2787](https://github.com/mmistakes/minimal-mistakes/pull/2787) +- Upgrade Lunrjs to 2.3.9 and switch to `relative_url`. [#2805](https://github.com/mmistakes/minimal-mistakes/pull/2805) +- Adds `.webp` to list of supported image extensions for the image popup lightbox. [#2788](https://github.com/mmistakes/minimal-mistakes/pull/2788) +- Add Hebrew localized UI text strings. [#2760](https://github.com/mmistakes/minimal-mistakes/pull/2760) +- Update documentation to include `toc_sticky` parameter's description. [#2741](https://github.com/mmistakes/minimal-mistakes/pull/2741) +- Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731) +- Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734) +- Update allejo/jekyll-toc to v1.1.0, skip headings without an ID. [#2752](https://github.com/mmistakes/minimal-mistakes/pull/2752) +- Allow custom gradient for page header overlay. [#2806](https://github.com/mmistakes/minimal-mistakes/pull/2806) + +## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0) + +### Bug Fixes + +- Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664) +- Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697) +- Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692) +- Fix a small typo in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718) + +### Enhancements + +- Update jQuery to 3.5.1. [#2713](https://github.com/mmistakes/minimal-mistakes/pull/2713) +- Add Indonesian localized UI text strings. [#2725](https://github.com/mmistakes/minimal-mistakes/pull/2725) +- Update Vietnamese localized UI text strings. [#2722](https://github.com/mmistakes/minimal-mistakes/pull/2722) +- Add Norwegian (Norsk) localized UI text strings. [#2702](https://github.com/mmistakes/minimal-mistakes/pull/2702) +- Update allejo/jekyll-toc to v1.0.14 [#2700](https://github.com/mmistakes/minimal-mistakes/pull/2700) + +## [4.20.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.2) + +### Bug Fixes + +- Fix broken link in documentation. [#2677](https://github.com/mmistakes/minimal-mistakes/issues/2677) +- Fix typo in documentation. [#2678](https://github.com/mmistakes/minimal-mistakes/issues/2678) +- Remove duplicate CSS definitions. [#2666](https://github.com/mmistakes/minimal-mistakes/pull/2666) +- Fix `entries_layout: grid` in various layouts. [#2639](https://github.com/mmistakes/minimal-mistakes/issues/2639) +- Change `fa` to `fas` for Font Awesome 5. [#2649](https://github.com/mmistakes/minimal-mistakes/pull/2649) + +### Enhancements + +- Refactor page meta include. [#2641](https://github.com/mmistakes/minimal-mistakes/pull/2641) +- Add `article:author` Open Graph markup. [#2670](https://github.com/mmistakes/minimal-mistakes/pull/2670) + +## [4.20.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.1) + +### Bug Fixes + +- Fix grid `entries_layout` in home.html. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616) + +## [4.20.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.0) + +### Bug Fixes + +- Add `relative_url` filter to author home link [#2575](https://github.com/mmistakes/minimal-mistakes/pull/2575) +- Fix `analytics.provider` config comment to list all analytics providers. [#2607](https://github.com/mmistakes/minimal-mistakes/pull/2607) +- Fix typo in installation documentation. [#2570](https://github.com/mmistakes/minimal-mistakes/pull/2570) +- Fix broken Lunr search with Jekyll v4.1.0. [#2617](https://github.com/mmistakes/minimal-mistakes/pull/2617) + +### Enhancements + +- Add an optional date alongside the reading time. To enable set `show_date: true` similar to how reading time is. [#2526](https://github.com/mmistakes/minimal-mistakes/pull/2526) +- Remove hidden posts from posts.html layout. [#2625](https://github.com/mmistakes/minimal-mistakes/pull/2625) +- Add entry layout configuration for `list` (default) or `grid` views on `layout: home`. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616) +- Add missing Chinese translations. [#2576](https://github.com/mmistakes/minimal-mistakes/pull/2576) +- Improve Chinese translations. [#2626](https://github.com/mmistakes/minimal-mistakes/pull/2626) +- Add `line-height` to `h4` element in notice helper. [#2602](https://github.com/mmistakes/minimal-mistakes/pull/2602) +- Improve Algolia search. [#2572](https://github.com/mmistakes/minimal-mistakes/pull/2572) +- Update link to wtfpl license in README. [#2571](https://github.com/mmistakes/minimal-mistakes/pull/2571) +- Ignore teaser headline in table of contents when including posts list in another page. [#2558](https://github.com/mmistakes/minimal-mistakes/pull/2558) +- Replace Font Awesome Kits with CSS from jsDelivr CDN. [#2583](https://github.com/mmistakes/minimal-mistakes/pull/2583) +- Add `danmaku` option to Bilibili video provider and add corresponding documentation/ [#2599](https://github.com/mmistakes/minimal-mistakes/pull/2599) +- Update documentation about loading l10n data file from the theme-gem. [#2621](https://github.com/mmistakes/minimal-mistakes/issues/2621) [#2624](https://github.com/mmistakes/minimal-mistakes/pull/2624) + +## [4.19.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.3) + +### Enhancements + +- Update GreedyNav.js to reduce masthead link overflow/shifting on mobile devices. [#2551](https://github.com/mmistakes/minimal-mistakes/issues/2551) +- Replace `<section id="custom-comments"></section>` in `comments.html` include and add `custom_scripts.html` include for loading custom comment provider JavaScript in the footer. [#2549](https://github.com/mmistakes/minimal-mistakes/issues/2549) +- Move page date Liquid to include. [#2544](https://github.com/mmistakes/minimal-mistakes/pull/2544) +- Strip trailing whitespace in `seo_description`. [#2542](https://github.com/mmistakes/minimal-mistakes/pull/2542) +- Improve sticky sidebar's appearance with short content. [#2514](https://github.com/mmistakes/minimal-mistakes/pull/2514) + +## [4.19.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.2) + +### Enhancements + +- Add support for bilibili videos in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#2512](https://github.com/mmistakes/minimal-mistakes/pull/2512) +- Add Myanmar (Burmese) localized UI text strings. [#2500](https://github.com/mmistakes/minimal-mistakes/pull/2500) +- Improve author links underline on hover. [#2472](https://github.com/mmistakes/minimal-mistakes/pull/2472) +- Add documentation for applying Front Matter defaults to jekyll-archives pages. [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466) +- Add missing Vietnamese translations. [#2459](https://github.com/mmistakes/minimal-mistakes/pull/2459) [#2486](https://github.com/mmistakes/minimal-mistakes/pull/2486) +- Fix Finnish localized UI text strings. [#2455](https://github.com/mmistakes/minimal-mistakes/pull/2455) +- Clarify documentation that Lunr only searches documents in collections. [#2450](https://github.com/mmistakes/minimal-mistakes/pull/2450) +- Add guide on applying Front Matter defaults to jekyll-archives pages [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466) + +### Bug Fixes + +- Fix typo in configuration documentation. [#2497](https://github.com/mmistakes/minimal-mistakes/pull/2497) +- Fix "Follow menu falls under post links" on small screens. [#2479](https://github.com/mmistakes/minimal-mistakes/issues/2479) +- Hide index page from page-archive. [#2482](https://github.com/mmistakes/minimal-mistakes/pull/2482) + +## [4.19.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.1) + +### Enhancements + +- Add [Dracula](https://draculatheme.com/) Base16 syntax highlighting theme Sass variables to [stylesheets documentation](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/#syntax-highlighting). [#2438](https://github.com/mmistakes/minimal-mistakes/pull/2438) +- Update links to `HTTPS` and remove Google+ from configuration documentation. [#2432](https://github.com/mmistakes/minimal-mistakes/pull/2432) +- Use `first_page_path` from jekyll-paginate-v2 if available. [#2431](https://github.com/mmistakes/minimal-mistakes/pull/2431) +- Update onchange and uglify-js dependencies. +- Update smooth-scroll.js to `v16.1.2`. [#2430](https://github.com/mmistakes/minimal-mistakes/issues/2430) + +### Bug Fixes + +- Fix author profile links `z-index` order on small screens. [#2440](https://github.com/mmistakes/minimal-mistakes/issues/2440) + +## [4.19.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.0) + +### Enhancements + +- Add "click" overlay to close masthead and follow button menus when open. [#1168](https://github.com/mmistakes/minimal-mistakes/issues/1168) +- Remove deprecated Staticman v1 configurations from `_config.yml`. [#2386](https://github.com/mmistakes/minimal-mistakes/issues/2386) +- Use `relative_url` and `absolute_url` filters where possible. [#2387](https://github.com/mmistakes/minimal-mistakes/pull/2387) +- Improve headline hierarchy and add Sass specific variables `$h-size-x`. [#2423](https://github.com/mmistakes/minimal-mistakes/issues/2423) +- Improve accessibility of `default` skin by increasing color contrast of text and links. +- Hide posts with `hidden: true` YAML front matter from appearing in listings. [#2345](https://github.com/mmistakes/minimal-mistakes/pull/2345) +- Add Irish (Gaeilge) localized UI text strings. [#2422](https://github.com/mmistakes/minimal-mistakes/pull/2422) +- Remove `box-shadow` on radio and checkbox inputs. [#2398](https://github.com/mmistakes/minimal-mistakes/pull/2398) +- Bump Jekyll gem dependency to `v3.7`. + +### Bug Fixes + +- Fix documentation around using `bundle info` command. [#2425](https://github.com/mmistakes/minimal-mistakes/pull/2425) +- Fix rake vulnerability in `.gemspec` file. +- Fix Staticman v2 comment submission. [#2402](https://github.com/mmistakes/minimal-mistakes/pull/2402) +- Fix repeated site base path for masthead logo. [#2385](https://github.com/mmistakes/minimal-mistakes/pull/2385) + +## [4.18.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.1) + +### Bug Fixes + +- Fix compatibility issue with jekyll-paginate-v2. [#2381](https://github.com/mmistakes/minimal-mistakes/pull/2381) + +## [4.18.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.0) + +### Enhancements + +- Allow `home` layout to display posts without pagination. [#2378](https://github.com/mmistakes/minimal-mistakes/pull/2378) +- Add links to high resolution skin screenshots in README. [#2363](https://github.com/mmistakes/minimal-mistakes/issues/2363) +- Update README and LICENSE. [#2367](https://github.com/mmistakes/minimal-mistakes/pull/2367) +- Update `.gitignore` file. [#2366](https://github.com/mmistakes/minimal-mistakes/pull/2366) +- Allow override of page excerpt in hero header via `tagline` YAML front matter. [#2307](https://github.com/mmistakes/minimal-mistakes/pull/2307) +- Exclude `package-lock.json` from Jekyll build. [#2364](https://github.com/mmistakes/minimal-mistakes/pull/2364) +- Use `%-d` instead of `%d` so displayed dates aren't padded with zero. [#2359](https://github.com/mmistakes/minimal-mistakes/pull/2359) +- Update table of contents helper (`toc.html`) to [v1.0.8](https://github.com/allejo/jekyll-toc/releases). [#2355](https://github.com/mmistakes/minimal-mistakes/pull/2355) +- Add missing Dutch localized UI text strings. [#2321](https://github.com/mmistakes/minimal-mistakes/pull/2321) +- Support page header (hero) in `archive-taxonomy` layout. [#2320](https://github.com/mmistakes/minimal-mistakes/pull/2320) +- Add social icon color for Keybase. [#2302](https://github.com/mmistakes/minimal-mistakes/pull/2302) + +### Bug Fixes + +- Fix JavaScript comments in Disqus include to be compatible with `compress` layout. [#2373](https://github.com/mmistakes/minimal-mistakes/pull/2373) +- Fix wrong newline concatenation in SEO description [#2368](https://github.com/mmistakes/minimal-mistakes/pull/2368) [#2354](https://github.com/mmistakes/minimal-mistakes/issues/2354) +- Fix Staticman v2/v3 conditional for showing comments. [#2351](https://github.com/mmistakes/minimal-mistakes/pull/2351) +- Fix masthead logo path. [#2332](https://github.com/mmistakes/minimal-mistakes/pull/2332) +- Fix schema.org dates to ISO-8601. [#2339](https://github.com/mmistakes/minimal-mistakes/pull/2339) +- Fix background color of code blocks in notices. [#2328](https://github.com/mmistakes/minimal-mistakes/pull/2328) +- Fix alignment of feature rows when placed next to a sticky sidebar. [#2327](https://github.com/mmistakes/minimal-mistakes/issues/2327) +- Fix `seo_description` in `_includes/seo.html`. [#2326](https://github.com/mmistakes/minimal-mistakes/pull/2326) +- Fix typo in `_config.yml`. [#2319](https://github.com/mmistakes/minimal-mistakes/pull/2319) + +## [4.17.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.2) + +### Enhancements + +- Add collection step to documentation about creating a portfolio page. [#2294](https://github.com/mmistakes/minimal-mistakes/pull/2294) +- Replace sticky footer JavaScript with flexbox styles. [#2289](https://github.com/mmistakes/minimal-mistakes/pull/2289) + +### Bug Fixes + +- Fix sticky footer when using MozBar extension. [#2281](https://github.com/mmistakes/minimal-mistakes/issues/2281) + +## [4.17.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.1) + +### Enhancements + +- Update Chinese (Simplified) localized UI text strings. [#2286](https://github.com/mmistakes/minimal-mistakes/pull/2286) +- Update list of 3rd party JavaScript used and licenses. [#2276](https://github.com/mmistakes/minimal-mistakes/pull/2276) + +### Bug Fixes + +- Fix indention of nested GFM task lists. [#2283](https://github.com/mmistakes/minimal-mistakes/issues/2283) + +## [4.17.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.0) + +### Enhancements + +- Show a permalink anchor when hovering over headings in main content area. [#2251](https://github.com/mmistakes/minimal-mistakes/pull/2251) +- Allow per-page override of `words_per_minute`. [#2250](https://github.com/mmistakes/minimal-mistakes/pull/2250) +- Update [onchange](https://www.npmjs.com/package/onchange) development dependency in `package.json`. [#2241](https://github.com/mmistakes/minimal-mistakes/issues/2241) +- Add Catalan localized UI text strings. [#2237](https://github.com/mmistakes/minimal-mistakes/pull/2237) + +### Bug Fixes + +- Remove extraneous space from Internet Explorer conditional statement. [#2273](https://github.com/mmistakes/minimal-mistakes/pull/2273) +- Fix typo in `_config.yml`. [#2243](https://github.com/mmistakes/minimal-mistakes/pull/2243) +- Replace `http` URLs with `https` where applicable in `_config.yml`. [#2244](https://github.com/mmistakes/minimal-mistakes/pull/2244) + +## [4.16.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.6) + +### Enhancements + +- Relax Jekyll dependency to allow for version 4.0. +- Add missing Spanish localized UI text strings. [#2229](https://github.com/mmistakes/minimal-mistakes/pull/2229) +- Allow Markdown in author bio. [#2215](https://github.com/mmistakes/minimal-mistakes/pull/2215) + +### Bug Fixes + +- Fix `site.url` in Organization/Person JSON-LD schema. [#1906](https://github.com/mmistakes/minimal-mistakes/issues/1906) +- Remove full stop in some `comment_form_info` UI text strings. [#2220](https://github.com/mmistakes/minimal-mistakes/pull/2220) +- Fix default `site.author` in seo.html [#2230](https://github.com/mmistakes/minimal-mistakes/pull/2230) +- Fix overlapping links (linked to and post's permalink) in post link type. [#2222](https://github.com/mmistakes/minimal-mistakes/issues/2222) + +## [4.16.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.5) + +### Enhancements + +- Add optional site subtitle to masthead. [#2173](https://github.com/mmistakes/minimal-mistakes/issues/2173) +- Add missing Punjabi and Hindi localized UI text strings. [#2212](https://github.com/mmistakes/minimal-mistakes/pull/2212) +- Add missing Korean localized UI text strings. [#2209](https://github.com/mmistakes/minimal-mistakes/pull/2209) +- Use [Font Awesome Kits](https://blog.fontawesome.com/introducing-font-awesome-kits-7134d1d59959) to use the latest version of icons. [#2184](https://github.com/mmistakes/minimal-mistakes/issues/2184) +- Remove unnecessary console.log in `lunr-en.js` and `lunr-gr.js` JavaScript. [#2193](https://github.com/mmistakes/minimal-mistakes/issues/2193) +- Remove unnecessary `type="text/javascript"` from Google Analytics JavaScript. [#2190](https://github.com/mmistakes/minimal-mistakes/pull/2190) +- Update links and fix typos in documentation. [#2186](https://github.com/mmistakes/minimal-mistakes/pull/2186) +- Add skip links. [#2182](https://github.com/mmistakes/minimal-mistakes/issues/2182) + +### Bug Fixes + +- Fix aria issues with Lunr search form. [#2211](https://github.com/mmistakes/minimal-mistakes/pull/2211) +- Fix missing fallback title for table of contents. + +## [4.16.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4) + +### Enhancements + +- Update Brazilian Portuguese localized UI text strings. [#2162](https://github.com/mmistakes/minimal-mistakes/pull/2162) +- Update Font Awesome to v5.8.2. [#2150](https://github.com/mmistakes/minimal-mistakes/pull/2150) +- Add missing Spanish localized UI text strings. [#2149](https://github.com/mmistakes/minimal-mistakes/pull/2149) + +### Bug Fixes + +- Fix arithmetic in `_form.scss` partial. [#2169](https://github.com/mmistakes/minimal-mistakes/pull/2169) +- Fix pound symbol not displaying properly for post categories and tags. [#2156](https://github.com/mmistakes/minimal-mistakes/issues/2156) +- Fix permalink stacking order and click-able area in archives. + ## [4.16.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3) ### Enhancements @@ -64,7 +535,7 @@ ### Bug Fixes -- Fix table of contents errors with non-English chracters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042) +- Fix table of contents errors with non-English characters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042) - Fix `site.logo` false positives. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-455770730) - Add empty `alt` attribute to `site.logo` image. [#2035](https://github.com/mmistakes/minimal-mistakes/pull/2035) @@ -168,7 +639,7 @@ - Support heading levels 1-6 in table of contents with proper indentation styling. [#1782](https://github.com/mmistakes/minimal-mistakes/issues/1782) - Use relative links for masthead navigation menu items when possible. [#1784](https://github.com/mmistakes/minimal-mistakes/pull/1784) - Add `.emoji` class to author sidebar to normalize image sizes. [#1780](https://github.com/mmistakes/minimal-mistakes/pull/1780) -- Update Staticman commit message to include commentor's name. +- Update Staticman commit message to include comment author's name. - Improve side navigation spacing in relation to masthead. - Style archive links with appropriate link color. - Adjust feature row spacing and font-sizes. @@ -198,7 +669,7 @@ - Add support for ["sticking" table of contents](https://mmistakes.github.io/minimal-mistakes/layout-table-of-contents-sticky/) to top of page via `toc_sticky: true` YAML Front Matter. - Add support for captioning images in feature row helper via `image_caption` YAML Front Matter. [#1440](https://github.com/mmistakes/minimal-mistakes/issues/1440) - Add [Google Custom Search Engine](https://cse.google.com/cse) support. [#1652](https://github.com/mmistakes/minimal-mistakes/issues/1652) -- Update Font Awesome to version [`5.1.13`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md) +- Update Font Awesome to version. [`5.1.13`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md) - Add "Pets" sample archive page to documentation site. [#1664](https://github.com/mmistakes/minimal-mistakes/pull/1664) - Add GitLab social icon brand color. [#1653](https://github.com/mmistakes/minimal-mistakes/issues/1653) - Prevent line breaks between FontAwesome icon and text in footer social links. [#1659](https://github.com/mmistakes/minimal-mistakes/issues/1659) @@ -206,7 +677,7 @@ ### Bug Fixes - Set default `title_separator`. [#1701](https://github.com/mmistakes/minimal-mistakes/pull/1701) -- Fix `naver_site_verification` typo in /_includes/seo.html. [#1687](https://github.com/mmistakes/minimal-mistakes/pull/1687) +- Fix `naver_site_verification` typo in /\_includes/seo.html. [#1687](https://github.com/mmistakes/minimal-mistakes/pull/1687) - Fix table of contents missing borders. [#1675](https://github.com/mmistakes/minimal-mistakes/issues/1675) - Fix link to "Recipes" sample archive on documentation site. [#1664](https://github.com/mmistakes/minimal-mistakes/pull/1664) - Update example Reddit social share interpolation syntax in documentation. [#1656](https://github.com/mmistakes/minimal-mistakes/issues/1656) @@ -216,319 +687,319 @@ ### Enhancements -* Update Font Awesome to version [`5.0.12`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). -* Add Slovak localized UI text strings. [#1613](https://github.com/mmistakes/minimal-mistakes/pull/1613) -* Add option to anonymize IP addresses of hits sent to Google Analytics. [#1636](https://github.com/mmistakes/minimal-mistakes/pull/1636) +- Update Font Awesome to version `5.0.11`. [#1620](https://github.com/mmistakes/minimal-mistakes/pull/1620) +- Add Slovak localized UI text strings. [#1613](https://github.com/mmistakes/minimal-mistakes/pull/1613) +- Add option to anonymize IP addresses of hits sent to Google Analytics. [#1636](https://github.com/mmistakes/minimal-mistakes/pull/1636) ### Bug Fixes -* Use correct text string for "Back to Top" link. [#1595](https://github.com/mmistakes/minimal-mistakes/issues/1595) -* Add conditionals for showing `reCaptcha.siteKey` and `reCaptcha.secret` in Staticman comments form. +- Use correct text string for "Back to Top" link. [#1595](https://github.com/mmistakes/minimal-mistakes/issues/1595) +- Add conditionals for showing `reCaptcha.siteKey` and `reCaptcha.secret` in Staticman comments form. ## [4.11.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.11.1) ### Enhancements -* Add default `theme` and `remote_theme` values to `_config.yml`. -* Add new layouts (`posts`, `categories`, `tags`, `collection`, `category`, and `tag`) for easier archive page creation. +- Add default `theme` and `remote_theme` values to `_config.yml`. +- Add new layouts (`posts`, `categories`, `tags`, `collection`, `category`, and `tag`) for easier archive page creation. ### Bug Fixes -* Replace `absolute_url` filter with `relative_url` where it makes sense (asset/navigation related paths). [#1588](https://github.com/mmistakes/minimal-mistakes/issues/1588) -* Fix search excerpts that run together because of implied spaces. +- Replace `absolute_url` filter with `relative_url` where it makes sense (asset/navigation related paths). [#1588](https://github.com/mmistakes/minimal-mistakes/issues/1588) +- Fix search excerpts that run together because of implied spaces. ## [4.10.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.10.1) ### Enhancements -* Update jQuery to version `3.3.1`. [#1491](https://github.com/mmistakes/minimal-mistakes/issues/1491) -* Add link to jekyll-algolia's `files_to_exclude` documentation. -* Update Font Awesome to version [`5.0.8`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1561](https://github.com/mmistakes/minimal-mistakes/pull/1561) -* Activate Algolia search for documentation site. [#1570](https://github.com/mmistakes/minimal-mistakes/issues/1570) -* Add missing German translations. [#1577](https://github.com/mmistakes/minimal-mistakes/pull/1577) -* Add support for Google Analytics with global site tag (gtag.js) [#1563](https://github.com/mmistakes/minimal-mistakes/pull/1563) +- Update jQuery to version `3.3.1`. [#1491](https://github.com/mmistakes/minimal-mistakes/issues/1491) +- Add link to jekyll-algolia's `files_to_exclude` documentation. +- Update Font Awesome to version [`5.0.8`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1561](https://github.com/mmistakes/minimal-mistakes/pull/1561) +- Activate Algolia search for documentation site. [#1570](https://github.com/mmistakes/minimal-mistakes/issues/1570) +- Add missing German translations. [#1577](https://github.com/mmistakes/minimal-mistakes/pull/1577) +- Add support for Google Analytics with global site tag (gtag.js) [#1563](https://github.com/mmistakes/minimal-mistakes/pull/1563) ### Bug Fixes -* Focus Algolia search input after clicking on search toggle. +- Focus Algolia search input after clicking on search toggle. ## [4.10.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.10.0) ### Enhancements -* Add support for [Algolia](https://www.algolia.com/) search provider ([see demo](https://mmistakes.github.io/minimal-mistakes-algolia-search/)). [#1416](https://github.com/mmistakes/minimal-mistakes/issues/1416) +- Add support for [Algolia](https://www.algolia.com/) search provider ([see demo](https://mmistakes.github.io/minimal-mistakes-algolia-search/)). [#1416](https://github.com/mmistakes/minimal-mistakes/issues/1416) ## [4.9.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.9.1) ### Enhancements -* Simplify year archive Liquid. -* Add documentation on how to downgrade theme. -* Improve greedy navigation's layout when JavaScript is disabled. -* Improve SEO include by grouping similar tags, reducing white-space, and adding `article:modified_time`. [#1456](https://github.com/mmistakes/minimal-mistakes/pull/1456) -* Minify `assets/js/lunr/lunr.js`. -* Improve calculation of Greedy navigation's `availableSpace`. -* Add Danish and Russian translations for new search strings. [#1472](https://github.com/mmistakes/minimal-mistakes/pull/1472) [#1477](https://github.com/mmistakes/minimal-mistakes/pull/1477) -* Indicate that archive titles are links with an underline. -* Remove `base_path` include from `/test` pages. -* Reduce font-size of page meta in list/grid items. -* Improve feature row styling when used with `archive` layout. [#1484](https://github.com/mmistakes/minimal-mistakes/issues/1484) -* Improve German translations. [#1511](https://github.com/mmistakes/minimal-mistakes/pull/1511) -* Update Font Awesome to `5.0.6`. [#1513](https://github.com/mmistakes/minimal-mistakes/pull/1513) -* Add `wide` variant to single layout. [#1516](https://github.com/mmistakes/minimal-mistakes/pull/1516) +- Simplify year archive Liquid. +- Add documentation on how to downgrade theme. +- Improve greedy navigation's layout when JavaScript is disabled. +- Improve SEO include by grouping similar tags, reducing white-space, and adding `article:modified_time`. [#1456](https://github.com/mmistakes/minimal-mistakes/pull/1456) +- Minify `assets/js/lunr/lunr.js`. +- Improve calculation of Greedy navigation's `availableSpace`. +- Add Danish and Russian translations for new search strings. [#1472](https://github.com/mmistakes/minimal-mistakes/pull/1472) [#1477](https://github.com/mmistakes/minimal-mistakes/pull/1477) +- Indicate that archive titles are links with an underline. +- Remove `base_path` include from `/test` pages. +- Reduce font-size of page meta in list/grid items. +- Improve feature row styling when used with `archive` layout. [#1484](https://github.com/mmistakes/minimal-mistakes/issues/1484) +- Improve German translations. [#1511](https://github.com/mmistakes/minimal-mistakes/pull/1511) +- Update Font Awesome to `5.0.6`. [#1513](https://github.com/mmistakes/minimal-mistakes/pull/1513) +- Add `wide` variant to single layout. [#1516](https://github.com/mmistakes/minimal-mistakes/pull/1516) ### Bug Fixes -* Allow `author` to accept an object or string. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289) -* Fix syntax highlighting line number styling inconsistency. [#1467](https://github.com/mmistakes/minimal-mistakes/issues/1467) -* Fix author sidebar icon colors for dark skins. [#1482](https://github.com/mmistakes/minimal-mistakes/issues/1482) -* Remove misleading underline hover state on feature row items. -* Properly escape quotes in `site.social.name` and `site.name`. [#1485](https://github.com/mmistakes/minimal-mistakes/pull/1485) -* Fix typo in upgrading documentation. [#1487](https://github.com/mmistakes/minimal-mistakes/pull/1487) -* Fix `border-bottom` for Gist line numbers. -* Replace `|` with HTML entity when used as title separator. [#760](https://github.com/mmistakes/minimal-mistakes/issues/760) +- Allow `author` to accept an object or string. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289) +- Fix syntax highlighting line number styling inconsistency. [#1467](https://github.com/mmistakes/minimal-mistakes/issues/1467) +- Fix author sidebar icon colors for dark skins. [#1482](https://github.com/mmistakes/minimal-mistakes/issues/1482) +- Remove misleading underline hover state on feature row items. +- Properly escape quotes in `site.social.name` and `site.name`. [#1485](https://github.com/mmistakes/minimal-mistakes/pull/1485) +- Fix typo in upgrading documentation. [#1487](https://github.com/mmistakes/minimal-mistakes/pull/1487) +- Fix `border-bottom` for Gist line numbers. +- Replace `|` with HTML entity when used as title separator. [#760](https://github.com/mmistakes/minimal-mistakes/issues/760) ## [4.9.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.9.0) ### Enhancements -* Add `show_overlay_excerpt` for disabling overlay image excerpt text. [#1436](https://github.com/mmistakes/minimal-mistakes/pull/1436) -* Update remote theme installation instructions in Quick Start Guide. [#1439](https://github.com/mmistakes/minimal-mistakes/pull/1439) -* Reduce visual weight of code blocks. -* Add Lunr.js Greek stemmer. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445) -* Update Font Awesome 5 [SVG with JavaScript version](https://fontawesome.com/how-to-use/svg-with-js). [#1446](https://github.com/mmistakes/minimal-mistakes/pull/1446) - * Note: if Font Awesome icons were used in the content of posts/pages or custom table of contents, find and replace any icons that have different names between version 4 and 5. Make sure to read the [complete list](https://fontawesome.com/how-to-use/upgrading-from-4#icon-name-changes-full) on Font Awesome's site. -* Reduce size of Lunr.js search JSON data and introduce `site.search_full_content` flag for limiting size of JSON file. [#1449](https://github.com/mmistakes/minimal-mistakes/pull/1449) -* Improve syntax highlighting styles. [#1450](https://github.com/mmistakes/minimal-mistakes/pull/1450) +- Add `show_overlay_excerpt` for disabling overlay image excerpt text. [#1436](https://github.com/mmistakes/minimal-mistakes/pull/1436) +- Update remote theme installation instructions in Quick Start Guide. [#1439](https://github.com/mmistakes/minimal-mistakes/pull/1439) +- Reduce visual weight of code blocks. +- Add Lunr.js Greek stemmer. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445) +- Update Font Awesome 5 [SVG with JavaScript version](https://fontawesome.com/how-to-use/svg-with-js). [#1446](https://github.com/mmistakes/minimal-mistakes/pull/1446) + - Note: if Font Awesome icons were used in the content of posts/pages or custom table of contents, find and replace any icons that have different names between version 4 and 5. Make sure to read the [complete list](https://fontawesome.com/how-to-use/upgrading-from-4#icon-name-changes-full) on Font Awesome's site. +- Reduce size of Lunr.js search JSON data and introduce `site.search_full_content` flag for limiting size of JSON file. [#1449](https://github.com/mmistakes/minimal-mistakes/pull/1449) +- Improve syntax highlighting styles. [#1450](https://github.com/mmistakes/minimal-mistakes/pull/1450) ### Bug Fixes -* Fix code block extra white-space when using [Jekyll's highlight tag](https://jekyllrb.com/docs/templates/#code-snippet-highlighting) with `linenos`. [#1437](https://github.com/mmistakes/minimal-mistakes/issues/1437) -* Round top-right corner of code block icon. -* Remove Lunr.js trimmer and bring back colons. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445) -* Fix sticky `.sidebar` that overlaps main content when resizing viewport. [#1447](https://github.com/mmistakes/minimal-mistakes/issues/1447) +- Fix code block extra white-space when using [Jekyll's highlight tag](https://jekyllrb.com/docs/templates/#code-snippet-highlighting) with `linenos`. [#1437](https://github.com/mmistakes/minimal-mistakes/issues/1437) +- Round top-right corner of code block icon. +- Remove Lunr.js trimmer and bring back colons. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445) +- Fix sticky `.sidebar` that overlaps main content when resizing viewport. [#1447](https://github.com/mmistakes/minimal-mistakes/issues/1447) ## [4.8.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.8.1) ### Enhancements -* Add linkback functionality to author avatar and name in sidebar via `author.home`. [#1386](https://github.com/mmistakes/minimal-mistakes/pull/1386) -* Add Japanese localized UI text strings. [#1411](https://github.com/mmistakes/minimal-mistakes/pull/1411) -* Update Lunr.js to 2.1.5 [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419) +- Add linkback functionality to author avatar and name in sidebar via `author.home`. [#1386](https://github.com/mmistakes/minimal-mistakes/pull/1386) +- Add Japanese localized UI text strings. [#1411](https://github.com/mmistakes/minimal-mistakes/pull/1411) +- Update Lunr.js to 2.1.5 [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419) ### Bug Fixes -* Fixed broken link to Staticman's page [#1422](https://github.com/mmistakes/minimal-mistakes/pull/1422) -* Fix Lunr search to work with number tags. [#1409](https://github.com/mmistakes/minimal-mistakes/issues/1409) [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419) +- Fixed broken link to Staticman's page [#1422](https://github.com/mmistakes/minimal-mistakes/pull/1422) +- Fix Lunr search to work with number tags. [#1409](https://github.com/mmistakes/minimal-mistakes/issues/1409) [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419) ## [4.8.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.8.0) ### Enhancements -* Open social share links in a new window. [#1357](https://github.com/mmistakes/minimal-mistakes/pull/1357) -* Remove Alexa.com verification due to retiring of "[Claim Your Site](https://support.alexa.com/hc/en-us/articles/219135887)" feature. [#1350](https://github.com/mmistakes/minimal-mistakes/issues/1350) -* Disable analytics in `development` environment. [#1362](https://github.com/mmistakes/minimal-mistakes/pull/1362) -* Disable comments in `development` environment. [#1363](https://github.com/mmistakes/minimal-mistakes/pull/1363) -* Exclude specific pages/posts from search index by adding `search: false` to the YAML Front Matter. [#1369](https://github.com/mmistakes/minimal-mistakes/pull/1369) -* Add optional `description` key to masthead links for clarifying their purpose with the `title` attribute. [#1380](https://github.com/mmistakes/minimal-mistakes/pull/1380) -* Incorporate site search into masthead. [#1383](https://github.com/mmistakes/minimal-mistakes/pull/1383) -* Update gem dependencies. [#1388](https://github.com/mmistakes/minimal-mistakes/pull/1388) +- Open social share links in a new window. [#1357](https://github.com/mmistakes/minimal-mistakes/pull/1357) +- Remove Alexa.com verification due to retiring of "[Claim Your Site](https://support.alexa.com/hc/en-us/articles/219135887)" feature. [#1350](https://github.com/mmistakes/minimal-mistakes/issues/1350) +- Disable analytics in `development` environment. [#1362](https://github.com/mmistakes/minimal-mistakes/pull/1362) +- Disable comments in `development` environment. [#1363](https://github.com/mmistakes/minimal-mistakes/pull/1363) +- Exclude specific pages/posts from search index by adding `search: false` to the YAML Front Matter. [#1369](https://github.com/mmistakes/minimal-mistakes/pull/1369) +- Add optional `description` key to masthead links for clarifying their purpose with the `title` attribute. [#1380](https://github.com/mmistakes/minimal-mistakes/pull/1380) +- Incorporate site search into masthead. [#1383](https://github.com/mmistakes/minimal-mistakes/pull/1383) +- Update gem dependencies. [#1388](https://github.com/mmistakes/minimal-mistakes/pull/1388) ### Bug Fixes -* Fix `post.content` typo in `assets/js/lunr-en.js`. [#1354](https://github.com/mmistakes/minimal-mistakes/pull/1354) -* Fix "lunr-en.js:1 Uncaught SyntaxError: Unexpected token <" in `assets/js/lunr-en.js`. [#1356](https://github.com/mmistakes/minimal-mistakes/pull/1356) -* Rename Naver verification `naver_site_verification` to be consistent with other site variables. -* Fix button class in "Post with Table Of Contents" demo content. [#1368](https://github.com/mmistakes/minimal-mistakes/pull/1368) -* Fix capitalization of WordPress in documentation. [#1381](https://github.com/mmistakes/minimal-mistakes/pull/1381) -* Fix zh-HK UI text to point to Traditional Chinese. [#1374](https://github.com/mmistakes/minimal-mistakes/issues/1374) [#1389](https://github.com/mmistakes/minimal-mistakes/pull/1389) +- Fix `post.content` typo in `assets/js/lunr-en.js`. [#1354](https://github.com/mmistakes/minimal-mistakes/pull/1354) +- Fix "lunr-en.js:1 Uncaught SyntaxError: Unexpected token <" in `assets/js/lunr-en.js`. [#1356](https://github.com/mmistakes/minimal-mistakes/pull/1356) +- Rename Naver verification `naver_site_verification` to be consistent with other site variables. +- Fix button class in "Post with Table Of Contents" demo content. [#1368](https://github.com/mmistakes/minimal-mistakes/pull/1368) +- Fix capitalization of WordPress in documentation. [#1381](https://github.com/mmistakes/minimal-mistakes/pull/1381) +- Fix zh-HK UI text to point to Traditional Chinese. [#1374](https://github.com/mmistakes/minimal-mistakes/issues/1374) [#1389](https://github.com/mmistakes/minimal-mistakes/pull/1389) ## [4.7.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.7.1) ### Enhancements -* Add search layout powered by [Lunr](https://lunrjs.com/). [#1353](https://github.com/mmistakes/minimal-mistakes/pull/1353) -* Use [jekyll-remote-theme](https://github.com/benbalter/jekyll-remote-theme) for demo site. [#1339](https://github.com/mmistakes/minimal-mistakes/issues/1339) -* Add note about WordPress to Staticman comment migration tool in documentation. [#1346](https://github.com/mmistakes/minimal-mistakes/issues/1346) +- Add search layout powered by [Lunr](https://lunrjs.com/). [#1353](https://github.com/mmistakes/minimal-mistakes/pull/1353) +- Use [jekyll-remote-theme](https://github.com/benbalter/jekyll-remote-theme) for demo site. [#1339](https://github.com/mmistakes/minimal-mistakes/issues/1339) +- Add note about WordPress to Staticman comment migration tool in documentation. [#1346](https://github.com/mmistakes/minimal-mistakes/issues/1346) ### Bug Fixes -* Change `http` to `https` for Jekyll and Browserhappy links. [#1342](https://github.com/mmistakes/minimal-mistakes/pull/1342) [#1343](https://github.com/mmistakes/minimal-mistakes/pull/1343) -* Change `http` author profile links to `https` when supported. [#1349](https://github.com/mmistakes/minimal-mistakes/pull/1349) -* Fix broken SCSS partial links in layouts documentation. [#1351](https://github.com/mmistakes/minimal-mistakes/issues/1351) +- Change `http` to `https` for Jekyll and Browserhappy links. [#1342](https://github.com/mmistakes/minimal-mistakes/pull/1342) [#1343](https://github.com/mmistakes/minimal-mistakes/pull/1343) +- Change `http` author profile links to `https` when supported. [#1349](https://github.com/mmistakes/minimal-mistakes/pull/1349) +- Fix broken SCSS partial links in layouts documentation. [#1351](https://github.com/mmistakes/minimal-mistakes/issues/1351) ## [4.7.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.7.0) ### Enhancements -* Add `alt` description to avatar image. [#1226](https://github.com/mmistakes/minimal-mistakes/pull/1226) -* Clarify documentation about which `assets` folders and files to remove when migrating to the gem version of the theme. [#1268](https://github.com/mmistakes/minimal-mistakes/issues/1268) -* Add note about Staticman GitHub compatibility. [#1273](https://github.com/mmistakes/minimal-mistakes/issues/1273) -* Add missing Brazilian Portuguese translations to `ui-text.yml`. [#1278](https://github.com/mmistakes/minimal-mistakes/pull/1278) -* Update font stack documentation. [#1292](https://github.com/mmistakes/minimal-mistakes/pull/1292) -* Improve accessibility of navigation menu button. [#1099](https://github.com/mmistakes/minimal-mistakes/issues/1099) -* Add Naver Webmaster Tools verification. [#1286](https://github.com/mmistakes/minimal-mistakes/pull/1286) -* Add support for Staticman v2 endpoint and reCAPTCHA. -* Add Polish localized UI text strings. [#1304](https://github.com/mmistakes/minimal-mistakes/pull/1304) -* Add toggleable table of contents via YAML Front Matter. Note: `toc` helper include will be deprecated in next major version. [#1222](https://github.com/mmistakes/minimal-mistakes/issues/1222) -* Refactor seo.html include to DRY-up page image handling. -* Add support for setting what image is used by OpenGraph and Twitter via `page.header.og_image`. [#1316](https://github.com/mmistakes/minimal-mistakes/issues/1316) -* Fix the spelling of some product names in the author profile. [#1328](https://github.com/mmistakes/minimal-mistakes/pull/1328) -* Add `aqua`, `neon`, and `plum` skins. [#1336](https://github.com/mmistakes/minimal-mistakes/pull/1336) -* Update **jekyll-toc** with heading classes fix. [#1337](https://github.com/mmistakes/minimal-mistakes/pull/1337) -* Remove `+` from Google+ author link to allow non-vanity URLs. [#1319](https://github.com/mmistakes/minimal-mistakes/pull/1319) +- Add `alt` description to avatar image. [#1226](https://github.com/mmistakes/minimal-mistakes/pull/1226) +- Clarify documentation about which `assets` folders and files to remove when migrating to the gem version of the theme. [#1268](https://github.com/mmistakes/minimal-mistakes/issues/1268) +- Add note about Staticman GitHub compatibility. [#1273](https://github.com/mmistakes/minimal-mistakes/issues/1273) +- Add missing Brazilian Portuguese translations to `ui-text.yml`. [#1278](https://github.com/mmistakes/minimal-mistakes/pull/1278) +- Update font stack documentation. [#1292](https://github.com/mmistakes/minimal-mistakes/pull/1292) +- Improve accessibility of navigation menu button. [#1099](https://github.com/mmistakes/minimal-mistakes/issues/1099) +- Add Naver Webmaster Tools verification. [#1286](https://github.com/mmistakes/minimal-mistakes/pull/1286) +- Add support for Staticman v2 endpoint and reCAPTCHA. +- Add Polish localized UI text strings. [#1304](https://github.com/mmistakes/minimal-mistakes/pull/1304) +- Add toggleable table of contents via YAML Front Matter. Note: `toc` helper include will be deprecated in next major version. [#1222](https://github.com/mmistakes/minimal-mistakes/issues/1222) +- Refactor seo.html include to DRY-up page image handling. +- Add support for setting what image is used by OpenGraph and Twitter via `page.header.og_image`. [#1316](https://github.com/mmistakes/minimal-mistakes/issues/1316) +- Fix the spelling of some product names in the author profile. [#1328](https://github.com/mmistakes/minimal-mistakes/pull/1328) +- Add `aqua`, `neon`, and `plum` skins. [#1336](https://github.com/mmistakes/minimal-mistakes/pull/1336) +- Update **jekyll-toc** with heading classes fix. [#1337](https://github.com/mmistakes/minimal-mistakes/pull/1337) +- Remove `+` from Google+ author link to allow non-vanity URLs. [#1319](https://github.com/mmistakes/minimal-mistakes/pull/1319) ### Bug Fixes -* Fix system font rendering in Chrome on macOS/OS X. [#1290](https://github.com/mmistakes/minimal-mistakes/pull/1290) -* Fix extra padding in syntax highlighted code blocks due to Rouge 2 adding `<div class="highlight"></div>` to markup. +- Fix system font rendering in Chrome on macOS/OS X. [#1290](https://github.com/mmistakes/minimal-mistakes/pull/1290) +- Fix extra padding in syntax highlighted code blocks due to Rouge 2 adding `<div class="highlight"></div>` to markup. ## [4.6.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.6.0) ### Enhancements -* Test strict Front Matter in `/test` site. [#1236](https://github.com/mmistakes/minimal-mistakes/pull/1236) -* Rename `gems` key to `plugins`. [#1239](https://github.com/mmistakes/minimal-mistakes/pull/1239) -* Add [YIQ Color Contrast](https://github.com/easy-designs/yiq-color-contrast) mixin for determining lightness of a color. -* DRY up button CSS using Sass lists and YIQ Color Contrast mixin. -* Add `btn--primary` button class. **Note:** elements that were previously using only a `.btn` class will now also need `.btn--primary` (eg. `<a class="btn btn--primary" href="#">my link</a>`). -* Add `air`, `contrast`, `dark`, `dirt`, `mint`, and `sunrise` skin color options. [#1208](https://github.com/mmistakes/minimal-mistakes/issues/1208) -* Allow scripts in `<head>` and before `</body>` to be added/overridden with `head_scripts` and `footer_scripts` arrays in `_config.yml`. [#1241](https://github.com/mmistakes/minimal-mistakes/pull/1241) -* Update JavaScript dependencies: jQuery `v3.2.1`, jQuery Smooth Scroll `v2.2.0`, and Magnific Popup `v1.1.0`. [#328690652](https://github.com/mmistakes/minimal-mistakes/pull/1241#issuecomment-328690652) +- Test strict Front Matter in `/test` site. [#1236](https://github.com/mmistakes/minimal-mistakes/pull/1236) +- Rename `gems` key to `plugins`. [#1239](https://github.com/mmistakes/minimal-mistakes/pull/1239) +- Add [YIQ Color Contrast](https://github.com/easy-designs/yiq-color-contrast) mixin for determining lightness of a color. +- DRY up button CSS using Sass lists and YIQ Color Contrast mixin. +- Add `btn--primary` button class. **Note:** elements that were previously using only a `.btn` class will now also need `.btn--primary` (eg. `<a class="btn btn--primary" href="#">my link</a>`). +- Add `air`, `contrast`, `dark`, `dirt`, `mint`, and `sunrise` skin color options. [#1208](https://github.com/mmistakes/minimal-mistakes/issues/1208) +- Allow scripts in `<head>` and before `</body>` to be added/overridden with `head_scripts` and `footer_scripts` arrays in `_config.yml`. [#1241](https://github.com/mmistakes/minimal-mistakes/pull/1241) +- Update JavaScript dependencies: jQuery `v3.2.1`, jQuery Smooth Scroll `v2.2.0`, and Magnific Popup `v1.1.0`. [#328690652](https://github.com/mmistakes/minimal-mistakes/pull/1241#issuecomment-328690652) ## [4.5.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.5.2) ### Enhancements -* Add `.page__comments-form` to "non-printing" selectors in print styles. [#1195](https://github.com/mmistakes/minimal-mistakes/pull/1195) -* Add LinkedIn and Steam author sidebar examples to `_config.yml`. [#1203](https://github.com/mmistakes/minimal-mistakes/pull/1203) [#1204](https://github.com/mmistakes/minimal-mistakes/pull/1204) -* Remove the http-equiv="cleartype" meta tag. [#1087](https://github.com/mmistakes/minimal-mistakes/pull/1087) -* Clarify documentation for `jekyll-archives` plugin and how to install. [#1206](https://github.com/mmistakes/minimal-mistakes/pull/1206) -* Clarify documentation around taxonomy page and index generation. [#1207](https://github.com/mmistakes/minimal-mistakes/pull/1207) -* Fix "Posts by tag" grammar in documentation. [#1209](https://github.com/mmistakes/minimal-mistakes/pull/1209) -* Improve Chinese `date_label` and `minute_read` translations in `ui-text.yml`. [#1205](https://github.com/mmistakes/minimal-mistakes/pull/1205) [#1211](https://github.com/mmistakes/minimal-mistakes/pull/1211) -* Add note to Quick-Start Guide about GitHub Pages hosting alternatives that allow 3rd party gem themes and Jekyll plugins. -* Add note to configuration documentation about Cloudflare minification as an alternative to `layout: compress`. [#1217](https://github.com/mmistakes/minimal-mistakes/pull/1217) -* Show 4 latest posts in "You May Also Enjoy" module when `related: true` and no related posts are found due to `lsi` ([latent semantic indexing](https://en.wikipedia.org/wiki/Latent_semantic_analysis#Latent_semantic_indexing)) being disabled on GitHub Pages. [#554](https://github.com/mmistakes/minimal-mistakes/issues/554) -* Truncate archive item titles' that overflow with an ellipsis. [#1213](https://github.com/mmistakes/minimal-mistakes/issues/1213) +- Add `.page__comments-form` to "non-printing" selectors in print styles. [#1195](https://github.com/mmistakes/minimal-mistakes/pull/1195) +- Add LinkedIn and Steam author sidebar examples to `_config.yml`. [#1203](https://github.com/mmistakes/minimal-mistakes/pull/1203) [#1204](https://github.com/mmistakes/minimal-mistakes/pull/1204) +- Remove the http-equiv="cleartype" meta tag. [#1087](https://github.com/mmistakes/minimal-mistakes/pull/1087) +- Clarify documentation for `jekyll-archives` plugin and how to install. [#1206](https://github.com/mmistakes/minimal-mistakes/pull/1206) +- Clarify documentation around taxonomy page and index generation. [#1207](https://github.com/mmistakes/minimal-mistakes/pull/1207) +- Fix "Posts by tag" grammar in documentation. [#1209](https://github.com/mmistakes/minimal-mistakes/pull/1209) +- Improve Chinese `date_label` and `minute_read` translations in `ui-text.yml`. [#1205](https://github.com/mmistakes/minimal-mistakes/pull/1205) [#1211](https://github.com/mmistakes/minimal-mistakes/pull/1211) +- Add note to Quick-Start Guide about GitHub Pages hosting alternatives that allow 3rd party gem themes and Jekyll plugins. +- Add note to configuration documentation about Cloudflare minification as an alternative to `layout: compress`. [#1217](https://github.com/mmistakes/minimal-mistakes/pull/1217) +- Show 4 latest posts in "You May Also Enjoy" module when `related: true` and no related posts are found due to `lsi` ([latent semantic indexing](https://en.wikipedia.org/wiki/Latent_semantic_analysis#Latent_semantic_indexing)) being disabled on GitHub Pages. [#554](https://github.com/mmistakes/minimal-mistakes/issues/554) +- Truncate archive item titles' that overflow with an ellipsis. [#1213](https://github.com/mmistakes/minimal-mistakes/issues/1213) ### Bug Fixes -* Fix license URL in README file. [#1189](https://github.com/mmistakes/minimal-mistakes/pull/1189) -* Reduce amount of blank pages when printing in Chrome. [#1196](https://github.com/mmistakes/minimal-mistakes/issues/1196) -* Remove `#disqus_thread` duplicate from `comments-providers/disqus.html` as it is already in `comments.html` include. [#1199](https://github.com/mmistakes/minimal-mistakes/issues/1199) -* Fix Liquid syntax errors in `tag-list.html` and `category-list.html` includes by removing parenthesis in `assign`s. [#1223](https://github.com/mmistakes/minimal-mistakes/issues/1223) -* Fix Liquid syntax error: "Expected id but found open_square in `"{{ page.[include.id] }}"`" in `gallery` and `feature_row` includes. -* Fix Liquid syntax error: "Expected end_of_string but found pipe in `"name in __names | sort"`" in `group-by-array` include. +- Fix license URL in README file. [#1189](https://github.com/mmistakes/minimal-mistakes/pull/1189) +- Reduce amount of blank pages when printing in Chrome. [#1196](https://github.com/mmistakes/minimal-mistakes/issues/1196) +- Remove `#disqus_thread` duplicate from `comments-providers/disqus.html` as it is already in `comments.html` include. [#1199](https://github.com/mmistakes/minimal-mistakes/issues/1199) +- Fix Liquid syntax errors in `tag-list.html` and `category-list.html` includes by removing parenthesis in `assign`s. [#1223](https://github.com/mmistakes/minimal-mistakes/issues/1223) +- Fix Liquid syntax error: "Expected id but found open_square in `"{{ page.[include.id] }}"`" in `gallery` and `feature_row` includes. +- Fix Liquid syntax error: "Expected end_of_string but found pipe in `"name in __names | sort"`" in `group-by-array` include. ## [4.5.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.5.1) ### Enhancements -* Add Greek and Danish localized UI text strings. [#1159](https://github.com/mmistakes/minimal-mistakes/pull/1159) [#1188](https://github.com/mmistakes/minimal-mistakes/pull/1188) -* Remove blank YAML Front Matter from JavaScript banner. [#1158](https://github.com/mmistakes/minimal-mistakes/issues/1158) -* Improve `page` and `archive` layouts to visually center main content and harmonize sidebar widths and placement. [#1166](https://github.com/mmistakes/minimal-mistakes/pull/1166) -* Increase font-size of code blocks. -* Reduce indent of nested "table of contents" links. -* Extend [archive grid view](https://mmistakes.github.io/minimal-mistakes/docs/layouts/) to the right to better fill the page. -* URL encode title and page URL in social share links. [#1177](https://github.com/mmistakes/minimal-mistakes/pull/1177) -* Replace old Disqus script with new Universal Embed Code. [#1179](https://github.com/mmistakes/minimal-mistakes/pull/1179) +- Add Greek and Danish localized UI text strings. [#1159](https://github.com/mmistakes/minimal-mistakes/pull/1159) [#1188](https://github.com/mmistakes/minimal-mistakes/pull/1188) +- Remove blank YAML Front Matter from JavaScript banner. [#1158](https://github.com/mmistakes/minimal-mistakes/issues/1158) +- Improve `page` and `archive` layouts to visually center main content and harmonize sidebar widths and placement. [#1166](https://github.com/mmistakes/minimal-mistakes/pull/1166) +- Increase font-size of code blocks. +- Reduce indent of nested "table of contents" links. +- Extend [archive grid view](https://mmistakes.github.io/minimal-mistakes/docs/layouts/) to the right to better fill the page. +- URL encode title and page URL in social share links. [#1177](https://github.com/mmistakes/minimal-mistakes/pull/1177) +- Replace old Disqus script with new Universal Embed Code. [#1179](https://github.com/mmistakes/minimal-mistakes/pull/1179) ### Bug Fixes -* Fix positioning of sidebar table of contents when using `layout: splash`. [#1169](https://github.com/mmistakes/minimal-mistakes/issues/1169) -* Fix "follow" links `z-index` order to avoid overlapping issues. [#1167](https://github.com/mmistakes/minimal-mistakes/issues/1167) +- Fix positioning of sidebar table of contents when using `layout: splash`. [#1169](https://github.com/mmistakes/minimal-mistakes/issues/1169) +- Fix "follow" links `z-index` order to avoid overlapping issues. [#1167](https://github.com/mmistakes/minimal-mistakes/issues/1167) ### Maintenance -* Fix typo `words_per_minute` typo in documentation. [#1164](https://github.com/mmistakes/minimal-mistakes/pull/1164) -* Remove outside and right borders in `table`s. -* Adjust width of `.sidebar` to match `.sidebar__right`. -* Add sample documents to ["portfolio" collection](https://mmistakes.github.io/minimal-mistakes/portfolio/) for testing grid view. -* Fix typo in stylesheets documentation. [#1170](https://github.com/mmistakes/minimal-mistakes/pull/1170) -* Add note about setting Discourse `server` as a scheme-less URL (eg. `meta.discourse.com` and not `http://meta.discourse.com`) in `_config.yml`. [#1182](https://github.com/mmistakes/minimal-mistakes/issues/1182) +- Fix typo `words_per_minute` typo in documentation. [#1164](https://github.com/mmistakes/minimal-mistakes/pull/1164) +- Remove outside and right borders in `table`s. +- Adjust width of `.sidebar` to match `.sidebar__right`. +- Add sample documents to ["portfolio" collection](https://mmistakes.github.io/minimal-mistakes/portfolio/) for testing grid view. +- Fix typo in stylesheets documentation. [#1170](https://github.com/mmistakes/minimal-mistakes/pull/1170) +- Add note about setting Discourse `server` as a scheme-less URL (eg. `meta.discourse.com` and not `http://meta.discourse.com`) in `_config.yml`. [#1182](https://github.com/mmistakes/minimal-mistakes/issues/1182) ## [4.5.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.5.0) ### Enhancements -* Add scrollbar to sidebars with overflowing content that extends outside the viewport's height. [#706](https://github.com/mmistakes/minimal-mistakes/issues/706) -* Add missing Spanish UI text strings. [#1118](https://github.com/mmistakes/minimal-mistakes/pull/1118) -* Update Susy to version 3 and rewrite grid CSS to be more readable. -* Refactor intro animations into a separate Sass variable `$intro-transition` to allow for customizing. [#1147](https://github.com/mmistakes/minimal-mistakes/pull/1147) -* Add [**jekyll-data**](https://github.com/ashmaroli/jekyll-data) as a dependency to read data files from theme-gem. [#1131](https://github.com/mmistakes/minimal-mistakes/pull/1131) -* Add support for customizing header image alternative text through YAML Front Matter. [#1138](https://github.com/mmistakes/minimal-mistakes/pull/1138) +- Add scrollbar to sidebars with overflowing content that extends outside the viewport's height. [#706](https://github.com/mmistakes/minimal-mistakes/issues/706) +- Add missing Spanish UI text strings. [#1118](https://github.com/mmistakes/minimal-mistakes/pull/1118) +- Update Susy to version 3 and rewrite grid CSS to be more readable. +- Refactor intro animations into a separate Sass variable `$intro-transition` to allow for customizing. [#1147](https://github.com/mmistakes/minimal-mistakes/pull/1147) +- Add [**jekyll-data**](https://github.com/ashmaroli/jekyll-data) as a dependency to read data files from theme-gem. [#1131](https://github.com/mmistakes/minimal-mistakes/pull/1131) +- Add support for customizing header image alternative text through YAML Front Matter. [#1138](https://github.com/mmistakes/minimal-mistakes/pull/1138) ### Bug Fixes -* Fix Sass `DEPRECATION WARNING: Passing a string to call()` by [upgrading Susy to version 3](https://github.com/mmistakes/minimal-mistakes/commit/387f8149d6270b876f224a57a07062ffb0647938). [#1114](https://github.com/mmistakes/minimal-mistakes/issues/1114) -* Fix disappearing author profile links due to tapping the "Follow" button and changing a browser's viewport width to > `$lg`. [#1136](https://github.com/mmistakes/minimal-mistakes/issues/1136) +- Fix Sass `DEPRECATION WARNING: Passing a string to call()` by [upgrading Susy to version 3](https://github.com/mmistakes/minimal-mistakes/commit/387f8149d6270b876f224a57a07062ffb0647938). [#1114](https://github.com/mmistakes/minimal-mistakes/issues/1114) +- Fix disappearing author profile links due to tapping the "Follow" button and changing a browser's viewport width to > `$lg`. [#1136](https://github.com/mmistakes/minimal-mistakes/issues/1136) ### Maintenance -* Replace reference to "Basically Basic theme" with **Minimal Mistakes**. [#1149](https://github.com/mmistakes/minimal-mistakes/pull/1149) -* Add documentation for disabling CSS3 animations. [#1150](https://github.com/mmistakes/minimal-mistakes/pull/1150) -* Update quickstart, installation, and overriding defaults documentation. [#1151](https://github.com/mmistakes/minimal-mistakes/pull/1151) +- Replace reference to "Basically Basic theme" with **Minimal Mistakes**. [#1149](https://github.com/mmistakes/minimal-mistakes/pull/1149) +- Add documentation for disabling CSS3 animations. [#1150](https://github.com/mmistakes/minimal-mistakes/pull/1150) +- Update quickstart, installation, and overriding defaults documentation. [#1151](https://github.com/mmistakes/minimal-mistakes/pull/1151) ## [4.4.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.4.2) ### Enhancements -* Add Swedish, Dutch, and Indonesian localized UI text strings. [#996](https://github.com/mmistakes/minimal-mistakes/pull/996) [#1081](https://github.com/mmistakes/minimal-mistakes/pull/1081) [#1101](https://github.com/mmistakes/minimal-mistakes/pull/1101) -* Add Bitbucket social icon color. [#1009](https://github.com/mmistakes/minimal-mistakes/pull/1009) -* Add GitLab to author sidebar. [#1050](https://github.com/mmistakes/minimal-mistakes/pull/1050) -* Add Sass variable for navicon link hover color. [#1089](https://github.com/mmistakes/minimal-mistakes/pull/1089) [#1088](https://github.com/mmistakes/minimal-mistakes/pull/1088) +- Add Swedish, Dutch, and Indonesian localized UI text strings. [#996](https://github.com/mmistakes/minimal-mistakes/pull/996) [#1081](https://github.com/mmistakes/minimal-mistakes/pull/1081) [#1101](https://github.com/mmistakes/minimal-mistakes/pull/1101) +- Add Bitbucket social icon color. [#1009](https://github.com/mmistakes/minimal-mistakes/pull/1009) +- Add GitLab to author sidebar. [#1050](https://github.com/mmistakes/minimal-mistakes/pull/1050) +- Add Sass variable for navicon link hover color. [#1089](https://github.com/mmistakes/minimal-mistakes/pull/1089) [#1088](https://github.com/mmistakes/minimal-mistakes/pull/1088) ### Bug Fixes -* Toggle close button on `mouseleave`. [#975](https://github.com/mmistakes/minimal-mistakes/issues/975) -* Remove extraneous `</a>` and `</li>` tags from `paginator.html` include. [#1038](https://github.com/mmistakes/minimal-mistakes/pull/1038) -* Fix Google+ comments provider includes. [#1092](https://github.com/mmistakes/minimal-mistakes/issues/1092) -* Replace category variable used in `_includes/breadcrumbs.html` to `site.category_archive` to avoid conflicts with `site.categories`. [#1063](https://github.com/mmistakes/minimal-mistakes/pull/1063) [#329](https://github.com/mmistakes/minimal-mistakes/issues/329) +- Toggle close button on `mouseleave`. [#975](https://github.com/mmistakes/minimal-mistakes/issues/975) +- Remove extraneous `</a>` and `</li>` tags from `paginator.html` include. [#1038](https://github.com/mmistakes/minimal-mistakes/pull/1038) +- Fix Google+ comments provider includes. [#1092](https://github.com/mmistakes/minimal-mistakes/issues/1092) +- Replace category variable used in `_includes/breadcrumbs.html` to `site.category_archive` to avoid conflicts with `site.categories`. [#1063](https://github.com/mmistakes/minimal-mistakes/pull/1063) [#329](https://github.com/mmistakes/minimal-mistakes/issues/329) ### Maintenance -* Add mention of Greek localized UI text strings to theme documentation. [#972](https://github.com/mmistakes/minimal-mistakes/pull/972) -* Update Greek localized UI text strings. [#1054](https://github.com/mmistakes/minimal-mistakes/pull/1054) -* Add documentation for adding teaser images in grid view using `header.teaser`. +- Add mention of Greek localized UI text strings to theme documentation. [#972](https://github.com/mmistakes/minimal-mistakes/pull/972) +- Update Greek localized UI text strings. [#1054](https://github.com/mmistakes/minimal-mistakes/pull/1054) +- Add documentation for adding teaser images in grid view using `header.teaser`. ## [4.4.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.4.1) ### Enhancements -* Add Greek localized UI text strings. [#958](https://github.com/mmistakes/minimal-mistakes/pull/958) +- Add Greek localized UI text strings. [#958](https://github.com/mmistakes/minimal-mistakes/pull/958) ### Bug Fixes -* Fix `video` helper to load Vimeo videos over https. [#945](https://github.com/mmistakes/minimal-mistakes/pull/945) -* Fix close menu button that was removed when updating Greedy navigation script. [#969](https://github.com/mmistakes/minimal-mistakes/issues/969) +- Fix `video` helper to load Vimeo videos over https. [#945](https://github.com/mmistakes/minimal-mistakes/pull/945) +- Fix close menu button that was removed when updating Greedy navigation script. [#969](https://github.com/mmistakes/minimal-mistakes/issues/969) ## [4.4.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.4.0) ### Enhancements -* Move SCSS partials to `/_sass/minimal-mistakes` for easier CSS customization. -* Replace `modified` with `last_modified_at` to leverage various Jekyll plugins that utilize this variable. [#930](https://github.com/mmistakes/minimal-mistakes/pull/930) -* Add Lithuanian localized UI text. [#924](https://github.com/mmistakes/minimal-mistakes/pull/924) -* Improve print stylesheet by increasing text contrast, removing elements that don't need to be printed, expanding URLs, and reducing amount of blank pages. [#909](https://github.com/mmistakes/minimal-mistakes/issues/909) +- Move SCSS partials to `/_sass/minimal-mistakes` for easier CSS customization. +- Replace `modified` with `last_modified_at` to leverage various Jekyll plugins that utilize this variable. [#930](https://github.com/mmistakes/minimal-mistakes/pull/930) +- Add Lithuanian localized UI text. [#924](https://github.com/mmistakes/minimal-mistakes/pull/924) +- Improve print stylesheet by increasing text contrast, removing elements that don't need to be printed, expanding URLs, and reducing amount of blank pages. [#909](https://github.com/mmistakes/minimal-mistakes/issues/909) ### Maintenance -* Remove extra word in comment. [#911](https://github.com/mmistakes/minimal-mistakes/pull/911) -* Fix typo in Utility Class docs. [#915](https://github.com/mmistakes/minimal-mistakes/pull/915) +- Remove extra word in comment. [#911](https://github.com/mmistakes/minimal-mistakes/pull/911) +- Fix typo in Utility Class docs. [#915](https://github.com/mmistakes/minimal-mistakes/pull/915) ## [4.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.3.1) ### Bug Fixes -* Fix `.masthead` and `.page__footer` overlapping full screen video elements. [#933](https://github.com/mmistakes/minimal-mistakes/issues/933) -* Correctly show Related Posts heading when UI Text data file is omitted and `related: true` in YAML Front Matter. [#901](https://github.com/mmistakes/minimal-mistakes/pull/901) +- Fix `.masthead` and `.page__footer` overlapping full screen video elements. [#933](https://github.com/mmistakes/minimal-mistakes/issues/933) +- Correctly show Related Posts heading when UI Text data file is omitted and `related: true` in YAML Front Matter. [#901](https://github.com/mmistakes/minimal-mistakes/pull/901) ## [4.3.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.3.0) ### Enhancements -* Add workaround to allow theme gem's `/assets/js/main.min.js` file to be overridden by a local version. Simply add the following YAML Front Matter to the file: +- Add workaround to allow theme gem's `/assets/js/main.min.js` file to be overridden by a local version. Simply add the following YAML Front Matter to the file: ``` --- @@ -542,216 +1013,216 @@ ### Enhancements -* Update [Greedy Navigation](https://github.com/lukejacksonn/GreedyNav) to flexbox version to make it more flexible when dealing with long site titles (`site.title`). [#836](https://github.com/mmistakes/minimal-mistakes/issues/836) -* Adjust `box-shadow` in navigation and author sidebar. [#576](https://github.com/mmistakes/minimal-mistakes/pull/576) -* Add Russian, Korean, and zh-TW localized UI text. [#815](https://github.com/mmistakes/minimal-mistakes/issues/815) [#834](https://github.com/mmistakes/minimal-mistakes/pull/834) [#838](https://github.com/mmistakes/minimal-mistakes/pull/838) +- Update [Greedy Navigation](https://github.com/lukejacksonn/GreedyNav) to flexbox version to make it more flexible when dealing with long site titles (`site.title`). [#836](https://github.com/mmistakes/minimal-mistakes/issues/836) +- Adjust `box-shadow` in navigation and author sidebar. [#576](https://github.com/mmistakes/minimal-mistakes/pull/576) +- Add Russian, Korean, and zh-TW localized UI text. [#815](https://github.com/mmistakes/minimal-mistakes/issues/815) [#834](https://github.com/mmistakes/minimal-mistakes/pull/834) [#838](https://github.com/mmistakes/minimal-mistakes/pull/838) ### Bug Fixes -* Fix Discourse embedded comments bug. [#823](https://github.com/mmistakes/minimal-mistakes/issues/823) -* Fix `seo_author` default value in `seo.html` and add `author` meta. [#858](https://github.com/mmistakes/minimal-mistakes/pull/858) +- Fix Discourse embedded comments bug. [#823](https://github.com/mmistakes/minimal-mistakes/issues/823) +- Fix `seo_author` default value in `seo.html` and add `author` meta. [#858](https://github.com/mmistakes/minimal-mistakes/pull/858) ### Maintenance -* Add theme meta info to `_layouts/default.html` and `main.css`. -* Update README. -* Improve the pagination and taxonomy archive documentation. [#826](https://github.com/mmistakes/minimal-mistakes/pull/826) -* Add comments to `/docs/_config.yml` to clarify use of YAML references. [#847](https://github.com/mmistakes/minimal-mistakes/pull/847) +- Add theme meta info to `_layouts/default.html` and `main.css`. +- Update README. +- Improve the pagination and taxonomy archive documentation. [#826](https://github.com/mmistakes/minimal-mistakes/pull/826) +- Add comments to `/docs/_config.yml` to clarify use of YAML references. [#847](https://github.com/mmistakes/minimal-mistakes/pull/847) ## [4.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.2.1) ### Enhancements -* Improve `paginator.html` to support paginated pages that live inside of a subfolder. See [documentation](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#home-page) for more details. [#764](https://github.com/mmistakes/minimal-mistakes/pull/764/) +- Improve `paginator.html` to support paginated pages that live inside of a subfolder. See [documentation](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#home-page) for more details. [#764](https://github.com/mmistakes/minimal-mistakes/pull/764/) ### Maintenance -* Add `https` protocol to Google Universal Analytics embed. [#772](https://github.com/mmistakes/minimal-mistakes/pull/772) +- Add `https` protocol to Google Universal Analytics embed. [#772](https://github.com/mmistakes/minimal-mistakes/pull/772) ## [4.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.2.0) ### Enhancements -* Add `video` helper (for YouTube/Vimeo) and video headers to `single`, `archive`, and `splash` layouts. [#788](https://github.com/mmistakes/minimal-mistakes/pull/788) -* Add missing simplified Chinese localized UI text strings. [#747](https://github.com/mmistakes/minimal-mistakes/pull/747) -* Add Nepali (Nepalese) localized UI text strings. [#785](https://github.com/mmistakes/minimal-mistakes/pull/785) -* Remove borders from table elements found in Google Custom Search Engine widget. [#759](https://github.com/mmistakes/minimal-mistakes/issues/759) +- Add `video` helper (for YouTube/Vimeo) and video headers to `single`, `archive`, and `splash` layouts. [#788](https://github.com/mmistakes/minimal-mistakes/pull/788) +- Add missing simplified Chinese localized UI text strings. [#747](https://github.com/mmistakes/minimal-mistakes/pull/747) +- Add Nepali (Nepalese) localized UI text strings. [#785](https://github.com/mmistakes/minimal-mistakes/pull/785) +- Remove borders from table elements found in Google Custom Search Engine widget. [#759](https://github.com/mmistakes/minimal-mistakes/issues/759) ### Bug Fixes -* Remove `position: sticky` JavaScript polyfill and fallback to default positioning for browsers that don't support it. [#752](https://github.com/mmistakes/minimal-mistakes/issues/752) +- Remove `position: sticky` JavaScript polyfill and fallback to default positioning for browsers that don't support it. [#752](https://github.com/mmistakes/minimal-mistakes/issues/752) ### Maintenance -* Fix invalid Google Universal Analytics example in documentation. [#783](https://github.com/mmistakes/minimal-mistakes/pull/783) -* Bump `jekyll-sitemap` gem dependency to (1.0). +- Fix invalid Google Universal Analytics example in documentation. [#783](https://github.com/mmistakes/minimal-mistakes/pull/783) +- Bump `jekyll-sitemap` gem dependency to (1.0). ## [4.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.1.1) ### Enhancements -* Remove hardcoded `words_per_minute` "less than" and "minute read" values and make dynamic. [#703](https://github.com/mmistakes/minimal-mistakes/issues/703) -* Update Font Awesome to `v4.7.0`. [#723](https://github.com/mmistakes/minimal-mistakes/issues/723), [#722](https://github.com/mmistakes/minimal-mistakes/issues/722) -* Add support for YouTube channel URLs in author profile. [#716](https://github.com/mmistakes/minimal-mistakes/issues/716) +- Remove hardcoded `words_per_minute` "less than" and "minute read" values and make dynamic. [#703](https://github.com/mmistakes/minimal-mistakes/issues/703) +- Update Font Awesome to `v4.7.0`. [#723](https://github.com/mmistakes/minimal-mistakes/issues/723), [#722](https://github.com/mmistakes/minimal-mistakes/issues/722) +- Add support for YouTube channel URLs in author profile. [#716](https://github.com/mmistakes/minimal-mistakes/issues/716) ### Bug Fixes -* Add Jekyll as `spec.add_runtime_dependency` in `.gemspec`. +- Add Jekyll as `spec.add_runtime_dependency` in `.gemspec`. ## [4.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.1.0) ### Enhancements -* Add Jekyll include for adding [custom author profile links](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/author-profile-custom-links.html) to sidebar +- Add Jekyll include for adding [custom author profile links](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/author-profile-custom-links.html) to sidebar ### Bug Fixes -* Fix link to Discourse.org homepage in `noscript` section [#699](https://github.com/mmistakes/minimal-mistakes/pull/699) -* Fix padding issue with pagination buttons [#694](https://github.com/mmistakes/minimal-mistakes/issues/694) +- Fix link to Discourse.org homepage in `noscript` section [#699](https://github.com/mmistakes/minimal-mistakes/pull/699) +- Fix padding issue with pagination buttons [#694](https://github.com/mmistakes/minimal-mistakes/issues/694) ## [4.0.10](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.10) ### Bug Fixes -* Add Staticman default `path`. [#683](https://github.com/mmistakes/minimal-mistakes/issues/683) +- Add Staticman default `path`. [#683](https://github.com/mmistakes/minimal-mistakes/issues/683) ### Maintenance -* Slight correction/improvements to French UI text. [#685](https://github.com/mmistakes/minimal-mistakes/pull/685) +- Slight correction/improvements to French UI text. [#685](https://github.com/mmistakes/minimal-mistakes/pull/685) ## [4.0.9](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.9) ### Bug Fixes -* Fix overlapping sidebar navigation lists due to `max-height: 100vh`. [#668](https://github.com/mmistakes/minimal-mistakes/issues/668) +- Fix overlapping sidebar navigation lists due to `max-height: 100vh`. [#668](https://github.com/mmistakes/minimal-mistakes/issues/668) ## [4.0.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.8) ### Bug Fixes -* Set default value for `words_per_minute`. [#657](https://github.com/mmistakes/minimal-mistakes/issues/657) -* Adjust sidebar navigation list CSS so it collapses at the correct width. +- Set default value for `words_per_minute`. [#657](https://github.com/mmistakes/minimal-mistakes/issues/657) +- Adjust sidebar navigation list CSS so it collapses at the correct width. ### Maintenance -* Add Google AdSense banner to `/docs/_layouts/default.html` for demo site. +- Add Google AdSense banner to `/docs/_layouts/default.html` for demo site. ## [4.0.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.7) ### Enhancements -* Add `!default` values to **\_sass/\_variables.scss**. -* Collapse sidebar navigation lists on smaller screens. [#607](https://github.com/mmistakes/minimal-mistakes/issues/607) +- Add `!default` values to **\_sass/\_variables.scss**. +- Collapse sidebar navigation lists on smaller screens. [#607](https://github.com/mmistakes/minimal-mistakes/issues/607) ### Bug Fixes -* Rename `#comments` to something more unique to avoid clashes with Kramdown generated headline IDs. [#582](https://github.com/mmistakes/minimal-mistakes/issues/582) +- Rename `#comments` to something more unique to avoid clashes with Kramdown generated headline IDs. [#582](https://github.com/mmistakes/minimal-mistakes/issues/582) ### Maintenance -* Reorganize SCSS partials in **assets/css/main.scss** +- Reorganize SCSS partials in **assets/css/main.scss** ## [4.0.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.6) ### Enhancements -* Add [`figure` helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#figure) to make generating a `<figure>` element with a single image and caption easier. [#572](https://github.com/mmistakes/minimal-mistakes/pull/572) -* Add structured data markup for `itemprop="person"` in author profile sidebar. [#647](https://github.com/mmistakes/minimal-mistakes/pull/647) +- Add [`figure` helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#figure) to make generating a `<figure>` element with a single image and caption easier. [#572](https://github.com/mmistakes/minimal-mistakes/pull/572) +- Add structured data markup for `itemprop="person"` in author profile sidebar. [#647](https://github.com/mmistakes/minimal-mistakes/pull/647) ### Bug Fixes -* Fix improper YAML formatting of some locales. [#651](https://github.com/mmistakes/minimal-mistakes/pull/651) +- Fix improper YAML formatting of some locales. [#651](https://github.com/mmistakes/minimal-mistakes/pull/651) ### Maintenance -* Clarify "migrating to gem-theme" instructions in **Quick Start Guide**. -* Add `rake preview` task for testing `/test` during theme development. +- Clarify "migrating to gem-theme" instructions in **Quick Start Guide**. +- Add `rake preview` task for testing `/test` during theme development. ## [4.0.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.5) ### Enhancements -* Update gems: `jekyll-sitemap` (0.12), `jekyll-feed` (0.8). -* Improve next/previous pager links visibility by changing gray color to blue (`$link-color`). +- Update gems: `jekyll-sitemap` (0.12), `jekyll-feed` (0.8). +- Improve next/previous pager links visibility by changing gray color to blue (`$link-color`). ### Bug Fixes -* Fix `.sidebar` flicker/jump when hovered. [#583](https://github.com/mmistakes/minimal-mistakes/issues/583) +- Fix `.sidebar` flicker/jump when hovered. [#583](https://github.com/mmistakes/minimal-mistakes/issues/583) ### Maintenance -* Move contents of `gh-pages` branch to `master` inside of the `/docs` folder. +- Move contents of `gh-pages` branch to `master` inside of the `/docs` folder. ## [4.0.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.0.4) ### Enhancements -* "Gemify" theme ~> `gem "minimal-mistakes-jekyll"` -* Replace `base_path` include with `absolute_url` filter where possible. -* Allow images to be placed in other folders. Remove `/images/` only restriction and encourage placement in `/assets/images/` instead. **Full paths are now required. If upgrading from MM 3.4 add `/images/` before filenames in Front Matter and `_config.yml` variables.** -* Add [home `layout`](https://github.com/mmistakes/minimal-mistakes/blob/master/_layouts/home.html) -* Added missing Turkish translations for UI text. [#621](https://github.com/mmistakes/minimal-mistakes/pull/621) -* Make author avatar optional in sidebar. -* Update **/\_includes/seo.html** for meta description. [#558](https://github.com/mmistakes/minimal-mistakes/pull/558) +- "Gemify" theme ~> `gem "minimal-mistakes-jekyll"` +- Replace `base_path` include with `relative_url` filter where possible. +- Allow images to be placed in other folders. Remove `/images/` only restriction and encourage placement in `/assets/images/` instead. **Full paths are now required. If upgrading from MM 3.4 add `/images/` before filenames in Front Matter and `_config.yml` variables.** +- Add [home `layout`](https://github.com/mmistakes/minimal-mistakes/blob/master/_layouts/home.html) +- Added missing Turkish translations for UI text. [#621](https://github.com/mmistakes/minimal-mistakes/pull/621) +- Make author avatar optional in sidebar. +- Update **/\_includes/seo.html** for meta description. [#558](https://github.com/mmistakes/minimal-mistakes/pull/558) ### Bug Fixes -* Fix navigation bar animation "flicker" in Safari [#568](https://github.com/mmistakes/minimal-mistakes/issues/568) -* Fix `author.avatar` paths for externally hosted images. +- Fix navigation bar animation "flicker" in Safari [#568](https://github.com/mmistakes/minimal-mistakes/issues/568) +- Fix `author.avatar` paths for externally hosted images. ### Maintenance -* Add documentation around `gem "minimal-mistakes-jekyll"` installation and use. -* Add note about using full image paths for eg. `assets/images/filename.jpg` (header images, overlays, galleries, feature rows, etc.) instead of assuming they will always be in `/images/`. -* Add "[Overriding Theme Defaults](https://mmistakes.github.io/minimal-mistakes/docs/overriding-theme-defaults/)" page to documentation. +- Add documentation around `gem "minimal-mistakes-jekyll"` installation and use. +- Add note about using full image paths for eg. `assets/images/filename.jpg` (header images, overlays, galleries, feature rows, etc.) instead of assuming they will always be in `/images/`. +- Add "[Overriding Theme Defaults](https://mmistakes.github.io/minimal-mistakes/docs/overriding-theme-defaults/)" page to documentation. ## [3.4.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.8) ### Enhancements -* Improve type readability for larger viewports by bumping up base `font-size`. [#533](https://github.com/mmistakes/minimal-mistakes/issues/533) -* Update Portuguese localized UI text. [#541](https://github.com/mmistakes/minimal-mistakes/pull/541) -* Add `page.title` and via parameter to Twitter share link. [#538](https://github.com/mmistakes/minimal-mistakes/pull/538) +- Improve type readability for larger viewports by bumping up base `font-size`. [#533](https://github.com/mmistakes/minimal-mistakes/issues/533) +- Update Portuguese localized UI text. [#541](https://github.com/mmistakes/minimal-mistakes/pull/541) +- Add `page.title` and via parameter to Twitter share link. [#538](https://github.com/mmistakes/minimal-mistakes/pull/538) ### Bug Fixes -* Fix Last.fm author profile URL. [#540](https://github.com/mmistakes/minimal-mistakes/pull/540) +- Fix Last.fm author profile URL. [#540](https://github.com/mmistakes/minimal-mistakes/pull/540) ### Maintenance -* Move Brazilian Portuguese localized text under `pt-BR` key. +- Move Brazilian Portuguese localized text under `pt-BR` key. ## [3.4.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.7) ### Enhancements -* Add `layout` based and user-defined class names to `<body>` element for added CSS hooks. [#526](https://github.com/mmistakes/minimal-mistakes/pull/526) -* Add simplified Chinese localized UI text. [#532](https://github.com/mmistakes/minimal-mistakes/pull/532) +- Add `layout` based and user-defined class names to `<body>` element for added CSS hooks. [#526](https://github.com/mmistakes/minimal-mistakes/pull/526) +- Add simplified Chinese localized UI text. [#532](https://github.com/mmistakes/minimal-mistakes/pull/532) ### Bug Fixes -* Remove duplicate include of `base_path` in category-list.html [#522](https://github.com/mmistakes/minimal-mistakes/pull/522) +- Remove duplicate include of `base_path` in category-list.html [#522](https://github.com/mmistakes/minimal-mistakes/pull/522) ## [3.4.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.6) ### Enhancements -* Add Italian "comments" related localized UI text. [#514](https://github.com/mmistakes/minimal-mistakes/pull/514) +- Add Italian "comments" related localized UI text. [#514](https://github.com/mmistakes/minimal-mistakes/pull/514) ### Bug Fixes -* Disable `compress` HTML layout by default. To enable add `layout: compress` to `_layouts/default.html`. +- Disable `compress` HTML layout by default. To enable add `layout: compress` to `_layouts/default.html`. ## [3.4.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.5) ### Enhancements -* Improve line numbered code block styling when using `{% highlight linenos %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513) -* Add English fallback to "Follow" button label. [#496](https://github.com/mmistakes/minimal-mistakes/pull/496) +- Improve line numbered code block styling when using `{% highlight linenos %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513) +- Add English fallback to "Follow" button label. [#496](https://github.com/mmistakes/minimal-mistakes/pull/496) ### Bug Fixes -* Fix Firefox alignment issues with code blocks generated with the `{% highlight %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512) +- Fix Firefox alignment issues with code blocks generated with the `{% highlight %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512) ### Maintenance @@ -1061,7 +1532,7 @@ ### Enhancements -- Add overlay_filter param to hero headers [#298](https://github.com/mmistakes/minimal-mistakes/pull/298) +- Add `overlay_filter` param to hero headers [#298](https://github.com/mmistakes/minimal-mistakes/pull/298) ## [3.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.3) diff --git a/Gemfile b/Gemfile index 1291498971d7..3be9c3cd812e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ source "https://rubygems.org" -gemspec \ No newline at end of file +gemspec diff --git a/LICENSE b/LICENSE index af1e9d4727c9..67814e6c3f9e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2019 Michael Rose and contributors +Copyright (c) 2013-2024 Michael Rose and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/README.md b/README.md index 7236a175197f..3b66aeab73fe 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,13 @@ # [Minimal Mistakes Jekyll theme](https://mmistakes.github.io/minimal-mistakes/) [](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE) -[](https://jekyllrb.com/) -[](https://rubygems.org/gems/minimal-mistakes-jekyll) -[](https://www.paypal.me/mmistakes) +[](https://jekyllrb.com/) Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building personal sites, blogs, and portfolios. As the name implies, styling is purposely minimalistic to be enhanced and customized by you :smile:. :sparkles: See what's new in the [CHANGELOG](CHANGELOG.md). -**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) to continue developing and maintaining it.** - -[](https://www.paypal.me/mmistakes) - -**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll throw `Unknown tag 'include_cached'` errors at build. +**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and must be retained in the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build. [![Minimal Mistakes live preview][2]][1] @@ -31,25 +25,25 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per - Several responsive layout options (single, archive index, search, splash, and paginated home page). - Optimized for search engines with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data. - Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more. -- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and [utterances](https://utteranc.es/)). +- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), [utterances](https://utteranc.es/), and [giscus](https://giscus.app/)). - [Google Analytics](https://www.google.com/analytics/) support. -- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Malayalam, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese. +- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Bulgarian, Catalan, Chinese, Czech, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hebrew, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Kiswahili, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Norwegian (Norsk), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), Ukrainian (Українська) and Vietnamese. ## Skins (color variations) -This theme comes in nine different skins (including the default one). +This theme comes in nine different skins (in addition to the default one). | `air` | `contrast` | `dark` | | --- | --- | --- | -|  |  |  | +| [](https://mmistakes.github.io/minimal-mistakes/assets/images/air-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/contrast-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/dark-skin-archive-large.png) | | `dirt` | `mint` | `sunrise` | | --- | --- | --- | -|  |  |  | +| [](https://mmistakes.github.io/minimal-mistakes/assets/images/dirt-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/mint-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/sunrise-skin-archive-large.png) | | `aqua` | `neon` | `plum` | | --- | --- | --- | -|  |  |  | +| [](https://mmistakes.github.io/minimal-mistakes/assets/images/aqua-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/neon-skin-archive-large.png) | [](https://mmistakes.github.io/minimal-mistakes/assets/images/plum-skin-archive-large.png) | ## Demo pages @@ -116,33 +110,54 @@ To install: source "https://rubygems.org" gem "github-pages", group: :jekyll_plugins + gem "jekyll-include-cache", group: :jekyll_plugins ``` 2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`. -3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: +3. Fetch and update bundled gems by running the following [Bundler](https://bundler.io/) command: ```bash bundle ``` -4. Add `remote_theme: "mmistakes/minimal-mistakes@4.16.3"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. +4. Add `remote_theme: "mmistakes/minimal-mistakes@4.26.2"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. + +<!-- + Dev note: The version number is currently hard-coded in these files: + + - package.json + - README.md (this file) + - docs/_data/theme.yml + - docs/_pages/home.md (in Front Matter "excerpt") + + `package.json` holds the authoritative version number, and the others can be updated with `bundle exec rake version`. + + The following files should also be regenerated: + + - _includes/copyright.html, _includes/copyright.js, _sass/minimal-mistakes/_copyright.scss + (Run `bundle exec rake clean` then `bundle exec rake copyright` - all three references `package.json`) + - assets/js/main.min.js (Run `bundle exec rake js`, references `_includes/copyright.js`) + + *Tip*: The default Rake task will update all of the above files at once. -**Looking for an example?** Fork the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter) for the quickest method of getting a GitHub Pages hosted site up and running. Replace sample content with your own and configure as needed. + Additionally, the license year is hard-coded in these files and are NOT covered by a Rake task: + + - README.md (this file, near the end) + - LICENSE +--> + +**Looking for an example?** Use the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter/generate) for the quickest method of getting a GitHub Pages hosted site up and running. Generate a new repository from the starter, replace sample content with your own, and configure as needed. ## Usage For detailed instructions on how to configure, customize, add/migrate content, and more read the [theme's documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/). ---- - ## Contributing -Having trouble working with the theme? Found a typo in the documentation? Interested in adding a feature or [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first. - -Minimal Mistakes has been designed as a base for you to customize and fit your site's unique needs. Please keep this in mind when requesting features and/or submitting pull requests. If it's not something that most people will use, I probably won't consider it. When in doubt ask. +Found a typo in the documentation or interested in [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first. -This goes for author sidebar links and "share button" additions -- I have no intention of merging in every possibly option, the essentials are there to get you started :smile:. +For help with using the theme or general Jekyll support questions, please use the [Jekyll Talk forums](https://talk.jekyllrb.com/). ### Pull Requests @@ -160,8 +175,6 @@ To set up your environment to develop this theme, run `bundle install`. To test the theme, run `bundle exec rake preview` and open your browser at `http://localhost:4000/test/`. This starts a Jekyll server using content in the `test/` directory. As modifications are made to the theme and test site, it will regenerate and you should see the changes in the browser after a refresh. ---- - ## Credits ### Creator @@ -174,7 +187,7 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http ### Icons + Demo Images: -- [The Noun Project](https://thenounproject.com) -- Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam) +- [The Noun Project](https://thenounproject.com) - Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam) - [Font Awesome](http://fontawesome.io/) - [Unsplash](https://unsplash.com/) @@ -187,17 +200,17 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http - [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/) - [FitVids.JS](http://fitvidsjs.com/) - [GreedyNav.js](https://github.com/lukejacksonn/GreedyNav) -- [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll) +- [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +- [Gumshoe](https://github.com/cferdinandi/gumshoe) - [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/) - [Lunr](http://lunrjs.com) - ---- +- [Clipboard.js](https://clipboardjs.com) ## License The MIT License (MIT) -Copyright (c) 2013-2019 Michael Rose and contributors +Copyright (c) 2013-2024 Michael Rose and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -237,15 +250,19 @@ Breakpoint is distributed under the terms of the [MIT/GPL Licenses](http://opens Minimal Mistakes incorporates [FitVids.js](https://github.com/davatron5000/FitVids.js/), Copyright (c) 2013 Dave Rubert and Chris Coyier. -FitVids is distributed under the terms of the [WTFPL License](http://sam.zoy.org/wtfpl/). +FitVids is distributed under the terms of the [WTFPL License](http://www.wtfpl.net/). Minimal Mistakes incorporates [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/), Copyright (c) 2014-2016 Dmitry Semenov, http://dimsemenov.com. Magnific Popup is distributed under the terms of the MIT License. -Minimal Mistakes incorporates [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll), -Copyright (c) 2017 Karl Swedberg. -jQuery Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). +Minimal Mistakes incorporates [Smooth Scroll](http://github.com/cferdinandi/smooth-scroll), +Copyright (c) 2019 Chris Ferdinandi. +Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). + +Minimal Mistakes incorporates [Gumshoejs](http://github.com/cferdinandi/gumshoe), +Copyright (c) 2019 Chris Ferdinandi. +Gumshoejs is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). Minimal Mistakes incorporates [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/), Copyright (c) 2010 "Cowboy" Ben Alman. @@ -266,3 +283,7 @@ Pure Liquid Jekyll Table of Contents is distributed under the terms of the [MIT Minimal Mistakes incorporates [Lunr](http://lunrjs.com), Copyright (c) 2018 Oliver Nightingale. Lunr is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). + +Minimal Mistakes incorporates [clipboard.js](https://clipboardjs.com/), +Copyright (c) 2021 Zeno Rocha. +Clipboard.js is distributed under the terms of the [MIT License](https://opensource.org/licenses/MIT). diff --git a/Rakefile b/Rakefile index 921330e6ab79..af25ad8a85c7 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,15 @@ require "bundler/gem_tasks" require "jekyll" +require "json" require "listen" +require "rake/clean" +require "shellwords" +require "time" +require "yaml" + +task :default => %i[copyright changelog js version] + +package_json = JSON.parse(File.read("package.json")) def listen_ignore_paths(base, options) [ @@ -65,8 +74,7 @@ task :preview do puts " Halting auto-regeneration." exit 0 end - - loop { sleep 1000 } + sleep end rescue ThreadError # You pressed Ctrl-C, oh my! @@ -74,3 +82,126 @@ task :preview do Jekyll::Commands::Serve.process(options) end + +task :history => :changelog +task :changelog => "docs/_docs/18-history.md" +file "docs/_docs/18-history.md" => "CHANGELOG.md" do |t| + front_matter = { + title: "History", + classes: "wide", + permalink: "/docs/history/", + excerpt: "Change log of enhancements and bug fixes made to the theme.", + sidebar: { + nav: "docs", + }, + last_modified_at: Time.now.iso8601, + toc: false, + } + # https://stackoverflow.com/a/49553523/5958455 + front_matter = JSON.parse(JSON.dump(front_matter)) + File.open(t.name, "w") do |f| + f.puts front_matter.to_yaml + f.puts "---" + f.puts "" + f.puts "<!--\n Sourced from CHANGELOG.md\n See Rakefile `task :changelog` for details\n-->" + f.puts "" + f.puts "{% raw %}" + # Remove H1 + changelog = File.read(t.prerequisites.first) + .gsub(/^# [^\n]*$/m, "") + .gsub(/\(#(\d+)\)$/m, "[#\\1](https://github.com/mmistakes/minimal-mistakes/issues/\\1)") + .strip + f.write changelog + f.puts "" + f.puts "{% endraw %}" + end +end + +COPYRIGHT_LINES = [ + "Minimal Mistakes Jekyll Theme #{package_json["version"]} by Michael Rose", + "Copyright 2013-#{Time.now.year} Michael Rose - mademistakes.com | @mmistakes", + "Free for personal and commercial use under the MIT license", + "https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE", +] + +COPYRIGHT_FILES = [ + "_includes/copyright.html", + "_includes/copyright.js", + "_sass/minimal-mistakes/_copyright.scss", +] + +def genenerate_copyright_file(filename, header, prefix, footer) + File.open(filename, "w") do |f| + f.puts header + COPYRIGHT_LINES.each do |line| + f.puts "#{prefix}#{line}" + end + f.puts footer + end +end + +file "_includes/copyright.html" => "package.json" do |t| + genenerate_copyright_file(t.name, "<!--", " ", "-->") +end + +file "_includes/copyright.js" => "package.json" do |t| + genenerate_copyright_file(t.name, "/*!", " * ", " */") +end + +file "_sass/minimal-mistakes/_copyright.scss" => "package.json" do |t| + genenerate_copyright_file(t.name, "/*!", " * ", " */") +end + +task :copyright => COPYRIGHT_FILES + +CLEAN.include(*COPYRIGHT_FILES) + +JS_FILES = ["assets/js/vendor/jquery/jquery-3.6.0.js"] + Dir.glob("assets/js/plugins/*.js") + ["assets/js/_main.js"] +JS_TARGET = "assets/js/main.min.js" +task :js => JS_TARGET +file JS_TARGET => ["_includes/copyright.js"] + JS_FILES do |t| + sh Shellwords.join(%w[npx uglifyjs -c --comments /@mmistakes/ --source-map -m -o] + + [t.name] + t.prerequisites) +end + +task :watch_js do + listener = Listen.to( + "assets/js", + ignore: /main\.min\.js$/, + ) do |modified, added, removed| + Rake::Task[:js].invoke + end + + trap("INT") do + listener.stop + exit 0 + end + + begin + listener.start + sleep + rescue ThreadError + end +end + +task :version => ["docs/_data/theme.yml", "README.md", "docs/_pages/home.md"] + +file "docs/_data/theme.yml" => "package.json" do |t| + theme = { "version" => package_json["version"] } + File.open(t.name, "w") do |f| + f.puts "# for use with in-page templates" + f.puts theme.to_yaml + end +end + +file "README.md" => "package.json" do |t| + content = File.read(t.name) + content = content.gsub(/(mmistakes\/minimal-mistakes@)[\d.]+/, '\1' + package_json["version"]) + File.write(t.name, content) +end + +file "docs/_pages/home.md" => "package.json" do |t| + content = File.read(t.name) + content = content.gsub(/(\breleases\/tag\/|Latest release v)[\d.]+/, '\1' + package_json["version"]) + File.write(t.name, content) +end diff --git a/_config.yml b/_config.yml index 05932211712a..af7d57221b02 100644 --- a/_config.yml +++ b/_config.yml @@ -16,8 +16,10 @@ minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt" # Site Settings locale : "en-US" +rtl : # true, false (default) # turns direction of the page into right to left for RTL languages title : "Site Title" title_separator : "-" +subtitle : # site tagline that appears below site title in masthead name : "Your Name" description : "An amazing website." url : # the base hostname & protocol for your site e.g. "https://mmistakes.github.io" @@ -26,10 +28,13 @@ repository : # GitHub username/repo-name e.g. "mmistakes/minimal-m teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png" logo : # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png" masthead_title : # overrides the website title displayed in the masthead, use " " for no title -# breadcrumbs : false # true, false (default) +breadcrumbs : # true, false (default) words_per_minute : 200 +enable_copy_code_button : # true, false (default) +copyright : # "copyright" name, defaults to site.title +copyright_url : # "copyright" URL, defaults to site.url comments: - provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom" + provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom" disqus: shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- discourse: @@ -42,31 +47,32 @@ comments: utterances: theme : # "github-light" (default), "github-dark" issue_term : # "pathname" (default) -staticman: - allowedFields : # ['name', 'email', 'url', 'message'] - branch : # "master" - commitMessage : # "New comment by {fields.name}" - filename : # comment-{@timestamp} - format : # "yml" - moderation : # true - path : # "/_data/comments/{options.slug}" (default) - requiredFields : # ['name', 'email', 'message'] - transforms: - email : # "md5" - generatedFields: - date: - type : # "date" - options: - format : # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds" - endpoint : # URL of your own deployment with trailing slash, will fallback to the public instance + giscus: + repo_id : # Shown during giscus setup at https://giscus.app + category_name : # Full text name of the category + category_id : # Shown during giscus setup at https://giscus.app + discussion_term : # "pathname" (default), "url", "title", "og:title" + reactions_enabled : # '1' for enabled (default), '0' for disabled + theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme" + strict : # 1 for enabled, 0 for disabled (default) + input_position : # "top", "bottom" # The comment input box will be placed above or below the comments + emit_metadata : # 1 for enabled, 0 for disabled (default) # https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#imetadatamessage + lang : # "en" (default) + lazy : # true, false # Loading of the comments will be deferred until the user scrolls near the comments container. + staticman: + branch : # "master" + endpoint : # "https://{your Staticman v3 API}/v3/entry/github/" reCaptcha: siteKey : secret : atom_feed: path : # blank (default) uses feed.xml + hide : # true, false (default) search : # true, false (default) search_full_content : # true, false (default) search_provider : # lunr (default), algolia, google +lunr: + search_within_pages : # true, false (default) algolia: application_id : # YOUR_APPLICATION_ID index_name : # YOUR_INDEX_NAME @@ -78,8 +84,9 @@ google: # SEO Related google_site_verification : bing_site_verification : -yandex_site_verification : naver_site_verification : +yandex_site_verification : +baidu_site_verification : # Social Sharing twitter: @@ -98,7 +105,7 @@ social: # Analytics analytics: - provider : false # false (default), "google", "google-universal", "custom" + provider : # false (default), "google", "google-universal", "google-gtag", "custom" google: tracking_id : anonymize_ip : # true, false (default) @@ -108,13 +115,13 @@ analytics: author: name : "Your Name" avatar : # path of avatar image, e.g. "/assets/images/bio-photo.jpg" - bio : "I am an amazing person." + bio : "I am an **amazing** person." location : "Somewhere" email : links: - label: "Email" icon: "fas fa-fw fa-envelope-square" - # url: mailto:your.name@email.com + # url: "mailto:your.name@email.com" - label: "Website" icon: "fas fa-fw fa-link" # url: "https://your-website.com" @@ -179,6 +186,7 @@ exclude: - log - node_modules - package.json + - package-lock.json - Rakefile - README - tmp @@ -214,14 +222,38 @@ kramdown: # Sass/SCSS sass: sass_dir: _sass - style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style + style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style # Outputting permalink: /:categories/:title/ +timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + + +# Pagination with jekyll-paginate paginate: 5 # amount of posts to show paginate_path: /page:num/ -timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + +# Pagination with jekyll-paginate-v2 +# See https://github.com/sverrirs/jekyll-paginate-v2/blob/master/README-GENERATOR.md#site-configuration +# for configuration details +pagination: + # Set enabled to true to use paginate v2 + # enabled: true + debug: false + collection: 'posts' + per_page: 10 + permalink: '/page/:num/' + title: ':title - page :num' + limit: 0 + sort_field: 'date' + sort_reverse: true + category: 'posts' + tag: '' + locale: '' + trail: + before: 2 + after: 2 # Plugins (previously gems:) @@ -230,7 +262,6 @@ plugins: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji - jekyll-include-cache # mimic GitHub Pages with --safe @@ -239,7 +270,6 @@ whitelist: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji - jekyll-include-cache @@ -251,8 +281,8 @@ whitelist: # - Archive page should exist at path when using Liquid method or you can # expect broken links (especially with breadcrumbs enabled) # - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/ -# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/ -# - <base_path/my-awesome-category/index.html ~> path: / +# - <base_path>/categories/my-awesome-category/index.html ~> path: /categories/ +# - <base_path>/my-awesome-category/index.html ~> path: / category_archive: type: liquid path: /categories/ @@ -273,7 +303,7 @@ tag_archive: # HTML Compression -# - http://jch.penibelst.de/ +# - https://jch.penibelst.de/ compress_html: clippings: all ignore: diff --git a/_data/ui-text.yml b/_data/ui-text.yml index 6363c48dba13..c1d3a12a9a9a 100644 --- a/_data/ui-text.yml +++ b/_data/ui-text.yml @@ -3,6 +3,10 @@ # English (default) # ----------------- en: &DEFAULT_EN + skip_links : "Skip links" + skip_primary_nav : "Skip to primary navigation" + skip_content : "Skip to content" + skip_footer : "Skip to footer" page : "Page" pagination_previous : "Previous" pagination_next : "Next" @@ -41,7 +45,9 @@ en: &DEFAULT_EN comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved." comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." loading_label : "Loading..." + search_label_text : "Enter your search term..." search_placeholder_text : "Enter your search term..." + search_algolia_no_results : "No results" results_found : "Result(s) found" back_to_top : "Back to top" en-US: @@ -56,44 +62,53 @@ en-AU: # Spanish # ------- es: &DEFAULT_ES + skip_links : "Saltar enlaces" + skip_primary_nav : "Saltar a navegación principal" + skip_content : "Saltar a contenido" + skip_footer : "Saltar a pie" page : "Página" pagination_previous : "Anterior" pagination_next : "Siguiente" breadcrumb_home_label : "Inicio" breadcrumb_separator : "/" - menu_label : - search_label : - toc_label : "Contenidos" - ext_link_label : "Enlace" + menu_label : "Alternar menú" + search_label : "Alternar búsqueda" + toc_label : "En esta página" + ext_link_label : "Enlace directo" less_than : "menos de" - minute_read : "minuto de lectura" - share_on_label : "Compartir" + minute_read : "minuto(s) de lectura" + share_on_label : "Compartir en" meta_label : tags_label : "Etiquetas:" categories_label : "Categorías:" date_label : "Actualizado:" - comments_label : "Dejar un comentario" - comments_title : "Comentar" + comments_label : "Deja un comentario" + comments_title : "Comentarios" more_label : "Ver más" - related_label : "Podrías ver también" + related_label : "Puede que también te interese" follow_label : "Seguir:" feed_label : "Feed" - powered_by : "Powered by" + powered_by : "Funciona con" website_label : "Sitio web" - email_label : "Email" + email_label : "Correo electrónico" recent_posts : "Entradas recientes" - undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml" - comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos" + undefined_wpm : "El parámetro words_per_minute (palabras por minuto) no está definido en _config.yml" + comment_form_info : "Tu dirección de correo electrónico no se publicará. Los campos obligatorios están marcados" comment_form_comment_label : "Comentario" - comment_form_md_info : "Markdown está soportado." + comment_form_md_info : "Puedes utilizar Markdown" comment_form_name_label : "Nombre" - comment_form_email_label : "Dirección de E-mail" + comment_form_email_label : "Dirección de correo electrónico" comment_form_website_label : "Sitio web (opcional)" - comment_btn_submit : "Enviar Commentario" + comment_btn_submit : "Enviar comentario" comment_btn_submitted : "Enviado" - comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado" - comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo" + comment_success_msg : "¡Gracias por tu comentario! Se publicará una vez sea aprobado." + comment_error_msg : "Ha ocurrido un error al enviar el comentario. Asegúrate de completar todos los campos obligatorios e inténtalo de nuevo." loading_label : "Cargando..." + search_label_text : "Términos de búsqueda..." + search_placeholder_text : "Términos de búsqueda..." + search_algolia_no_results : + results_found : "resultado(s) encontrado(s)" + back_to_top : "Volver arriba" es-ES: <<: *DEFAULT_ES es-CO: @@ -102,6 +117,10 @@ es-CO: # French # ------ fr: &DEFAULT_FR + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Page" pagination_previous : "Précédent" pagination_next : "Suivant" @@ -140,7 +159,9 @@ fr: &DEFAULT_FR comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé." comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez." loading_label : "Chargement..." + search_label_text : search_placeholder_text : "Entrez votre recherche..." + search_algolia_no_results : results_found : "Résultat(s) trouvé(s)" back_to_top : "Retour en haut" fr-FR: @@ -153,6 +174,10 @@ fr-CH: # Turkish # ------- tr: &DEFAULT_TR + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Sayfa" pagination_previous : "Önceki" pagination_next : "Sonraki" @@ -191,12 +216,18 @@ tr: &DEFAULT_TR comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir." comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin." loading_label : "Yükleniyor..." + search_label_text : + search_algolia_no_results : tr-TR: <<: *DEFAULT_TR # Portuguese # ---------- pt: &DEFAULT_PT + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Página" pagination_previous : "Anterior" pagination_next : "Seguinte" @@ -235,54 +266,67 @@ pt: &DEFAULT_PT comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado." comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente." loading_label : "A carregar..." + search_label_text : + search_algolia_no_results : pt-PT: <<: *DEFAULT_PT # Brazilian Portuguese pt-BR: + skip_links : "Pular links" + skip_primary_nav : "Pular para navegação primária" + skip_content : "Pular para conteúdo" + skip_footer : "Pular para rodapé" page : "Página" pagination_previous : "Anterior" pagination_next : "Próxima" - breadcrumb_home_label : "Home" + breadcrumb_home_label : "Início" breadcrumb_separator : "/" - menu_label : - search_label : "Buscar" + menu_label : "Chavear menu" + search_label : "Chavear busca" toc_label : "Nesta página" ext_link_label : "Link direto" - less_than : "menos que" + less_than : "menos de" minute_read : "minuto(s) de leitura" - share_on_label : "Compartilhe: " + share_on_label : "Compartilhe" meta_label : tags_label : "Tags:" categories_label : "Categorias:" date_label : "Atualizado em:" comments_label : "Deixe um comentário" comments_title : "Comentários" - more_label : "Aprenda mais" + more_label : "Saiba mais" related_label : "Talvez você também goste" - follow_label : "Acompanhe no" + follow_label : "Siga:" feed_label : "Feed" powered_by : "Desenvolvido com" website_label : "Site" - email_label : "Email" - recent_posts : "Postagens recentes" - undefined_wpm : "Parâmetro indefinido em words_per_minute no _config.yml" - comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados" + email_label : "E-mail" + recent_posts : "Publicações recentes" + undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml" + comment_form_info : "Seu e-mail não será publicado. Os campos obrigatórios estão marcados" comment_form_comment_label : "Comentário" - comment_form_md_info : "Markdown é suportado." + comment_form_md_info : "Você pode usar Markdown." comment_form_name_label : "Nome" - comment_form_email_label : "Email" + comment_form_email_label : "E-mail" comment_form_website_label : "Site (opcional)" - comment_btn_submit : "Enviar Comentário" + comment_btn_submit : "Enviar comentário" comment_btn_submitted : "Enviado" comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado." - comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente." + comment_error_msg : "Desculpe, ocorreu um erro no envio. Verifique se todos os campos obrigatórios foram preenchidos e tente novamente." loading_label : "Carregando..." + search_label_text : "Digite seu termo de busca..." + search_placeholder_text : "Digite seu termo de busca..." + search_algolia_no_results : "Nenhum resultado" + results_found : "Resultado(s) encontrado(s)" back_to_top : "Voltar para o topo" - search_placeholder_text : "Pesquisar..." # Italian # ------- it: &DEFAULT_IT + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Pagina" pagination_previous : "Precedente" pagination_next : "Prossima" @@ -321,7 +365,9 @@ it: &DEFAULT_IT comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato." comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova." loading_label : "Caricamento..." + search_label_text : search_placeholder_text : "Inserisci termini di ricerca..." + search_algolia_no_results : results_found : "Risultati" back_to_top : "Vai su" it-IT: @@ -330,17 +376,21 @@ it-IT: # Chinese (zh-CN Chinese - China) # -------------------------------- zh: &DEFAULT_ZH_HANS + skip_links : "跳转链接" + skip_primary_nav : "转到主导航栏" + skip_content : "转到内容" + skip_footer : "转到底部" page : "页面" - pagination_previous : "向前" - pagination_next : "向后" + pagination_previous : "上一页" + pagination_next : "下一页" breadcrumb_home_label : "首页" breadcrumb_separator : "/" menu_label : "切换菜单" - search_label : - toc_label : "在本页上" + search_label : "切换搜索" + toc_label : "目录" ext_link_label : "直接链接" less_than : "少于" - minute_read : "分钟读完" + minute_read : "分钟阅读" share_on_label : "分享" meta_label : tags_label : "标签:" @@ -356,10 +406,10 @@ zh: &DEFAULT_ZH_HANS website_label : "网站" email_label : "电子邮箱" recent_posts : "最新文章" - undefined_wpm : "_config.yml配置中words_per_minute字段未定义" + undefined_wpm : "_config.yml 配置中 words_per_minute 字段未定义" comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。" comment_form_comment_label : "评论" - comment_form_md_info : "Markdown语法已支持。" + comment_form_md_info : "支持 Markdown 语法。" comment_form_name_label : "姓名" comment_form_email_label : "电子邮箱" comment_form_website_label : "网站(可选)" @@ -368,7 +418,9 @@ zh: &DEFAULT_ZH_HANS comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。" comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。" loading_label : "正在加载..." + search_label_text : "输入您要搜索的关键词..." search_placeholder_text : "输入您要搜索的关键词..." + search_algolia_no_results : "无结果" results_found : "条记录匹配" back_to_top : "返回顶部" zh-CN: @@ -377,13 +429,17 @@ zh-SG: <<: *DEFAULT_ZH_HANS # Taiwan (Traditional Chinese) zh-TW: &DEFAULT_ZH_HANT + skip_links : + skip_primary_nav : "轉至主導航欄" + skip_content : "轉至内容" + skip_footer : "轉至頁脚" page : "頁面" - pagination_previous : "較舊" - pagination_next : "較新" + pagination_previous : "前一頁" + pagination_next : "後一頁" breadcrumb_home_label : "首頁" breadcrumb_separator : "/" menu_label : "切換選單" - search_label : + search_label : "切換搜索" toc_label : "本頁" ext_link_label : "外部連結" less_than : "少於" @@ -406,7 +462,7 @@ zh-TW: &DEFAULT_ZH_HANT undefined_wpm : "_config.yml 中未定義 words_per_minute" comment_form_info : "您的電子信箱不會被公開. 必填部份已標記" comment_form_comment_label : "留言內容" - comment_form_md_info : "支援Markdown語法。" + comment_form_md_info : "支援 Markdown 語法。" comment_form_name_label : "名字" comment_form_email_label : "電子信箱帳號" comment_form_website_label : "網頁 (可選填)" @@ -415,12 +471,21 @@ zh-TW: &DEFAULT_ZH_HANT comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。" comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。" loading_label : "載入中..." + search_label_text : "輸入您要搜索的關鍵詞..." + search_placeholder_text : "輸入您要搜索的關鍵詞..." + search_algolia_no_results : "沒有結果" + results_found : "條匹配的記錄" + back_to_top : "回到頂部" zh-HK: <<: *DEFAULT_ZH_HANT # German / Deutsch # ---------------- de: &DEFAULT_DE + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Seite" pagination_previous : "Vorherige" pagination_next : "Nächste" @@ -431,7 +496,7 @@ de: &DEFAULT_DE toc_label : "Auf dieser Seite" ext_link_label : "Direkter Link" less_than : "weniger als" - minute_read : "Minuten zum lesen" + minute_read : "Minuten zum Lesen" share_on_label : "Teilen auf" meta_label : tags_label : "Tags:" @@ -459,7 +524,9 @@ de: &DEFAULT_DE comment_success_msg : "Danke für Ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde." comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen Sie alle benötigten Felder aus und versuchen Sie es erneut." loading_label : "Lade..." + search_label_text : search_placeholder_text : "Suchbegriff eingeben..." + search_algolia_no_results : results_found : "Ergebnis(se) gefunden" de-DE: <<: *DEFAULT_DE @@ -477,6 +544,10 @@ de-LU: # Nepali (Nepal) # -------------- ne: &DEFAULT_NE + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "पृष्ठ" pagination_previous : "अघिल्लो" pagination_next : "अर्को" @@ -515,12 +586,18 @@ ne: &DEFAULT_NE comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।" comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।" loading_label : "लोड हुँदैछ ..." + search_label_text : + search_algolia_no_results : ne-NP: <<: *DEFAULT_NE # Korean # ------ ko: &DEFAULT_KO + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "페이지" pagination_previous : "이전" pagination_next : "다음" @@ -559,12 +636,21 @@ ko: &DEFAULT_KO comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다." comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요." loading_label : "로딩중..." + search_label_text : + search_placeholder_text : "검색어를 입력하세요..." + search_algolia_no_results : + results_found : "개 결과 발견" + back_to_top : "맨 위로 이동" ko-KR: <<: *DEFAULT_KO # Russian / Русский # ----------------- ru: &DEFAULT_RU + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Страница" pagination_previous : "Предыдущая" pagination_next : "Следующая" @@ -603,7 +689,9 @@ ru: &DEFAULT_RU comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки." comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова." loading_label : "Отправка..." + search_label_text : search_placeholder_text : "Введите поисковый запрос..." + search_algolia_no_results : results_found : "Найдено" ru-RU: <<: *DEFAULT_RU @@ -611,6 +699,10 @@ ru-RU: # Lithuanian / Lietuviškai # ------------------------ lt: &DEFAULT_LT + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Puslapis" pagination_previous : "Ankstesnis" pagination_next : "Sekantis" @@ -638,7 +730,7 @@ lt: &DEFAULT_LT email_label : "El. paštas" recent_posts : "Naujausi įrašai" undefined_wpm : "Nedeklaruotas parametras words_per_minute faile _config.yml" - comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti." + comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti" comment_form_comment_label : "Komentaras" comment_form_md_info : "Markdown palaikomas." comment_form_name_label : "Vardas" @@ -649,12 +741,18 @@ lt: &DEFAULT_LT comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas." comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą." loading_label : "Kraunama..." + search_label_text : + search_algolia_no_results : lt-LT: <<: *DEFAULT_LT # Greek # ----- gr: &DEFAULT_GR + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Σελίδα" pagination_previous : "Προηγούμενo" pagination_next : "Επόμενo" @@ -693,7 +791,9 @@ gr: &DEFAULT_GR comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί." comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά." loading_label : "Φόρτωση..." + search_label_text : search_placeholder_text : "Εισάγετε όρο αναζήτησης..." + search_algolia_no_results : results_found : "Αποτελέσματα" gr-GR: <<: *DEFAULT_GR @@ -701,6 +801,10 @@ gr-GR: # Swedish # ------- sv: &DEFAULT_SV + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Sidan" pagination_previous : "Föregående" pagination_next : "Nästa" @@ -728,7 +832,7 @@ sv: &DEFAULT_SV email_label : "E-post" recent_posts : "Senaste inlägg" undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml" - comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade." + comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade" comment_form_comment_label : "Kommentar" comment_form_md_info : "Stöd för Markdown finns." comment_form_name_label : "Namn" @@ -739,7 +843,9 @@ sv: &DEFAULT_SV comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts." comment_error_msg : "Tyvärr det har blivit något fel i ett av fälten, se till att du fyllt i alla obligatoriska fält och försök igen." loading_label : "Laddar..." + search_label_text : search_placeholder_text : "Fyll i sökterm..." + search_algolia_no_results : results_found : "Resultat funna" back_to_top : "Tillbaka till toppen" sv-SE: @@ -750,6 +856,10 @@ sv-FI: # Dutch # ----- nl: &DEFAULT_NL + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Pagina" pagination_previous : "Vorige" pagination_next : "Volgende" @@ -788,6 +898,11 @@ nl: &DEFAULT_NL comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd." comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw." loading_label : "Laden..." + search_label_text : "Geef uw zoekterm in..." + search_placeholder_text : "Geef uw zoekterm in..." + search_algolia_no_results : + results_found : "Resultaat gevonden" + back_to_top : "Terug naar boven" nl-BE: <<: *DEFAULT_NL nl-NL: @@ -796,78 +911,91 @@ nl-NL: # Indonesian # ---------- id: &DEFAULT_ID + skip_links : + skip_primary_nav : "Loncat ke navigasi" + skip_content : "Loncat ke konten" + skip_footer : "Loncat ke footer" page : "Halaman" - pagination_previous : "Kembali" - pagination_next : "Maju" - breadcrumb_home_label : "Home" + pagination_previous : "Sebelumnya" + pagination_next : "Selanjutnya" + breadcrumb_home_label : "Beranda" breadcrumb_separator : "/" - menu_label : "Menu Toggle" - search_label : + menu_label : "Menu" + search_label : "Pencarian" toc_label : "Pada Halaman Ini" ext_link_label : "Link langsung" less_than : "Kurang dari" - minute_read : "Waktu baca" - share_on_label : "Berbagi di" + minute_read : "menit baca" + share_on_label : "Bagikan di" meta_label : - tags_label : "Golongan:" + tags_label : "Label:" categories_label : "Kategori:" date_label : "Diupdate:" comments_label : "Tinggalkan komentar" comments_title : "Komentar" more_label : "Pelajari lagi" - related_label : "Anda juga akan suka" + related_label : "Anda mungkin suka" follow_label : "Ikuti:" feed_label : "Feed" powered_by : "Didukung oleh" website_label : "Website" email_label : "Email" - recent_posts : "Posting terbaru" + recent_posts : "Post terbaru" undefined_wpm : "Parameter terdeskripsi words_per_minute di _config.yml" - comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai" + comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai dengan tanda " comment_form_comment_label : "Komentar" - comment_form_md_info : "Markdown disupport." + comment_form_md_info : "Markdown didukung." comment_form_name_label : "Nama" comment_form_email_label : "Alamat email" comment_form_website_label : "Website (opsional)" - comment_btn_submit : "Submit Komentar" - comment_btn_submitted : "Telah disubmit" - comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui." - comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." - loading_label : "Sedang meload..." + comment_btn_submit : "Kirim Komentar" + comment_btn_submitted : "Telah dikirim" + comment_success_msg : "Terimakasih atas komentar Anda! Komentar akan tampil setelah disetujui." + comment_error_msg : "Maaf, ada kesalahan pada komentar Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." + loading_label : "Sedang memuat..." + search_label_text : "Masukkan kata kunci pencarian..." + search_placeholder_text : "Masukkan kata kunci pencarian..." + search_algolia_no_results : "Tidak ada hasil" + results_found : "Hasil pencarian ditemukan" + back_to_top : "Kembali ke awal" id-ID: <<: *DEFAULT_ID # Vietnamese # ---------- vi: &DEFAULT_VI + skip_links : "Đường dẫn tắt" + skip_primary_nav : "Nhảy tới thanh điều hướng" + skip_content : "Nhảy tới nội dung" + skip_footer : "Nhảy tới chân trang" page : "Trang" pagination_previous : "Trước" - pagination_next : "Sau" + pagination_next : "Kế tiếp" breadcrumb_home_label : "Trang chủ" breadcrumb_separator : "/" menu_label : "Menu" - search_label : - toc_label : "Tại trang này" + search_label : "Tìm kiếm" + toc_label : "Mục lục" ext_link_label : "Đường dẫn trực tiếp" - less_than : "nhỏ hơn" - minute_read : "phút đọc" + less_than : "chỉ cần" + minute_read : "phút để đọc" share_on_label : "Chia sẻ tại" meta_label : - tags_label : "Nhãn:" - categories_label : "Chủ đề:" - date_label : "Cập nhật:" + tags_label : "Thẻ:" + categories_label : "Danh mục:" + date_label : "Ngày cập nhật:" comments_label : "Để lại bình luận" comments_title : "Bình luận" more_label : "Mở rộng" related_label : "Có thể bạn cũng thích" follow_label : "Theo dõi:" feed_label : "Feed" - powered_by : "Được hỗ trợ bởi" + powered_by : "Xây dựng trên nền tảng" website_label : "Website" email_label : "Email" recent_posts : "Bài viết mới" undefined_wpm : "Chưa định nghĩa thông số words_per_minute tại _config.yml" - comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu." + comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu" comment_form_comment_label : "Bình luận" comment_form_md_info : "Hỗ trợ Markdown." comment_form_name_label : "Tên" @@ -878,7 +1006,9 @@ vi: &DEFAULT_VI comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt." comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại." loading_label : "Đang tải..." + search_label_text : "Nhập từ khóa cần tìm..." search_placeholder_text : "Nhập từ khóa cần tìm..." + search_algolia_no_results : "Không tìm thấy kết quả nào" results_found : "Kết quả tìm được" back_to_top : "Lên đầu trang" vi-VN: @@ -887,13 +1017,17 @@ vi-VN: # Danish # ------ da: &DEFAULT_DA + skip_links : + skip_primary_nav : "Gå til hovedmenuen" + skip_content : "Gå til indholdet" + skip_footer : "Gå til sidefoden" page : "Side" pagination_previous : "Forrige" pagination_next : "Næste" - breadcrumb_home_label : "Home" + breadcrumb_home_label : "Forside" breadcrumb_separator : "/" menu_label : "Vis/skjul menu" - search_label : + search_label : "Søgning til/fra" toc_label : "På denne side" ext_link_label : "Direkte link" less_than : "mindre end" @@ -925,7 +1059,9 @@ da: &DEFAULT_DA comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt." comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt." loading_label : "Indlæser..." + search_label_text : "Hvad leder du efter..." search_placeholder_text : "Hvad leder du efter..." + search_algolia_no_results : "Ingen resultater" results_found : "Resultat(er) fundet" back_to_top : "Tilbage til toppen" da-DK: @@ -934,13 +1070,17 @@ da-DK: # Polish # ------ pl: &DEFAULT_PL + skip_links : "Pomiń linki" + skip_primary_nav : "Przejdź do nawigacji" + skip_content : "Przejdź do treści" + skip_footer : "Przejdź do stopki" page : "Strona" pagination_previous : "Poprzednia" pagination_next : "Następna" breadcrumb_home_label : "Strona główna" breadcrumb_separator : "/" menu_label : "Przełącz menu" - search_label : + search_label : "Przełącz wyszukiwanie" toc_label : "Spis treści" ext_link_label : "Link bezpośredni" less_than : "mniej niż" @@ -972,12 +1112,21 @@ pl: &DEFAULT_PL comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji." comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie." loading_label : "Trwa ładowanie strony..." + search_label_text : "Wprowadź kryteria wyszukiwania..." + search_placeholder_text : "Wprowadź kryteria wyszukiwania..." + search_algolia_no_results : "Brak wyników" + results_found : "Znalezione wyniki" + back_to_top : "Wróć na górę" pl-PL: <<: *DEFAULT_PL # Japanese # -------- ja: &DEFAULT_JA + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "ページ" pagination_previous : "前へ" pagination_next : "次へ" @@ -1016,7 +1165,9 @@ ja: &DEFAULT_JA comment_success_msg : "コメントありがとうございます! コメントは承認されるとページに表示されます。" comment_error_msg : "送信エラーです。必須項目がすべて入力されていることを確認して再送信してください。" loading_label : "読み込み中..." + search_label_text : search_placeholder_text : "検索キーワードを入力してください..." + search_algolia_no_results : results_found : "件" ja-JP: <<: *DEFAULT_JA @@ -1024,6 +1175,10 @@ ja-JP: # Slovak # ----------------- sk: &DEFAULT_SK + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Stránka" pagination_previous : "Predošlá" pagination_next : "Ďalšia" @@ -1062,7 +1217,9 @@ sk: &DEFAULT_SK comment_success_msg : "Ďakujem za tvoj komentár! Po schválení bude zobrazený na stránke." comment_error_msg : "Prepáč, pri ukladaní nastala chyba. Ubezpeč sa prosím, že si vyplnil všetky požadované polia a skús znova." loading_label : "Načítava sa..." + search_label_text : search_placeholder_text : "Zadaj hľadaný výraz..." + search_algolia_no_results : results_found : "Nájdených výsledkov" back_to_top : "Na začiatok stránky" sk-SK: @@ -1071,6 +1228,10 @@ sk-SK: # Hungarian # ----------------- hu: &DEFAULT_HU + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Oldal" pagination_previous : "Előző" pagination_next : "Következő" @@ -1098,7 +1259,7 @@ hu: &DEFAULT_HU email_label : "Email" recent_posts : "Friss cikkek" undefined_wpm : "Ismeretlen paraméter words_per_minute : _config.yml" - comment_form_info : "Az e-mail címed nem lesz publikus. A csillagozott mezők kitöltése kötelező." + comment_form_info : "Az e-mail címed nem lesz publikus. A csillagozott mezők kitöltése kötelező" comment_form_comment_label : "Hozzászólás" comment_form_md_info : "Támogatott formázási mód: Markdown" comment_form_name_label : "Név" @@ -1109,7 +1270,9 @@ hu: &DEFAULT_HU comment_success_msg : "Köszönjük a Hozzászólást! A Hozzászólások csak előzetes moderáció után lesznek publikusak." comment_error_msg : "Hoppá, hiba történt a beküldés közben. Kérlek ellenőrizd hogy minden kötelező mező ki van-e töltve." loading_label : "Betöltés..." + search_label_text : search_placeholder_text : "Keresendő szöveg..." + search_algolia_no_results : results_found : "Találatok:" back_to_top : "Oldal tetejére" hu-HU: @@ -1118,6 +1281,10 @@ hu-HU: # Romanian # ----------------- ro: &DEFAULT_RO + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Pagina" pagination_previous : "Anterior" pagination_next : "Următor" @@ -1156,7 +1323,9 @@ ro: &DEFAULT_RO comment_success_msg : "Mulțumesc pentru comentariu! Va apărea pe site în momentul în care va fi aprobat." comment_error_msg : "Scuze, este o problemă cu comentariul tău. Asigură-te că toate câmpurile obligatorii au fost completate și încearcă din nou." loading_label : "Se încarcă..." + search_label_text : search_placeholder_text : "Caută ceva..." + search_algolia_no_results : results_found : "Rezultate găsite" back_to_top : "Înapoi în susul paginii" ro-RO: @@ -1165,19 +1334,23 @@ ro-RO: # Punjabi # ----------------- pa: &DEFAULT_PA + skip_links : "ਲਿੰਕ ਛੱਡੋ" + skip_primary_nav : "ਮੂਲ ਮਾਰਗ ਛੱਡੋ" + skip_content : "ਸਮੱਗਰੀ ਛੱਡੋ" + skip_footer : "ਅੰਤ ਵਿਚ ਲਿਖਿਆ ਛੱਡੋ" page : "ਸਫ਼ਾ" pagination_previous : "ਪਿਛਲਾ" pagination_next : "ਅਗਲਾ " breadcrumb_home_label : "ਘਰ" breadcrumb_separator : "/" menu_label : "ਟੌਗਲ ਮੀਨੂ" - search_label : + search_label : "ਖੋਜ" toc_label : "ਇਸ ਸਫ਼ੇ 'ਤੇ" ext_link_label : "ਸਿੱਧਾ ਸੰਪਰਕ" less_than : "ਤੋਂ ਘੱਟ" minute_read : "ਮਿੰਟ ਵਿੱਚ ਪੜਿਆ ਜਾ ਸਕਦਾ ਹੈ" share_on_label : "ਸਾਂਝਾ ਕਰੋ" - meta_label : + meta_label : "ਸਵੈ-ਸੰਦਰਭ ਜਾਣਕਾਰੀ" tags_label : "ਟੈਗ" categories_label : "ਵਰਗ" date_label : "ਅਪਡੇਟ ਕੀਤਾ:" @@ -1203,7 +1376,9 @@ pa: &DEFAULT_PA comment_success_msg : "ਤੁਹਾਡੀਆਂ ਟਿੱਪਣੀਆਂ ਲਈ ਧੰਨਵਾਦ! ਇਹ ਮਨਜ਼ੂਰੀ ਮਿਲਣ ਦੇ ਬਾਅਦ ਸਾਈਟ 'ਤੇ ਦਿਖਾਇਆ ਜਾਵੇਗਾ।" comment_error_msg : "ਮੁਆਫ ਕਰਨਾ, ਤੁਹਾਡੀ ਅਧੀਨਗੀ ਵਿੱਚ ਕੋਈ ਗਲਤੀ ਹੋਈ ਸੀ ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਖੇਤਰ ਪੂਰੇ ਹੋ ਗਏ ਹਨ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" loading_label : "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..." - search_placeholder_text : "ਆਪਣੀ ਖੋਜ ਦੇ ਸ਼ਬਦ ਨੂੰ ਦਰਜ ਕਰੋ..." + search_label_text : "ਖੋਜ" + search_placeholder_text : "ਆਪਣੀ ਖੋਜ ਦੇ ਸ਼ਬਦ ਨੂੰ ਦਰਜ ਕਰੋ..." + search_algolia_no_results : results_found : "ਨਤੀਜਾ ਮਿਲਿਆ/ਮਿਲੇ" back_to_top : "ਵਾਪਸ ਚੋਟੀ 'ਤੇ ਜਾਓ" pa-IN: @@ -1212,6 +1387,10 @@ pa-IN: # Persian (Farsi) # -------------- fa: &DEFAULT_FA + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "صفحه" pagination_previous : "قبلی" pagination_next : "بعدی" @@ -1221,7 +1400,7 @@ fa: &DEFAULT_FA toc_label : "در این صفحه" ext_link_label : "لینک مستقیم" less_than : " " - minute_read : "(طول مطالعه (دقیقه" + minute_read : "دقیقه، طول مطالعه" share_on_label : "اشتراک گذاری در" meta_label : tags_label : "تگ ها: " @@ -1248,8 +1427,10 @@ fa: &DEFAULT_FA comment_btn_submitted : "ارسال شد" comment_success_msg : ".باتشکر از ارسال دیدگاه! پس از تأیید، این دیدگاه در سایت نشان داده خواهد شد" comment_error_msg : ".متاسفانه در ارسال شما خطایی بود. لطفا مطمئن شوید تمام فیلدهای مورد نیاز تکمیل شده و دوباره امتحان کنید" - loading_label : "...بارگذاری" - search_placeholder_text : "...عبارت جستجوی خود را وارد کنید" + loading_label : "بارگذاری..." + search_label_text : + search_placeholder_text : "عبارت جستجوی خود را وارد کنید..." + search_algolia_no_results : results_found : "نتایج" back_to_top : "بازگشت به بالا" fa-IR: @@ -1259,6 +1440,10 @@ fa-IR: # Malayalam # ----------------- ml: &DEFAULT_ML + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "പേജ്" pagination_previous : "തിരികെ" pagination_next : "മുന്നോട്ട്" @@ -1296,8 +1481,10 @@ ml: &DEFAULT_ML comment_btn_submitted : "രേഖപ്പെടുത്തി" comment_success_msg : "നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി! ഇത് അംഗീകരിച്ചുകഴിഞ്ഞാൽ ഇത് സൈറ്റിൽ പ്രദർശിപ്പിക്കും." comment_error_msg : "ക്ഷമിക്കണം, നിങ്ങളുടെ സമർപ്പണവുമായി ബന്ധപ്പെട്ട് ഒരു പിശകുണ്ടായിരുന്നു. ആവശ്യമായ എല്ലാ ഫീൽഡുകളും പൂർത്തിയായിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, വീണ്ടും ശ്രമിക്കുക." - loading_label : "ലോഡിംഗ്..." + loading_label : "ലോഡിംഗ്..." + search_label_text : search_placeholder_text : "നിങ്ങളുടെ തിരയൽ പദം നൽകുക..." + search_algolia_no_results : results_found : "ഫലം (കൾ) കണ്ടെത്തി" back_to_top : "മുകളിലേയ്ക്ക്" ml-IN: @@ -1306,6 +1493,10 @@ ml-IN: # Thailand # -------------- th: &DEFAULT_TH + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "หน้า" pagination_previous : "ก่อนหน้า" pagination_next : "ถัดไป" @@ -1344,7 +1535,9 @@ th: &DEFAULT_TH comment_success_msg : "ขอบคุณสำหรับการแสดงความคิดเห็น! ความคิดเห็นจะได้รับการแสดงหลังจากได้รับการยืนยัน" comment_error_msg : "ขออภัย, มีบางอย่างผิดพลาดจากการส่งแบบฟอร์ม กรุณาตรวจทานทุกช่อง และลองส่งใหม่อีกครั้ง" loading_label : "กำลังโหลด..." + search_label_text : search_placeholder_text : "ใส่คำค้นหาของคุณ..." + search_algolia_no_results : results_found : "ผลการค้นหา พบ" back_to_top : "กลับด้านบน" th-TH: @@ -1353,6 +1546,10 @@ th-TH: # Hindi # ----------------- hi: &DEFAULT_HI + skip_links : "लिंक छोड़ें" + skip_primary_nav : "प्राथमिक पथ-प्रदर्शन छोड़ें" + skip_content : "सामग्री छोड़ें" + skip_footer : "अंत-में लिखा छोड़ें" page : "पृष्ठ" pagination_previous : "पिछला" pagination_next : "अगला" @@ -1364,7 +1561,7 @@ hi: &DEFAULT_HI less_than : "से कम" minute_read : "मिनट में पढ़ सकते हैं" share_on_label : "साझा करें" - meta_label : + meta_label : "स्व-संदर्भात्मक जानकारी" tags_label : "अंकितक:" categories_label : "श्रेणियाँ:" date_label : "अपडेट किया गया:" @@ -1390,12 +1587,599 @@ hi: &DEFAULT_HI comment_success_msg : "आपके कमेंट के लिए धन्यवाद! इसे स्वीकृति मिलने के बाद साइट पर दिखाया जाएगा।" comment_error_msg : "क्षमा करें, आपके सबमिशन के साथ एक त्रुटि हुई थी। कृपया सुनिश्चित करें कि सभी आवश्यक फ़ील्ड पूरा हो गए हैं और पुनः प्रयास करें।" loading_label : "लोड हो रहा है..." + search_label_text : "खोज" search_placeholder_text : "अपना खोज शब्द दर्ज करें..." + search_algolia_no_results : results_found : "परिणाम मिला/मिले" back_to_top : "शीर्ष पर वापस" hi-IN: <<: *DEFAULT_HI - + +# Catalan +# -------------- +ca: &DEFAULT_CA + skip_links : "Salta els enllaços" + skip_primary_nav : "Salta a la navegació primària" + skip_content : "Salta al contingut" + skip_footer : "Salta al peu" + page : "Pàgina" + pagination_previous : "Anterior" + pagination_next : "Següent" + breadcrumb_home_label : "Inici" + breadcrumb_separator : "/" + menu_label : "Mostra/amaga el menú" + search_label : "Mostra/amaga la cerca" + toc_label : "En aquesta pàgina" + ext_link_label : "Enllaç directe" + less_than : "es llegeix en menys de" + minute_read : "minut(s)" + share_on_label : "Comparteix a" + meta_label : + tags_label : "Etiquetes:" + categories_label : "Categories:" + date_label : "Actualitzat:" + comments_label : "Deixa un comentari" + comments_title : "Comentaris" + more_label : "Llegeix més" + related_label : "També et pot agradar" + follow_label : "Segueix-me:" + feed_label : "Feed" + powered_by : "Funciona amb" + website_label : "Pàgina web" + email_label : "Correu electrònic" + recent_posts : "Entrades recents" + undefined_wpm : "El paràmetre words_per_minute no està definit a _config.yml" + comment_form_info : "No es mostrarà el teu correu electrònic. Els camps obligatoris estan marcats" + comment_form_comment_label : "Comentari" + comment_form_md_info : "Admet Markdown." + comment_form_name_label : "Nom" + comment_form_email_label : "Correu electrònic" + comment_form_website_label : "Pàgina web (opcional)" + comment_btn_submit : "Envia" + comment_btn_submitted : "Enviat" + comment_success_msg : "Gràcies pel teu comentari! Apareixerà un cop sigui aprovat." + comment_error_msg : "Hi ha hagut un error enviat el comentari. Comprova que els camps obligatirs estiguin omplerts i torna-ho a provar." + loading_label : "Carregant..." + search_label_text : "Introdueix termes per cercar..." + search_placeholder_text : "Introdueix termes per cercar..." + search_algolia_no_results : + results_found : "resultat(s)" + back_to_top : "Torna a dalt" +ca-ES: + <<: *DEFAULT_CA + +# Irish (Gaeilge) +# -------------- +ga: &DEFAULT_GA + skip_links : "Léim naisc" + skip_primary_nav : "Léim chuig príomh naiscleanúint" + skip_content : "Léim chuig inneachar" + skip_footer : "Léim chuig buntásc" + page : "Leathanach" + pagination_previous : "Leathanach roimhe sin" + pagination_next : "Céad leathanach eile" + breadcrumb_home_label : "Baile" + breadcrumb_separator : "/" + menu_label : "Scorán roghchlár" + search_label : "Scorán cuardach" + toc_label : "Ar an leathanach seo" + ext_link_label : "Nasc díreach" + less_than : "níos lú na" + minute_read : "a léamh" + share_on_label : "Roinn ar" + meta_label : + tags_label : "Clibeanna:" + categories_label : "Catagoírí:" + date_label : "Nuashonraíodh:" + comments_label : "Fág trácht" + comments_title : "Tráchtanna" + more_label : "Foghlaim níos mó" + follow_label : "Lean:" + feed_label : "Feed" + powered_by : "Ag fáil cumhacht as" + website_label : "Suíomh gréasáin" + email_label : "R-phost" + recent_posts : "Postálacha le deanaí" + comment_form_comment_label : "Trácht" + comment_form_name_label : "Ainm" + comment_form_email_label : "Ríomhsheoladh" + comment_form_website_label : "Suíomh gréasáin (roghnach)" + comment_btn_submit : "Cuir isteach trácht" + comment_btn_submitted : "Curtha isteach" + loading_label : "Lódáil..." + search_label_text : "Cuir do chuardach isteach..." + search_placeholder_text : "Cuir do chuardach isteach..." + search_algolia_no_results : + results_found : "Torthaí aimsithe" + back_to_top : "Ar ais go barr" +ga-IE: + <<: *DEFAULT_GA + + +# Finnish / Suomi +# ----------------- +fi: &DEFAULT_FI + skip_links : "Ohita linkit" + skip_primary_nav : "Siirry päävalikkoon" + skip_content : "Siirry sisältöön" + skip_footer : "Siirry alareunaan" + page : "Sivu" + pagination_previous : "Edellinen" + pagination_next : "Seuraava" + breadcrumb_home_label : "Etusivu" + breadcrumb_separator : "/" + menu_label : "Avaa valikko" + search_label : "Avaa haku" + toc_label : "Tällä sivulla" + ext_link_label : "Suora linkki" + less_than : "vähemmän kuin" + minute_read : "minuuttia luettavaa" + share_on_label : "Jaa" + meta_label : + tags_label : "Tunnisteet:" + categories_label : "Kategoriat:" + date_label : "Päivitetty:" + comments_label : "Jätä kommentti" + comments_title : "Kommentit" + more_label : "Lisää" + related_label : "Saatat olla kiinnostunut myös" + follow_label : "Seuraa:" + feed_label : "Syöte" + powered_by : "Käyttäen" + website_label : "Kotisivu" + email_label : "Sähköposti" + recent_posts : "Viimeisimmät kirjoitukset" + undefined_wpm : "words_per_minute asetusta ei ole määritelty _config.yml tiedostossa" + comment_form_info : "Sinun sähköpostiosoitetta ei julkaista. Vaaditut kentät ovat merkittyjä" + comment_form_comment_label : "Kommentti" + comment_form_md_info : "Tukee markdown muotoilua." + comment_form_name_label : "Nimi" + comment_form_email_label : "Sähköpostiosoite" + comment_form_website_label : "Nettisivu (vapaaehtoinen)" + comment_btn_submit : "Lähetä" + comment_btn_submitted : "Lähetetty" + comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla tarkastelun jälkeen." + comment_error_msg : "Tapahtui virhe. Tarkista, että olet täyttänyt kaikki kentät ja yritä uudelleen." + loading_label : "Ladataan..." + search_label_text : "Hakusana..." + search_placeholder_text : "Hakusana..." + search_algolia_no_results : "Ei hakutuloksia" + results_found : "Tulosta" + back_to_top : "Siirry ylös" + +# Myanmar (Burmese) +# ----------------- +my: &DEFAULT_MY + skip_links : "လင့်များကိုကျော်ပါ။" + skip_primary_nav : "မူလအညွှန်းသို့ကျော်ပါ။" + skip_content : "အကြောင်းအရာသို့ကျော်ပါ။" + skip_footer : "အောက်ခြေသို့ကျော်ပါ။" + page : "စာမျက်နှာ" + pagination_previous : "ရှေ့တစ်ခု" + pagination_next : "နောက်တစ်ခု" + breadcrumb_home_label : "ပင်မစာမျက်နှာ" + breadcrumb_separator : "/" + menu_label : "မီနူး ဖွင့်၊ပိတ်" + search_label : "ရှာဖွေရန် ဖွင့်၊ပိတ်" + toc_label : "ဒီစာမျက်နှာတွင်" + ext_link_label : "တိုက်ရိုက်လင့်" + less_than : "ဖတ်ရန်ကြာချိန်" + minute_read : "မိနစ်" + share_on_label : "မျှဝေပါ။" + meta_label : + tags_label : "အမှတ်အသားများ -" + categories_label : "အမျိုးအစားများ -" + date_label : "ပြင်ဆင်ပြီး -" + comments_label : "မှတ်ချက်တစ်ခုချန်ထားပါ။" + comments_title : "မှတ်ချက်များ" + more_label : "ပိုမိုသိရှိရန်" + related_label : "သင်နှစ်သက်နိုင်သော" + follow_label : "သတင်းလိုက်ယူရန် -" + feed_label : "Feed ယူရန် -" + powered_by : "ပံ့ပိုးသည်" + website_label : "ဝဘ်ဆိုက်" + email_label : "အီးမေးလ်" + recent_posts : "လတ်တလောရေးသားချက်များ" + undefined_wpm : "_config.yml မှာ words_per_minute ကိုမသတ်မှတ်ထားပါ။" + comment_form_info : "သင့်အီးမေးလ်လိပ်စာကိုဖော်ပြသွားမည်မဟုတ်ပါ။ လိုအပ်သောဖြည့်စွက်ရန်နေရာများကို အမှတ်အသားပြထားပါသည်။" + comment_form_comment_label : "မှတ်ချက်" + comment_form_md_info : "Markdown ကိုထောက်ပံ့သည်။" + comment_form_name_label : "နာမည်" + comment_form_email_label : "အီးမေးလိပ်စာ" + comment_form_website_label : "ဝဘ်ဆိုက် (မဖြည့်စွက်လည်းရသည်)" + comment_btn_submit : "မှတ်ချက်တင်ပါ" + comment_btn_submitted : "တင်သွင်းလိုက်သည်" + comment_success_msg : "မှတ်ချက်ပေးတဲ့အတွက်ကျေးဇူးတင်ပါတယ်။ ၎င်းကိုအတည်ပြုပြီးသည့်အခါ ဝဘ်ဆိုက်ပေါ်တွင်ပြလိမ့်မည်။" + comment_error_msg : "တောင်းပန်ပါတယ်။ သင့်တင်သွင်းမှုတွင်အမှားတစ်ခုရှိခဲ့သည်။ ကျေးဇူးပြုပြီးလိုအပ်သောဖြည့်စွက်ရန်နေရာအားလုံးဖြည့်ပြီးပါကထပ်မံကြိုးစားပါ။" + loading_label : "တင်နေသည်..." + search_label_text : "သင့်ရှာဖွေရေးဝေါဟာရကိုရိုက်ထည့်ပါ..." + search_placeholder_text : "သင့်ရှာဖွေရေးဝေါဟာရကိုရိုက်ထည့်ပါ..." + search_algolia_no_results : + results_found : "ရလဒ်(များ)ကိုတွေ့ရှိခဲ့သည်" + back_to_top : "အပေါ်သို့ပြန်သွား" +my-MM: + <<: *DEFAULT_MY + +# Norwegian +# ------- +no: &DEFAULT_NO + skip_links : "Hopp over lenker" + skip_primary_nav : "Gå til primærnavigasjon" + skip_content : "Gå til innhold" + skip_footer : "Gå til fotnote" + page : "Side" + pagination_previous : "Forrige" + pagination_next : "Neste" + breadcrumb_home_label : "Hjem" + breadcrumb_separator : "/" + menu_label : "Vis/skjul meny" + search_label : "Vis/skjul søk" + toc_label : "På denne siden" + ext_link_label : "Direkte lenke" + less_than : "mindre enn" + minute_read : "minutters lesing" + share_on_label : "Del på" + meta_label : + tags_label : "Nøkkelord:" + categories_label : "Kategorier:" + date_label : "Oppdatert:" + comments_label : "Skriv en kommentar" + comments_title : "Kommentarer" + more_label : "Lær mer" + related_label : "Du vil kanskje også lese:" + follow_label : "Følg:" + feed_label : "Feed" + powered_by : "Lagd med" + website_label : "Nettside" + email_label : "E-post" + recent_posts : "Nyeste innlegg" + undefined_wpm : "Parameteret words_per_minute er ikke definert i _config.yml" + comment_form_info : "Din e-postadresse vil ikke bli publisert. Obligatoriske felt er markert" + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Markdown er støttet" + comment_form_name_label : "Navn" + comment_form_email_label : "E-postadresse" + comment_form_website_label : "Nettside (frivillig)" + comment_btn_submit : "Send kommentar" + comment_btn_submitted : "Sendt" + comment_success_msg : "Takk for din kommentar! Den blir vist på siden så fort den er godkjent" + comment_error_msg : "Beklager, noe gikk galt. Sjekk at alle obligatoriska felt er utfylt og prøv igjen" + loading_label : "Laster..." + search_label_text : "Skriv inn søkeord" + search_placeholder_text : "Skriv inn søkeord" + search_algolia_no_results : "Ingen treff" + results_found : "Treff funnet" + back_to_top : "Tillbake til toppen" +no-NB: + <<: *DEFAULT_NO +no-NN: + <<: *DEFAULT_NO + +# Hebrew +# ------- +he: &DEFAULT_HE + skip_links : "דלגו על קישור" + skip_primary_nav : "דלגו לראשי" + skip_content : "דלגו לתוכן" + skip_footer : "דלגו לתחתית" + page : "דף" + pagination_previous : "קודם" + pagination_next : "הבא" + breadcrumb_home_label : "בית" + breadcrumb_separator : "/" + menu_label : "סגירה/פתיחה של תפריט" + search_label : "סגירה/פתיחה של חיפוש" + toc_label : "בדף זה" + ext_link_label : "קישור ישיר" + less_than : "פחות מ" + minute_read : "דקת קריאה" + share_on_label : "שתפו ב" + meta_label : + tags_label : "תגיות:" + categories_label : "קטגוריות:" + date_label : "מעודכן:" + comments_label : "השאירו הערה" + comments_title : "הערות" + more_label : "קראו עוד" + related_label : "אולי יעניין אותך גם" + follow_label : "עקבו אחרי" + feed_label : "פיד" + powered_by : "Powered by" + website_label : "אתר" + email_label : "אימייל" + recent_posts : "פוסטים אחרונים" + undefined_wpm : "Undefined parameter words_per_minute at _config.yml" + comment_form_info : "האימייל שלך נשמר חסוי. שדות חובה מסומנים" + comment_form_comment_label : "הערה" + comment_form_md_info : "Markdown is supported." + comment_form_name_label : "שם" + comment_form_email_label : "כתובת אימייל" + comment_form_website_label : "אתר (אפשרות)" + comment_btn_submit : "שלחו הערה" + comment_btn_submitted : "נשלח" + comment_success_msg : "תודה על ההערה שלך! היא תופיע באתר ברגע שתאושר." + comment_error_msg : "סליחה, קרתה תקלה בשליחה. אנא וודאו שכל השדות מלאים ונסו שנית." + loading_label : "טוען..." + search_label_text : "מילות חיפוש..." + search_placeholder_text : "מילות חיפוש..." + search_algolia_no_results : "אין תוצאות" + results_found : "תוצאות נמצאו" + back_to_top : "חזרה להתחלה" +he-IL: + <<: *DEFAULT_HE + +# Arabic (عربي) +# -------------- +ar: &DEFAULT_AR + skip_links : "تخطي الروابط" + skip_primary_nav : "تخطى الى شريط التنقل" + skip_content : "الانتقال الى المحتوى" + skip_footer : "الانتقال الى ذيل الصفحة" + page : "صفحه" + pagination_previous : "قبل" + pagination_next : "بعد" + breadcrumb_home_label : "الرئيس" + breadcrumb_separator : "/" + menu_label : "الخيارات" + search_label : "البحث" + toc_label : "على هذه الصفحة" + ext_link_label : "رابط مباشر" + less_than : "اقل من" + minute_read : "دقيقة قرائية" + share_on_label : "مشاركة" + meta_label : + tags_label : "العلامات الوصفية:" + categories_label : "الفئات:" + date_label : "تم التحديث:" + comments_label : "اترك تعليق" + comments_title : "التعليقات" + more_label : "اقرأ المزيد" + related_label : "قد يعجبك أيضا" + follow_label : "تابع:" + feed_label : "الاخبار - RSS" + powered_by : "تم تطوير بواسطة" + website_label : "موقع" + email_label : "ايميل" + recent_posts : "المشاركات الأخيرة" + undefined_wpm : "معامل غير معرف في words_per_minute (كلمة في الدقيقة) في ملف _config.yml" + comment_form_info : "لن يتم نشر عنوان بريدك الإلكتروني. الحقول المطلوبة إلزامية" + comment_form_comment_label : "تعليق" + comment_form_md_info : "لغة ال Markdown مدعومة." + comment_form_name_label : "الاسم" + comment_form_email_label : "البريد الالكتروني" + comment_form_website_label : "الموقع (اختياري)" + comment_btn_submit : "أضف تعليق" + comment_btn_submitted : "تم الإرسال" + comment_success_msg : "شكراً على التعليق! سيتم اظهاره عندما يتم موافقة عليه." + comment_error_msg : "للأسف, هناك خطأ في المحاولة. الرجاء الحرص على تعبئة جميع الخانات و محاولة مجدداً." + loading_label : "جاري التحميل..." + search_label_text : "اكتب مصطلح للبحث..." + search_placeholder_text : "اكتب مصطلح للبحث..." + search_algolia_no_results : "لا توجد نتائج" + results_found : "تم إيجاد نتيجة" + back_to_top : "الانتقال الى الأعلى" +ar-SD: + <<: *DEFAULT_AR +ar-SA: + <<: *DEFAULT_AR +ar-AE: + <<: *DEFAULT_AR +ar-EG: + <<: *DEFAULT_AR + +# Kiswahili +# ----------------- +sw: &DEFAULT_SW + skip_links : "Ruka viungo" + skip_primary_nav : "Ruka orodha kuu" + skip_content : "Ruka maandiko maakuu" + skip_footer : "Ruka chini" + page : "Ukurasa" + pagination_previous : "Rudi" + pagination_next : "Endelea" + breadcrumb_home_label : "Ukurasa wa kwanza" + breadcrumb_separator : "/" + menu_label : "Wezesha/Zima orodha" + search_label : "Wezesha/Zima kutafuta" + toc_label : "Kwa ukurasa huu" + ext_link_label : "Kiungo mbio" + less_than : "Soma kwa dakikia ndogo kuliko" + minute_read : "Soma kwa dakika" + share_on_label : "Tangaza" + meta_label : + tags_label : "Alama:" + categories_label : "Aina:" + date_label : "Geuzi ya mwisho:" + comments_label : "Wacha maoni" + comments_title : "Maoni" + more_label : "Jifunze zaidi" + related_label : "Pia, utapenda" + follow_label : "Fuata:" + feed_label : "Feed" + powered_by : "Inatumia" + website_label : "Tovuti" + email_label : "Barua pepe" + recent_posts : "Makala juzi" + undefined_wpm : "Ingizo words_per_minute kwa _config.yml haijawekwa" + comment_form_info : "Barua pepe yako haitaonekana. Kuna alama kwa ingizo tunahitaji." + comment_form_comment_label : "Maoni" + comment_form_md_info : "Unaweza kutumia `Markdown`." + comment_form_name_label : "Jina" + comment_form_email_label : "Barua pepe" + comment_form_website_label : "Tovuti (hiari)" + comment_btn_submit : "Tuma maoni" + comment_btn_submitted : "Umetuma" + comment_success_msg : "Asante kwa maoni yako! Itaonekana ikiridhiwa." + comment_error_msg : "Pole, kuna makosa kwa ingizo yako. Tafadhali angalia umeandika kwa ingizo zote zinahitaji, na jaribu tena." + loading_label : "Inapakiwa..." + search_label_text : "Ingiza neno unatafuta..." + search_placeholder_text : "Ingiza neno unatafuta..." + search_algolia_no_results : "Hakuna matokeo" + results_found : "Tumepata" + back_to_top : "Rudi juu" +sw-KE: + <<: *DEFAULT_SW +sw-TZ: + <<: *DEFAULT_SW + +# Ukrainian / Українська +# ----------------- +uk: &DEFAULT_UK + skip_links : "Посилання для переходу" + skip_primary_nav : "Перейти до основної навігації" + skip_content : "Перейти до змісту" + skip_footer : "Перейти до нижнього колонтитула" + page : "Сторінка" + pagination_previous : "Попередня" + pagination_next : "Наступна" + breadcrumb_home_label : "Головна" + breadcrumb_separator : "/" + menu_label : "Випадаюче меню" + search_label : "Пошук" + toc_label : "Зміст" + ext_link_label : "Пряме посилання" + less_than : "менше ніж" + minute_read : "хв. на чітання" + share_on_label : "Поділитися" + meta_label : + tags_label : "Мітки:" + categories_label : "Розділи:" + date_label : "Дата зміни:" + comments_label : "Залишити коментар" + comments_title : "Коментарі" + more_label : "Читати далі" + related_label : "Вам також може сподобатись" + follow_label : "Зв'язатися зі мною:" + feed_label : "RSS-стрічка" + powered_by : "Сайт працює на" + website_label : "Сайт" + email_label : "Электронна пошта" + recent_posts : "Останні записи" + undefined_wpm : "Не визначено параметр words_per_minute в _config.yml" + comment_form_info : "Вашу адресу електронної пошти не буде опубліковано. Обов'язкові поля позначені" + comment_form_comment_label : "Коментар" + comment_form_md_info : "Підтримується синтаксис Markdown." + comment_form_name_label : "Ім'я" + comment_form_email_label : "Електронна пошта" + comment_form_website_label : "Посилання на сайт (необов'язково)" + comment_btn_submit : "Залишити коментар" + comment_btn_submitted : "Відправлено" + comment_success_msg : "Дякую за Ваш коментар! Його буде опубліковано на сайті після перевірки." + comment_error_msg : "На жаль, сталася помилка з надсиланням коментаря. Будь ласка, переконайтеся, що всі обов'язкові поля заповнені та спробуйте знову." + loading_label : "Відправка..." + search_label_text : "Введіть пошуковий запит..." + search_placeholder_text : "Введіть пошуковий запит..." + search_algolia_no_results : + results_found : "Знайдено" +uk-UA: + <<: *DEFAULT_UK + +# Czech / čeština +# ----------------- +cs: &DEFAULT_CS + skip_links : "Rychlé odkazy" + skip_primary_nav : "Přejít na hlavní navigace" + skip_content : "Přejít na obsah" + skip_footer : "Přejít na zápatí" + page : "Stránka" + pagination_previous : "Předchozí" + pagination_next : "Další" + breadcrumb_home_label : "Domů" + breadcrumb_separator : "/" + menu_label : "Přepnout zobrazení menu" + search_label : "Přepnout zobrazení vyhledávání" + toc_label : "Na této stránce" + ext_link_label : "Přímý odkaz" + less_than : "méně než" + minute_read : "minut" + share_on_label : "Sdílet" + meta_label : + tags_label : "Štítky:" + categories_label : "Rubriky:" + date_label : "Aktualizováno:" + comments_label : "Okomentovat" + comments_title : "Komentáře" + more_label : "Zjistit více" + related_label : "Může se vám také líbit" + follow_label : "Sledovat:" + feed_label : "Zdroj" + powered_by : "Používáme" + website_label : "Web" + email_label : "E-mail" + recent_posts : "Nejnovější příspěvky" + undefined_wpm : "V souboru _config.yml chybí parametr words_per_minute" + comment_form_info : "Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena" + comment_form_comment_label : "Komentář" + comment_form_md_info : "Podporuje markdown." + comment_form_name_label : "Jméno" + comment_form_email_label : "E-mailová adresa" + comment_form_website_label : "Web (volitelné)" + comment_btn_submit : "Odeslat komentář" + comment_btn_submitted : "Odesláno" + comment_success_msg : "Děkujeme za komentář. Na stránce se objeví jakmile projde schválením." + comment_error_msg : "Odeslání se nezdařilo. Zkontrolujte, že jste vyplnili všechna povinná pole a zkuste to znovu." + loading_label : "Načítání..." + search_label_text : "Zadejte vyhledávání..." + search_placeholder_text : "Zadejte vyhledávání..." + search_algolia_no_results : "Žádné výsledky" + results_found : "Nalezené výsledky" + back_to_top : "Na začátek stránky" +cs-CZ: + <<: *DEFAULT_CS + +# Bulgarian +# ----------------- +bg: &DEFAULT_BG + skip_links : "Пропуснете връзките" + skip_primary_nav : "Преминете към основната навигация" + skip_content : "Преминете към съдържанието" + skip_footer : "Преминете към долния колонтитул" + page : "Страница" + pagination_previous : "Предишна" + pagination_next : "Следваща" + breadcrumb_home_label : "Начало" + breadcrumb_separator : "/" + menu_label : "Превключване на меню" + search_label : "Превключване на търсене" + toc_label : "На тази страница" + ext_link_label : "Пряка връзка" + less_than : "по-малко от" + minute_read : "минута четене" + share_on_label : "Споделете" + meta_label : + tags_label : "Етикети:" + categories_label : "Категории:" + date_label : "Обновено:" + comments_label : "Оставете коментар" + comments_title : "Коментари" + more_label : "Научете повече" + related_label : "Може да са ви интересни" + follow_label : "Последвайте:" + feed_label : "Емисия" + powered_by : "Осъществено чрез" + website_label : "Уебсайт" + email_label : "Е-поща" + recent_posts : "Последни публикации" + undefined_wpm : "Недефиниран параметър words_per_minute в _config.yml" + comment_form_info : "Вашият адрес за е-поща няма да бъде публикуван. Задължителните полета са обозначени" + comment_form_comment_label : "Коментар" + comment_form_md_info : "Поддържа се Маркдаун." + comment_form_name_label : "Име" + comment_form_email_label : "Адрес за е-поща" + comment_form_website_label : "Уебсайт (по желание)" + comment_btn_submit : "Изпращане на коментар" + comment_btn_submitted : "Изпратено" + comment_success_msg : "Благодарности за коментара! Ще се покаже на сайта, след като бъде одобрен." + comment_error_msg : "Съжаляваме, възникна грешка с изпращането. Моля, уверете се, че всички задължителни полета са попълнени и опитайте отново." + loading_label : "Зареждане..." + search_label_text : "Въведете термин за търсене..." + search_placeholder_text : "Въведете термин за търсене..." + search_algolia_no_results : "Няма резултати" + results_found : "Намерени резултати" + back_to_top : "Обратно към началото" +bg-BG: + <<: *DEFAULT_BG + # Another locale # -------------- # diff --git a/_includes/after-content.html b/_includes/after-content.html new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html index 99412b0e59d3..c5742b9817d6 100644 --- a/_includes/analytics-providers/google.html +++ b/_includes/analytics-providers/google.html @@ -1,4 +1,4 @@ -<script type="text/javascript"> +<script> var _gaq = _gaq || []; _gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']); {% if site.analytics.google.anonymize_ip == true %} @@ -11,4 +11,4 @@ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); -</script> \ No newline at end of file +</script> diff --git a/_includes/archive-single.html b/_includes/archive-single.html index 489f00067a6d..7854c961bd43 100644 --- a/_includes/archive-single.html +++ b/_includes/archive-single.html @@ -10,29 +10,21 @@ {% assign title = post.title %} {% endif %} -<div class="{{ include.type | default: "list" }}__item"> - <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> +<div class="{{ include.type | default: 'list' }}__item"> + <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"{% if post.locale %} lang="{{ post.locale }}"{% endif %}> {% if include.type == "grid" and teaser %} <div class="archive__item-teaser"> - <img src= - {% if teaser contains "://" %} - "{{ teaser }}" - {% else %} - "{{ teaser | relative_url }}" - {% endif %} - alt=""> + <img src="{{ teaser | relative_url }}" alt=""> </div> {% endif %} - <h2 class="archive__item-title" itemprop="headline"> + <h2 class="archive__item-title no_toc" itemprop="headline"> {% if post.link %} <a href="{{ post.link }}">{{ title }}</a> <a href="{{ post.url | relative_url }}" rel="permalink"><i class="fas fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a> {% else %} <a href="{{ post.url | relative_url }}" rel="permalink">{{ title }}</a> {% endif %} </h2> - {% if post.read_time %} - <p class="page__meta"><i class="far fa-clock" aria-hidden="true"></i> {% include read-time.html %}</p> - {% endif %} + {% include page__meta.html type=include.type %} {% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %} </article> </div> diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html index b89ffcb7df6c..1a3d4caefc55 100644 --- a/_includes/author-profile-custom-links.html +++ b/_includes/author-profile-custom-links.html @@ -1,6 +1,6 @@ <!-- <li> - <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer me"> <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link </a> </li> diff --git a/_includes/author-profile.html b/_includes/author-profile.html index 4f0c02cd8ee6..e256ec7dd18f 100644 --- a/_includes/author-profile.html +++ b/_includes/author-profile.html @@ -1,41 +1,24 @@ {% assign author = page.author | default: page.authors[0] | default: site.author %} {% assign author = site.data.authors[author] | default: author %} -<div itemscope itemtype="https://schema.org/Person"> +<div itemscope itemtype="https://schema.org/Person" class="h-card"> {% if author.avatar %} <div class="author__avatar"> - {% if author.avatar contains "://" %} - {% assign author_src = author.avatar %} - {% else %} - {% assign author_src = author.avatar | relative_url %} - {% endif %} - - {% if author.home %} - {% if author.home contains "://" %} - {% assign author_link = author.home %} - {% else %} - {% assign author_link = author.home | relative_url %} - {% endif %} - <a href="{{ author_link }}"> - <img src="{{ author_src }}" alt="{{ author.name }}" itemprop="image"> - </a> - {% else %} - <img src="{{ author_src }}" alt="{{ author.name }}" itemprop="image"> - {% endif %} + <a href="{{ author.home | default: '/' | absolute_url }}"> + <img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image" class="u-photo"> + </a> </div> {% endif %} <div class="author__content"> - {% if author.home %} - <a href="{{ author_link }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a> - {% else %} - <h3 class="author__name" itemprop="name">{{ author.name }}</h3> - {% endif %} + <h3 class="author__name p-name" itemprop="name"> + <a class="u-url" rel="me" href="{{ author.home | default: '/' | absolute_url }}" itemprop="url">{{ author.name }}</a> + </h3> {% if author.bio %} - <p class="author__bio" itemprop="description"> - {{ author.bio }} - </p> + <div class="author__bio p-note" itemprop="description"> + {{ author.bio | markdownify }} + </div> {% endif %} </div> @@ -44,159 +27,159 @@ <h3 class="author__name" itemprop="name">{{ author.name }}</h3> <ul class="author__urls social-icons"> {% if author.location %} <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place"> - <i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span> + <i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name" class="p-locality">{{ author.location }}</span> </li> {% endif %} {% if author.links %} {% for link in author.links %} {% if link.label and link.url %} - <li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li> + <li><a href="{{ link.url }}" rel="nofollow noopener noreferrer me"{% if link.url contains 'http' %} itemprop="sameAs"{% endif %}><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li> {% endif %} {% endfor %} {% endif %} {% if author.uri %} <li> - <a href="{{ author.uri }}" itemprop="url"> - <i class="fas fa-fw fa-link" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }} + <a href="{{ author.uri }}" itemprop="url" rel="me"> + <i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].website_label | default: "Website" }}</span> </a> </li> {% endif %} {% if author.email %} <li> - <a href="mailto:{{ author.email }}"> + <a href="mailto:{{ author.email }}" rel="me" class="u-email"> <meta itemprop="email" content="{{ author.email }}" /> - <i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }} + <i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span> </a> </li> {% endif %} {% if author.keybase %} <li> - <a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fas fa-fw fa-key" aria-hidden="true"></i> Keybase + <a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-keybase" aria-hidden="true"></i><span class="label">Keybase</span> </a> </li> {% endif %} {% if author.twitter %} <li> - <a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter + <a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span> </a> </li> {% endif %} {% if author.facebook %} <li> - <a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook + <a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i><span class="label">Facebook</span> </a> </li> {% endif %} {% if author.linkedin %} <li> - <a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-linkedin" aria-hidden="true"></i> LinkedIn + <a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span> </a> </li> {% endif %} {% if author.xing %} <li> - <a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-xing-square" aria-hidden="true"></i> XING + <a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-xing-square" aria-hidden="true"></i><span class="label">XING</span> </a> </li> {% endif %} {% if author.instagram %} <li> - <a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-instagram" aria-hidden="true"></i> Instagram + <a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span> </a> </li> {% endif %} {% if author.tumblr %} <li> - <a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr + <a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i><span class="label">Tumblr</span> </a> </li> {% endif %} {% if author.bitbucket %} <li> - <a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket + <a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i><span class="label">Bitbucket</span> </a> </li> {% endif %} {% if author.github %} <li> - <a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-github" aria-hidden="true"></i> GitHub + <a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span> </a> </li> {% endif %} {% if author.gitlab %} <li> - <a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-gitlab" aria-hidden="true"></i> GitLab + <a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-gitlab" aria-hidden="true"></i><span class="label">GitLab</span> </a> </li> {% endif %} {% if author.stackoverflow %} <li> - <a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i> Stack Overflow + <a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i><span class="label">Stack Overflow</span> </a> </li> {% endif %} {% if author.lastfm %} <li> - <a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm + <a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i><span class="label">Last.fm</span> </a> </li> {% endif %} {% if author.dribbble %} <li> - <a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble + <a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-dribbble" aria-hidden="true"></i><span class="label">Dribbble</span> </a> </li> {% endif %} {% if author.pinterest %} <li> - <a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest + <a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span> </a> </li> {% endif %} {% if author.foursquare %} <li> - <a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare + <a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-foursquare" aria-hidden="true"></i><span class="label">Foursquare</span> </a> </li> {% endif %} {% if author.steam %} <li> - <a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-steam" aria-hidden="true"></i> Steam + <a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-steam" aria-hidden="true"></i><span class="label">Steam</span> </a> </li> {% endif %} @@ -204,14 +187,14 @@ <h3 class="author__name" itemprop="name">{{ author.name }}</h3> {% if author.youtube %} {% if author.youtube contains "://" %} <li> - <a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-youtube" aria-hidden="true"></i> YouTube + <a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span> </a> </li> - {% else author.youtube %} + {% elsif author.youtube %} <li> - <a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-youtube" aria-hidden="true"></i> YouTube + <a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span> </a> </li> {% endif %} @@ -219,40 +202,40 @@ <h3 class="author__name" itemprop="name">{{ author.name }}</h3> {% if author.soundcloud %} <li> - <a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i> SoundCloud + <a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">SoundCloud</span> </a> </li> {% endif %} {% if author.weibo %} <li> - <a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-weibo" aria-hidden="true"></i> Weibo + <a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-weibo" aria-hidden="true"></i><span class="label">Weibo</span> </a> </li> {% endif %} {% if author.flickr %} <li> - <a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-flickr" aria-hidden="true"></i> Flickr + <a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span> </a> </li> {% endif %} {% if author.codepen %} <li> - <a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-codepen" aria-hidden="true"></i> CodePen + <a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-codepen" aria-hidden="true"></i><span class="label">CodePen</span> </a> </li> {% endif %} {% if author.vine %} <li> - <a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> - <i class="fab fa-fw fa-vine" aria-hidden="true"></i> Vine + <a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer me"> + <i class="fab fa-fw fa-vine" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span> </a> </li> {% endif %} diff --git a/_includes/before-related.html b/_includes/before-related.html new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html index cba3d415fa4f..929725ef830c 100644 --- a/_includes/breadcrumbs.html +++ b/_includes/breadcrumbs.html @@ -19,17 +19,18 @@ {% for crumb in crumbs offset: 1 %} {% if forloop.first %} <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> - <a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a> + <a href="{{ '/' | relative_url }}" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a> + <meta itemprop="position" content="{{ i }}" /> </li> <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span> {% endif %} {% if forloop.last %} - <li class="current">{{ page.title }}</li> + <li class="current"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</li> {% else %} {% assign i = i | plus: 1 %} <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> - <a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a> + <a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | url_decode | replace: '-', ' ' | capitalize }}</span></a> <meta itemprop="position" content="{{ i }}" /> </li> <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span> diff --git a/_includes/browser-upgrade.html b/_includes/browser-upgrade.html deleted file mode 100644 index ec6ad0acc566..000000000000 --- a/_includes/browser-upgrade.html +++ /dev/null @@ -1,3 +0,0 @@ -<!--[if lt IE 9]> -<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> -<![endif]--> diff --git a/_includes/category-list.html b/_includes/category-list.html index 7cffdb762696..ad9a3fc71423 100644 --- a/_includes/category-list.html +++ b/_includes/category-list.html @@ -6,20 +6,13 @@ {% endcase %} {% if site.category_archive.path %} - {% comment %} - <!-- Sort alphabetically regardless of case e.g. a B c d E --> - <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ --> - {% endcomment %} - {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} - {% assign category_hashes = page_categories | split: ',' | sort %} + {% assign categories_sorted = page.categories | sort_natural %} <p class="page__taxonomy"> <strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong> <span itemprop="keywords"> - {% for hash in category_hashes %} - {% assign keyValue = hash | split: '#' %} - {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} - <a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} + {% for category_word in categories_sorted %} + <a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} {% endfor %} </span> </p> diff --git a/_includes/comment.html b/_includes/comment.html index cebedabfb5d5..2e3013ee2a76 100644 --- a/_includes/comment.html +++ b/_includes/comment.html @@ -13,7 +13,7 @@ <h3 class="comment__author" itemprop="author" itemscope itemtype="https://schema <p class="comment__date"> {% if include.date %} {% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %} - <time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %d, %Y at %I:%M %p" }}</time> + <time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %-d, %Y at %I:%M %p" }}</time> {% if include.index %}</a>{% endif %} {% endif %} </p> diff --git a/_includes/comments-providers/custom_scripts.html b/_includes/comments-providers/custom_scripts.html new file mode 100644 index 000000000000..6947946a73c9 --- /dev/null +++ b/_includes/comments-providers/custom_scripts.html @@ -0,0 +1,3 @@ +<!-- start custom comments scripts --> + +<!-- end custom comments scripts --> \ No newline at end of file diff --git a/_includes/comments-providers/disqus.html b/_includes/comments-providers/disqus.html index 8cf7acabeac2..16a6027c71c6 100644 --- a/_includes/comments-providers/disqus.html +++ b/_includes/comments-providers/disqus.html @@ -1,10 +1,10 @@ {% if site.comments.disqus.shortname %} <script> var disqus_config = function () { - this.page.url = "{{ page.url | absolute_url }}"; // Replace PAGE_URL with your page's canonical URL variable - this.page.identifier = "{{ page.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable + this.page.url = "{{ page.url | absolute_url }}"; /* Replace PAGE_URL with your page's canonical URL variable */ + this.page.identifier = "{{ page.id }}"; /* Replace PAGE_IDENTIFIER with your page's unique identifier variable */ }; - (function() { // DON'T EDIT BELOW THIS LINE + (function() { /* DON'T EDIT BELOW THIS LINE */ var d = document, s = d.createElement('script'); s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); diff --git a/_includes/comments-providers/giscus.html b/_includes/comments-providers/giscus.html new file mode 100644 index 000000000000..a4f6365aecef --- /dev/null +++ b/_includes/comments-providers/giscus.html @@ -0,0 +1,34 @@ +<script> + 'use strict'; + + (function () { + var commentContainer = document.querySelector('#giscus-comments'); + + if (!commentContainer) { + return; + } + + var script = document.createElement('script'); + + script.setAttribute('src', 'https://giscus.app/client.js'); + script.setAttribute('data-repo', '{{ site.repository | downcase }}'); + script.setAttribute('data-repo-id', '{{ site.comments.giscus.repo_id }}'); + script.setAttribute('data-category', '{{ site.comments.giscus.category_name }}'); + script.setAttribute('data-category-id', '{{ site.comments.giscus.category_id }}'); + script.setAttribute('data-mapping', '{{ site.comments.giscus.discussion_term | default: "pathname" }}'); + script.setAttribute('data-strict', '{{ site.comments.giscus.strict | default: 0 }}'); + script.setAttribute('data-reactions-enabled', '{{ site.comments.giscus.reactions_enabled | default: 1 }}'); + script.setAttribute('data-emit-metadata', '{{ site.comments.giscus.emit_metadata | default: 0 }}'); + script.setAttribute('data-input-position', '{{ site.comments.giscus.input_position | default: "top" }}'); + script.setAttribute('data-theme', '{{ site.comments.giscus.theme | default: "light" }}'); + script.setAttribute('data-lang', '{{ site.comments.giscus.lang | default: "en" }}'); + {% if site.comments.giscus.lazy %} + script.setAttribute('data-loading', 'lazy'); + {% endif %} + script.setAttribute('crossorigin', 'anonymous'); + + script.setAttribute('async', ''); + + commentContainer.appendChild(script); + })(); +</script> diff --git a/_includes/comments-providers/scripts.html b/_includes/comments-providers/scripts.html index 4e3f585440c6..e87badabd365 100644 --- a/_includes/comments-providers/scripts.html +++ b/_includes/comments-providers/scripts.html @@ -12,7 +12,9 @@ {% include /comments-providers/staticman_v2.html %} {% when "utterances" %} {% include /comments-providers/utterances.html %} + {% when "giscus" %} + {% include /comments-providers/giscus.html %} {% when "custom" %} - {% include /comments-providers/custom.html %} + {% include /comments-providers/custom_scripts.html %} {% endcase %} {% endif %} \ No newline at end of file diff --git a/_includes/comments-providers/staticman_v2.html b/_includes/comments-providers/staticman_v2.html index ae3991d9d619..3d8ba1112b73 100644 --- a/_includes/comments-providers/staticman_v2.html +++ b/_includes/comments-providers/staticman_v2.html @@ -1,4 +1,4 @@ -{% if site.repository and site.staticman.branch %} +{% if site.repository and site.comments.staticman.branch %} <script> (function ($) { $('#new_comment').submit(function () { diff --git a/_includes/comments-providers/utterances.html b/_includes/comments-providers/utterances.html index 129ab7791da9..5cf6c5ccbb88 100644 --- a/_includes/comments-providers/utterances.html +++ b/_includes/comments-providers/utterances.html @@ -12,6 +12,7 @@ script.setAttribute('src', 'https://utteranc.es/client.js'); script.setAttribute('repo', '{{ site.repository }}'); script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}'); + {% if site.comments.utterances.label %}script.setAttribute('label', '{{ site.comments.utterances.label }}');{% endif %} script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}'); script.setAttribute('crossorigin', 'anonymous'); diff --git a/_includes/comments.html b/_includes/comments.html index 40b035977efd..b27c893bbaf1 100644 --- a/_includes/comments.html +++ b/_includes/comments.html @@ -12,19 +12,28 @@ <h4 class="page__comments-title">{{ comments_label }}</h4> <section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section> {% when "staticman_v2" %} <section id="static-comments"> - {% if site.repository and site.staticman.branch %} + {% if site.repository and site.comments.staticman.branch %} <!-- Start static comments --> <div class="js-comments"> {% if site.data.comments[page.slug] %} <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4> - {% assign comments = site.data.comments[page.slug] | sort %} + {% assign comments = site.data.comments[page.slug] %} + + <!-- In order to sort by date we must have an array of objects, not an array of arrays, so + create a new array of plain comment objects and then sort by the comment date. --> + {% assign commentObjects = '' | split: '' %} + {% for comment in comments %} + {% assign commentObject = comment[1] %} + {% assign commentObjects = commentObjects | push: commentObject %} + {% endfor %} + {% assign comments = commentObjects | sort: "date" %} {% for comment in comments %} - {% assign email = comment[1].email %} - {% assign name = comment[1].name %} - {% assign url = comment[1].url %} - {% assign date = comment[1].date %} - {% assign message = comment[1].message %} + {% assign email = comment.email %} + {% assign name = comment.name %} + {% assign url = comment.url %} + {% assign date = comment.date %} + {% assign message = comment.message %} {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %} {% endfor %} {% endif %} @@ -35,7 +44,7 @@ <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_titl <div class="page__comments-form"> <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4> <p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p> - <form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.staticman.endpoint | default: 'https://api.staticman.net/v2/entry/' }}{{ site.repository }}/{{ site.staticman.branch }}/comments"> + <form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments"> <div class="form__spinner"> <i class="fas fa-spinner fa-spin fa-3x fa-fw"></i> <span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span> @@ -91,14 +100,23 @@ <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_labe <div class="js-comments"> {% if site.data.comments[page.slug] %} <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4> - {% assign comments = site.data.comments[page.slug] | sort %} + {% assign comments = site.data.comments[page.slug] %} + <!-- In order to sort by date we must have an array of objects, not an array of arrays, so + create a new array of plain comment objects and then sort by the comment date. --> + {% assign commentObjects = '' | split: '' %} {% for comment in comments %} - {% assign email = comment[1].email %} - {% assign name = comment[1].name %} - {% assign url = comment[1].url %} - {% assign date = comment[1].date %} - {% assign message = comment[1].message %} + {% assign commentObject = comment[1] %} + {% assign commentObjects = commentObjects | push: commentObject %} + {% endfor %} + {% assign comments = commentObjects | sort: "date" %} + + {% for comment in comments %} + {% assign email = comment.email %} + {% assign name = comment.name %} + {% assign url = comment.url %} + {% assign date = comment.date %} + {% assign message = comment.message %} {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %} {% endfor %} {% endif %} @@ -153,7 +171,10 @@ <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_labe {% when "utterances" %} <h4 class="page__comments-title">{{ comments_label }}</h4> <section id="utterances-comments"></section> + {% when "giscus" %} + <h4 class="page__comments-title">{{ comments_label }}</h4> + <section id="giscus-comments"></section> {% when "custom" %} - <section id="custom-comments"></section> + {% include /comments-providers/custom.html %} {% endcase %} </div> diff --git a/_includes/copyright.html b/_includes/copyright.html new file mode 100644 index 000000000000..36de639afc3e --- /dev/null +++ b/_includes/copyright.html @@ -0,0 +1,6 @@ +<!-- + Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose + Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes + Free for personal and commercial use under the MIT license + https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE +--> diff --git a/_includes/copyright.js b/_includes/copyright.js new file mode 100644 index 000000000000..b70c0374f557 --- /dev/null +++ b/_includes/copyright.js @@ -0,0 +1,6 @@ +/*! + * Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose + * Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes + * Free for personal and commercial use under the MIT license + * https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE + */ diff --git a/_includes/documents-collection.html b/_includes/documents-collection.html index 13b4006ea0be..8c1d1279cb1d 100644 --- a/_includes/documents-collection.html +++ b/_includes/documents-collection.html @@ -1,19 +1,13 @@ -{% assign entries = site[include.collection] %} +{% assign entries = include.entries | default: site[include.collection] | where_exp: "post", "post.hidden != true" %} -{% if include.sort_by == 'title' %} - {% if include.sort_order == 'reverse' %} - {% assign entries = entries | sort: 'title' | reverse %} - {% else %} - {% assign entries = entries | sort: 'title' %} - {% endif %} -{% elsif include.sort_by == 'date' %} - {% if include.sort_order == 'reverse' %} - {% assign entries = entries | sort: 'date' | reverse %} - {% else %} - {% assign entries = entries | sort: 'date' %} - {% endif %} +{% if include.sort_by %} + {% assign entries = entries | sort: include.sort_by %} +{% endif %} + +{% if include.sort_order == 'reverse' %} + {% assign entries = entries | reverse %} {% endif %} {%- for post in entries -%} - {% include archive-single.html %} + {% include archive-single.html type=include.type %} {%- endfor -%} diff --git a/_includes/feature_row b/_includes/feature_row index 89dfc1b4738b..03f09c15cf0c 100644 --- a/_includes/feature_row +++ b/_includes/feature_row @@ -7,24 +7,12 @@ <div class="feature__wrapper"> {% for f in feature_row %} - - {% if f.url contains "://" %} - {% capture f_url %}{{ f.url }}{% endcapture %} - {% else %} - {% capture f_url %}{{ f.url | relative_url }}{% endcapture %} - {% endif %} - <div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}"> <div class="archive__item"> {% if f.image_path %} <div class="archive__item-teaser"> - <img src= - {% if f.image_path contains "://" %} - "{{ f.image_path }}" - {% else %} - "{{ f.image_path | relative_url }}" - {% endif %} - alt="{% if f.alt %}{{ f.alt }}{% endif %}"> + <img src="{{ f.image_path | relative_url }}" + alt="{% if f.alt %}{{ f.alt }}{% endif %}"> {% if f.image_caption %} <span class="archive__item-caption">{{ f.image_caption | markdownify | remove: "<p>" | remove: "</p>" }}</span> {% endif %} @@ -43,11 +31,11 @@ {% endif %} {% if f.url %} - <p><a href="{{ f_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p> + <p><a href="{{ f.url | relative_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p> {% endif %} </div> </div> </div> {% endfor %} -</div> \ No newline at end of file +</div> diff --git a/_includes/figure b/_includes/figure index 8e9bdd581d69..62a07b113ca7 100644 --- a/_includes/figure +++ b/_includes/figure @@ -1,12 +1,11 @@ <figure class="{{ include.class }}"> - <img src= - {% if include.image_path contains "://" %} - "{{ include.image_path }}" - {% else %} - "{{ include.image_path | relative_url }}" - {% endif %} - alt="{% if include.alt %}{{ include.alt }}{% endif %}"> - {% if include.caption %} + {%- if include.popup -%}<a href="{{ include.image_path | relative_url }}" class="image-popup"{% if include.caption %} title="{{ include.caption | markdownify | strip_html }}"{% endif %}>{%- endif -%} + <img src="{{ include.image_path | relative_url }}" + alt="{% if include.alt %}{{ include.alt | escape_once }}{% endif %}"> + {%- if include.popup -%}</a>{%- endif -%} + {%- if include.caption -%} <figcaption> {{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }} - </figcaption>{% endif %}</figure> + </figcaption> + {%- endif -%} +</figure> diff --git a/_includes/footer.html b/_includes/footer.html index 2bc78963ce39..2b2b7ee1e479 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -12,8 +12,10 @@ {% endfor %} {% endif %} - <li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li> + {% unless site.atom_feed.hide %} + <li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li> + {% endunless %} </ul> </div> -<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div> +<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} <a href="{{ site.copyright_url | default: site.url }}">{{ site.copyright | default: site.title }}</a>. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/jekyll-themes/minimal-mistakes/" rel="nofollow">Minimal Mistakes</a>.</div> diff --git a/_includes/gallery b/_includes/gallery index 97022aa881da..71a9e1e1b3d1 100644 --- a/_includes/gallery +++ b/_includes/gallery @@ -19,33 +19,17 @@ <figure class="{{ gallery_layout }} {{ include.class }}"> {% for img in gallery %} {% if img.url %} - <a href= - {% if img.url contains "://" %} - "{{ img.url }}" - {% else %} - "{{ img.url | relative_url }}" - {% endif %} - {% if img.title %}title="{{ img.title }}"{% endif %} - > - <img src= - {% if img.image_path contains "://" %} - "{{ img.image_path }}" - {% else %} - "{{ img.image_path | relative_url }}" - {% endif %} - alt="{% if img.alt %}{{ img.alt }}{% endif %}"> + <a href="{{ img.url | relative_url }}" + {% if img.title %}title="{{ img.title }}"{% endif %}> + <img src="{{ img.image_path | relative_url }}" + alt="{% if img.alt %}{{ img.alt }}{% endif %}"> </a> {% else %} - <img src= - {% if img.image_path contains "://" %} - "{{ img.image_path }}" - {% else %} - "{{ img.image_path | relative_url }}" - {% endif %} - alt="{% if img.alt %}{{ img.alt }}{% endif %}"> + <img src="{{ img.image_path | relative_url }}" + alt="{% if img.alt %}{{ img.alt }}{% endif %}"> {% endif %} {% endfor %} {% if include.caption %} <figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption> {% endif %} -</figure> \ No newline at end of file +</figure> diff --git a/_includes/head.html b/_includes/head.html index cb68465f4121..c214bea57cc9 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -2,40 +2,27 @@ {% include seo.html %} -<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed"> +{% unless site.atom_feed.hide %} + <link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed"> +{% endunless %} -<!-- https://t.co/dKP3o1e --> +{%- comment %} https://docs.google.com/presentation/d/1rmxwWa9P6_xHqonmh5ONXRS-jPc5XKbnv99Rjkhe04s/present {% endcomment -%} <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; + {% if site.enable_copy_code_button -%} + window.enable_copy_code_button = true; + {%- endif %} </script> <!-- For all browsers --> <link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}"> - -<!--[if IE ]> - <style> - /* old IE unsupported flexbox fixes */ - .greedy-nav .site-title { - padding-right: 3em; - } - .greedy-nav button { - position: absolute; - top: 0; - right: 0; - height: 100%; - } - </style> -<![endif]--> +<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> +<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript> {% if site.head_scripts %} {% for script in site.head_scripts %} - {% if script contains "://" %} - {% capture script_path %}{{ script }}{% endcapture %} - {% else %} - {% capture script_path %}{{ script | relative_url }}{% endcapture %} - {% endif %} - <script src="{{ script_path }}"></script> + <script src="{{ script | relative_url }}"></script> {% endfor %} {% endif %} diff --git a/_includes/masthead.html b/_includes/masthead.html index b2aca064e7bc..f919fb77937c 100644 --- a/_includes/masthead.html +++ b/_includes/masthead.html @@ -1,35 +1,31 @@ -{% if site.logo contains "://" %} - {% capture logo_path %}{{ site.logo }}{% endcapture %} -{% else %} - {% capture logo_path %}{{ site.logo }}{% endcapture %} -{% endif %} +{% capture logo_path %}{{ site.logo }}{% endcapture %} <div class="masthead"> <div class="masthead__inner-wrap"> <div class="masthead__menu"> <nav id="site-nav" class="greedy-nav"> {% unless logo_path == empty %} - <a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt=""></a> + <a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt="{{ site.masthead_title | default: site.title }}"></a> {% endunless %} - <a class="site-title" href="{{ '/' | relative_url }}">{{ site.masthead_title | default: site.title }}</a> + <a class="site-title" href="{{ '/' | relative_url }}"> + {{ site.masthead_title | default: site.title }} + {% if site.subtitle %}<span class="site-subtitle">{{ site.subtitle }}</span>{% endif %} + </a> <ul class="visible-links"> {%- for link in site.data.navigation.main -%} - {%- if link.url contains '://' -%} - {%- assign url = link.url -%} - {%- else -%} - {%- assign url = link.url | relative_url -%} - {%- endif -%} <li class="masthead__menu-item"> - <a href="{{ url }}" {% if link.description %}title="{{ link.description }}"{% endif %}>{{ link.title }}</a> + <a + href="{{ link.url | relative_url }}" + {% if link.description %} title="{{ link.description }}"{% endif %} + {% if link.target %} target="{{ link.target }}"{% endif %} + >{{ link.title }}</a> </li> {%- endfor -%} </ul> {% if site.search == true %} <button class="search__toggle" type="button"> <span class="visually-hidden">{{ site.data.ui-text[site.locale].search_label | default: "Toggle search" }}</span> - <svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16"> - <path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path> - </svg> + <i class="fas fa-search"></i> </button> {% endif %} <button class="greedy-nav__toggle hidden" type="button"> diff --git a/_includes/nav_list b/_includes/nav_list index b1d06c304b7a..d25f9e9480bc 100644 --- a/_includes/nav_list +++ b/_includes/nav_list @@ -1,47 +1,27 @@ -{% assign navigation = site.data.navigation[include.nav] %} - <nav class="nav__list"> {% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %} <input id="ac-toc" name="accordion-toc" type="checkbox" /> <label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label> <ul class="nav__items"> - {% for nav in navigation %} - <li> - {% if nav.url %} - {% comment %} internal/external URL check {% endcomment %} - {% if nav.url contains "://" %} - {% assign nav_url = nav.url %} + {% for navname in include.nav %} + {% assign navigation = site.data.navigation[navname] %} + {% for nav in navigation %} + <li> + {% if nav.url %} + <a href="{{ nav.url | relative_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a> {% else %} - {% assign nav_url = nav.url | relative_url %} + <span class="nav__sub-title">{{ nav.title }}</span> {% endif %} - <a href="{{ nav_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a> - {% else %} - <span class="nav__sub-title">{{ nav.title }}</span> - {% endif %} - - {% if nav.children != null %} - <ul> - {% for child in nav.children %} - {% comment %} internal/external URL check {% endcomment %} - {% if child.url contains "://" %} - {% assign child_url = child.url %} - {% else %} - {% assign child_url = child.url | relative_url %} - {% endif %} - - {% comment %} set "active" class on current page {% endcomment %} - {% if child.url == page.url %} - {% assign active = "active" %} - {% else %} - {% assign active = "" %} - {% endif %} - - <li><a href="{{ child_url }}" class="{{ active }}">{{ child.title }}</a></li> - {% endfor %} - </ul> - {% endif %} - </li> + {% if nav.children != null %} + <ul> + {% for child in nav.children %} + <li><a href="{{ child.url | relative_url }}"{% if child.url == page.url %} class="active"{% endif %}>{{ child.title }}</a></li> + {% endfor %} + </ul> + {% endif %} + </li> + {% endfor %} {% endfor %} </ul> -</nav> \ No newline at end of file +</nav> diff --git a/_includes/page__date.html b/_includes/page__date.html new file mode 100644 index 000000000000..ec02005f1307 --- /dev/null +++ b/_includes/page__date.html @@ -0,0 +1,6 @@ +{% assign date_format = site.date_format | default: "%B %-d, %Y" %} +{% if page.last_modified_at %} + <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: date_format }}</time></p> +{% elsif page.date %} + <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></p> +{% endif %} \ No newline at end of file diff --git a/_includes/page__hero.html b/_includes/page__hero.html index 98bff72aa29e..ebc0b6b43068 100644 --- a/_includes/page__hero.html +++ b/_includes/page__hero.html @@ -1,25 +1,13 @@ -{% if page.header.image contains "://" %} - {% capture img_path %}{{ page.header.image }}{% endcapture %} -{% else %} - {% capture img_path %}{{ page.header.image | relative_url }}{% endcapture %} -{% endif %} - -{% if page.header.cta_url contains "://" %} - {% capture cta_path %}{{ page.header.cta_url }}{% endcapture %} -{% else %} - {% capture cta_path %}{{ page.header.cta_url | relative_url }}{% endcapture %} -{% endif %} +{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %} -{% if page.header.overlay_image contains "://" %} - {% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %} -{% elsif page.header.overlay_image %} - {% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %} -{% endif %} - -{% if page.header.overlay_filter contains "rgba" %} +{% if page.header.overlay_filter contains "gradient" %} + {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %} +{% elsif page.header.overlay_filter contains "rgba" %} {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %} + {% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %} {% elsif page.header.overlay_filter %} {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %} + {% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %} {% endif %} {% if page.header.image_description %} @@ -31,7 +19,7 @@ {% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %} <div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}" - style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}" + style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}" > {% if page.header.overlay_color or page.header.overlay_image %} <div class="wrapper"> @@ -42,29 +30,22 @@ <h1 id="page-title" class="page__title" itemprop="headline"> {{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }} {% endif %} </h1> - {% if page.header.show_overlay_excerpt != false and page.excerpt %} + {% if page.tagline %} + <p class="page__lead">{{ page.tagline | markdownify | remove: "<p>" | remove: "</p>" }}</p> + {% elsif page.header.show_overlay_excerpt != false and page.excerpt %} <p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p> {% endif %} - {% if page.read_time %} - <p class="page__meta"><i class="far fa-clock" aria-hidden="true"></i> {% include read-time.html %}</p> - {% endif %} - {% if page.header.cta_url %} - <p><a href="{{ cta_path }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p> - {% endif %} + {% include page__meta.html %} {% if page.header.actions %} <p> {% for action in page.header.actions %} - {% if action.url contains "://" %} - {% assign url = action.url %} - {% else %} - {% assign url = action.url | relative_url %} - {% endif %} - <a href="{{ url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a> + <a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a> {% endfor %} + </p> {% endif %} </div> {% else %} - <img src="{{ img_path }}" alt="{{ image_description }}" class="page__hero-image"> + <img src="{{ page.header.image | relative_url }}" alt="{{ image_description }}" class="page__hero-image"> {% endif %} {% if page.header.caption %} <span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span> diff --git a/_includes/page__hero_video.html b/_includes/page__hero_video.html index 8586a95a2b15..a313a23d45b9 100644 --- a/_includes/page__hero_video.html +++ b/_includes/page__hero_video.html @@ -1,4 +1,2 @@ -{% capture video_id %}{{ page.header.video.id }}{% endcapture %} -{% capture video_provider %}{{ page.header.video.provider }}{% endcapture %} - -{% include video id=video_id provider=video_provider %} +{% assign video = page.header.video %} +{% include video id=video.id provider=video.provider danmaku=video.danmaku %} diff --git a/_includes/page__meta.html b/_includes/page__meta.html new file mode 100644 index 000000000000..3d228c921205 --- /dev/null +++ b/_includes/page__meta.html @@ -0,0 +1,31 @@ +{% assign document = post | default: page %} +{% if document.read_time or document.show_date %} + <p class="page__meta"> + {% if document.show_date and document.date %} + {% assign date = document.date %} + <span class="page__meta-date"> + <i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-calendar-alt" aria-hidden="true"></i> + {% assign date_format = site.date_format | default: "%B %-d, %Y" %} + <time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time> + </span> + {% endif %} + + {% if document.read_time and document.show_date %}<span class="page__meta-sep"></span>{% endif %} + + {% if document.read_time %} + {% assign words_per_minute = document.words_per_minute | default: site.words_per_minute | default: 200 %} + {% assign words = document.content | strip_html | number_of_words %} + + <span class="page__meta-readtime"> + <i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-clock" aria-hidden="true"></i> + {% if words < words_per_minute %} + {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% elsif words == words_per_minute %} + 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% else %} + {{ words | divided_by: words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% endif %} + </span> + {% endif %} + </p> +{% endif %} diff --git a/_includes/page__related.html b/_includes/page__related.html new file mode 100644 index 000000000000..9777865eeefd --- /dev/null +++ b/_includes/page__related.html @@ -0,0 +1,11 @@ +{% assign posts = include.posts | where_exp: "post", "post.hidden != true" %} +<div class="page__related"> + {% include before-related.html %} + <h2 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h2> + <div class="grid__wrapper"> + {% for post in posts limit:4 %} + {% if post.id == page.id %}{% continue %}{% endif %} + {% include archive-single.html type="grid" %} + {% endfor %} + </div> +</div> diff --git a/_includes/paginator-v1.html b/_includes/paginator-v1.html new file mode 100644 index 000000000000..c24d4909f488 --- /dev/null +++ b/_includes/paginator-v1.html @@ -0,0 +1,70 @@ +{% if paginator.total_pages > 1 %} +<nav class="pagination"> + {% assign paginate_path_last = site.paginate_path | split: '/' | last %} + {% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: paginate_path_last, '' | replace: '//', '/' | relative_url %} + <ul> + {% comment %} Link for previous page {% endcomment %} + {% if paginator.previous_page %} + {% if paginator.previous_page == 1 %} + <li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% else %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% endif %} + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li> + {% endif %} + + {% comment %} First page {% endcomment %} + {% if paginator.page == 1 %} + <li><a href="#" class="disabled current">1</a></li> + {% else %} + <li><a href="{{ first_page_path }}">1</a></li> + {% endif %} + + {% assign page_start = 2 %} + {% if paginator.page > 4 %} + {% assign page_start = paginator.page | minus: 2 %} + {% comment %} Ellipsis for truncated links {% endcomment %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% assign page_end = paginator.total_pages | minus: 1 %} + {% assign pages_to_end = paginator.total_pages | minus: paginator.page %} + {% if pages_to_end > 4 %} + {% assign page_end = paginator.page | plus: 2 %} + {% endif %} + + {% for index in (page_start..page_end) %} + {% if index == paginator.page %} + <li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li> + {% else %} + {% comment %} Distance from current page and this link {% endcomment %} + {% assign dist = paginator.page | minus: index %} + {% if dist < 0 %} + {% comment %} Distance must be a positive value {% endcomment %} + {% assign dist = 0 | minus: dist %} + {% endif %} + <li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li> + {% endif %} + {% endfor %} + + {% comment %} Ellipsis for truncated links {% endcomment %} + {% if pages_to_end > 3 %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% if paginator.page == paginator.total_pages %} + <li><a href="#" class="disabled current">{{ paginator.page }}</a></li> + {% else %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li> + {% endif %} + + {% comment %} Link next page {% endcomment %} + {% if paginator.next_page %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li> + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li> + {% endif %} + </ul> +</nav> +{% endif %} diff --git a/_includes/paginator-v2.html b/_includes/paginator-v2.html new file mode 100644 index 000000000000..ea5707d56965 --- /dev/null +++ b/_includes/paginator-v2.html @@ -0,0 +1,68 @@ +<nav class="pagination"> + <ul> + {% comment %} Link for previous page {% endcomment %} + {% if paginator.previous_page %} + {% if paginator.previous_page == 1 %} + <li><a href="{{ paginator.first_page_path | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% else %} + <li><a href="{{ paginator.previous_page_path | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% endif %} + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li> + {% endif %} + + {% comment %} Determine whether the first page and the last page are already included in trail {% endcomment %} + {% for trail in paginator.page_trail %} + {% if trail.num == paginator.first_page %} + {% assign has_first_page = true %} + {% elsif trail.num == paginator.last_page %} + {% assign has_last_page = true %} + {% endif %} + {% endfor %} + + {% comment %} First page {% endcomment %} + {% unless has_first_page %} + {% if paginator.page == 1 %} + <li><a href="#" class="disabled current">1</a></li> + {% else %} + <li><a href="{{ paginator.first_page_path | relative_url }}">1</a></li> + {% endif %} + {% endunless %} + + {% comment %} Ellipsis for truncated links {% endcomment %} + {% assign ellipsis_start = paginator.first_page | plus: 1 %} + {% if paginator.page_trail.first.num > ellipsis_start %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% comment %} Main pagination trail {% endcomment %} + {% for trail in paginator.page_trail %} + {% if paginator.page == trail.num %} + <li><a href="{{ trail.path | remove: 'index.html' | relative_url }}" class="disabled current">{{ trail.num }}</a></li> + {% else %} + <li><a href="{{ trail.path | remove: 'index.html' | relative_url }}">{{ trail.num }}</a></li> + {% endif %} + {% endfor %} + + {% comment %} Ellipsis for truncated links {% endcomment %} + {% assign ellipsis_end = paginator.last_page | minus: 1 %} + {% if paginator.page_trail.last.num < ellipsis_end %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% unless has_last_page %} + {% if paginator.page == paginator.total_pages %} + <li><a href="#" class="disabled current">{{ paginator.page }}</a></li> + {% else %} + <li><a href="{{ paginator.last_page_path | remove: 'index.html' | relative_url }}">{{ paginator.total_pages }}</a></li> + {% endif %} + {% endunless %} + + {% comment %} Link next page {% endcomment %} + {% if paginator.next_page %} + <li><a href="{{ paginator.next_page_path | remove: 'index.html' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li> + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li> + {% endif %} + </ul> +</nav> diff --git a/_includes/paginator.html b/_includes/paginator.html index 592a2cfcf9a0..c4ab29edf29b 100644 --- a/_includes/paginator.html +++ b/_includes/paginator.html @@ -1,69 +1,7 @@ {% if paginator.total_pages > 1 %} -<nav class="pagination"> - {% assign first_page_path = site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %} - <ul> - {% comment %} Link for previous page {% endcomment %} - {% if paginator.previous_page %} - {% if paginator.previous_page == 1 %} - <li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> - {% else %} - <li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> - {% endif %} - {% else %} - <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li> - {% endif %} - - {% comment %} First page {% endcomment %} - {% if paginator.page == 1 %} - <li><a href="#" class="disabled current">1</a></li> - {% else %} - <li><a href="{{ first_page_path }}">1</a></li> - {% endif %} - - {% assign page_start = 2 %} - {% if paginator.page > 4 %} - {% assign page_start = paginator.page | minus: 2 %} - {% comment %} Ellipsis for truncated links {% endcomment %} - <li><a href="#" class="disabled">…</a></li> - {% endif %} - - {% assign page_end = paginator.total_pages | minus: 1 %} - {% assign pages_to_end = paginator.total_pages | minus: paginator.page %} - {% if pages_to_end > 4 %} - {% assign page_end = paginator.page | plus: 2 %} - {% endif %} - - {% for index in (page_start..page_end) %} - {% if index == paginator.page %} - <li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li> - {% else %} - {% comment %} Distance from current page and this link {% endcomment %} - {% assign dist = paginator.page | minus: index %} - {% if dist < 0 %} - {% comment %} Distance must be a positive value {% endcomment %} - {% assign dist = 0 | minus: dist %} - {% endif %} - <li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li> - {% endif %} - {% endfor %} - - {% comment %} Ellipsis for truncated links {% endcomment %} - {% if pages_to_end > 3 %} - <li><a href="#" class="disabled">…</a></li> - {% endif %} - - {% if paginator.page == paginator.total_pages %} - <li><a href="#" class="disabled current">{{ paginator.page }}</a></li> - {% else %} - <li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li> - {% endif %} - - {% comment %} Link next page {% endcomment %} - {% if paginator.next_page %} - <li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li> - {% else %} - <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li> - {% endif %} - </ul> -</nav> + {% if site.paginate %} + {% include paginator-v1.html %} + {% elsif site.pagination.enabled %} + {% include paginator-v2.html %} + {% endif %} {% endif %} diff --git a/_includes/post_pagination.html b/_includes/post_pagination.html index a93c6279763b..47bae3c6ee40 100644 --- a/_includes/post_pagination.html +++ b/_includes/post_pagination.html @@ -1,14 +1,14 @@ {% if page.previous or page.next %} <nav class="pagination"> {% if page.previous %} - <a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a> + <a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html | strip}}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a> {% else %} <a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a> {% endif %} {% if page.next %} - <a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a> + <a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html | strip}}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a> {% else %} <a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a> {% endif %} </nav> -{% endif %} \ No newline at end of file +{% endif %} diff --git a/_includes/posts-category.html b/_includes/posts-category.html index 98be3e96d254..658f315104b2 100644 --- a/_includes/posts-category.html +++ b/_includes/posts-category.html @@ -1,3 +1,4 @@ -{%- for post in site.categories[include.taxonomy] -%} +{% assign posts = site.categories[include.taxonomy] | where_exp: "post", "post.hidden != true" %} +{%- for post in posts -%} {% include archive-single.html %} {%- endfor -%} diff --git a/_includes/posts-tag.html b/_includes/posts-tag.html index 180a2f315d25..a8fc472b443a 100644 --- a/_includes/posts-tag.html +++ b/_includes/posts-tag.html @@ -1,3 +1,4 @@ -{%- for post in site.tags[include.taxonomy] -%} +{% assign posts = site.tags[include.taxonomy] | where_exp: "post", "post.hidden != true" %} +{%- for post in posts -%} {% include archive-single.html %} {%- endfor -%} diff --git a/_includes/posts-taxonomy.html b/_includes/posts-taxonomy.html new file mode 100644 index 000000000000..e99db65c875f --- /dev/null +++ b/_includes/posts-taxonomy.html @@ -0,0 +1,37 @@ +{% assign items_max = 0 %} +{% for item in include.taxonomies %} + {% if item[1].size > items_max %} + {% assign items_max = item[1].size %} + {% endif %} +{% endfor %} + +<ul class="taxonomy__index"> + {% for i in (1..items_max) reversed %} + {% for item in include.taxonomies %} + {% if item[1].size == i %} + <li> + <a href="#{{ item[0] | slugify }}"> + <strong>{{ item[0] }}</strong> <span class="taxonomy__count">{{ i }}</span> + </a> + </li> + {% endif %} + {% endfor %} + {% endfor %} +</ul> + +{% assign entries_layout = page.entries_layout | default: 'list' %} +{% for i in (1..items_max) reversed %} + {% for taxonomy in include.taxonomies %} + {% if taxonomy[1].size == i %} + <section id="{{ taxonomy[0] | slugify }}" class="taxonomy__section"> + <h2 class="archive__subtitle">{{ taxonomy[0] }}</h2> + <div class="entries-{{ entries_layout }}"> + {% for post in taxonomy.last %} + {% include archive-single.html type=entries_layout %} + {% endfor %} + </div> + <a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a> + </section> + {% endif %} + {% endfor %} +{% endfor %} diff --git a/_includes/read-time.html b/_includes/read-time.html deleted file mode 100644 index df88d52926a3..000000000000 --- a/_includes/read-time.html +++ /dev/null @@ -1,15 +0,0 @@ -{% assign words_per_minute = site.words_per_minute | default: 200 %} - -{% if post.read_time %} - {% assign words = post.content | strip_html | number_of_words %} -{% elsif page.read_time %} - {% assign words = page.content | strip_html | number_of_words %} -{% endif %} - -{% if words < words_per_minute %} - {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} -{% elsif words == words_per_minute %} - 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} -{% else %} - {{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} -{% endif %} \ No newline at end of file diff --git a/_includes/schema.html b/_includes/schema.html new file mode 100644 index 000000000000..1dae6e2d7243 --- /dev/null +++ b/_includes/schema.html @@ -0,0 +1,16 @@ +<script type="application/ld+json"> +{ + "@context": "https://schema.org", + {% if site.social.type == "Organization" -%} + "@type": "Organization", + "url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %}, + "logo": {{ site_og_image | jsonify }}{% endif %}{% if site.social.links %}, + "sameAs": {{ site.social.links | jsonify }}{% endif %} + {%- else -%} + "@type": "Person", + "name": {{ site.social.name | default: site.name | jsonify }}, + "url": {{ '/' | absolute_url | jsonify }}{% if site.social.links %}, + "sameAs": {{ site.social.links | jsonify }}{% endif %} + {%- endif %} +} +</script> diff --git a/_includes/scripts.html b/_includes/scripts.html index ed308a0ad6a2..bbdaddff0bab 100644 --- a/_includes/scripts.html +++ b/_includes/scripts.html @@ -1,15 +1,9 @@ {% if site.footer_scripts %} {% for script in site.footer_scripts %} - {% if script contains "://" %} - {% capture script_path %}{{ script }}{% endcapture %} - {% else %} - {% capture script_path %}{{ script | relative_url }}{% endcapture %} - {% endif %} - <script src="{{ script_path }}"></script> + <script src="{{ script | relative_url }}"></script> {% endfor %} {% else %} <script src="{{ '/assets/js/main.min.js' | relative_url }}"></script> - <script defer src="https://use.fontawesome.com/releases/v5.8.1/js/all.js" integrity="sha384-g5uSoOSBd7KkhAMlnQILrecXvzst9TdC09/VM+pjDTCM+1il8RHz5fKANTFFb+gQ" crossorigin="anonymous"></script> {% endif %} {% if site.search == true or page.layout == "search" %} @@ -29,11 +23,6 @@ {% if site.after_footer_scripts %} {% for script in site.after_footer_scripts %} - {% if script contains "://" %} - {% capture script_path %}{{ script }}{% endcapture %} - {% else %} - {% capture script_path %}{{ script | relative_url }}{% endcapture %} - {% endif %} - <script src="{{ script_path }}"></script> + <script src="{{ script | relative_url }}"></script> {% endfor %} {% endif %} diff --git a/_includes/search/algolia-search-scripts.html b/_includes/search/algolia-search-scripts.html index a6bc9d29d78b..f2e100224f97 100644 --- a/_includes/search/algolia-search-scripts.html +++ b/_includes/search/algolia-search-scripts.html @@ -1,54 +1,82 @@ -<!-- Including InstantSearch.js library and styling --> -<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css"> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css"> - <script> -// Instanciating InstantSearch.js with Algolia credentials -const search = instantsearch({ - appId: '{{ site.algolia.application_id }}', - apiKey: '{{ site.algolia.search_only_api_key }}', - indexName: '{{ site.algolia.index_name }}', - searchParameters: { - restrictSearchableAttributes: [ - 'title', - 'content' - ] - } -}); +// Including InstantSearch.js library and styling +const loadSearch = function() { + const loadCSS = function(src) { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = src; + link.media = 'all'; + document.head.appendChild(link); + }; + + var script = document.createElement('script'); + script.setAttribute("type", "text/javascript"); + script.setAttribute("src", "https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"); + script.addEventListener("load", function() { + // Instantiating InstantSearch.js with Algolia credentials + const search = instantsearch({ + appId: '{{ site.algolia.application_id }}', + apiKey: '{{ site.algolia.search_only_api_key }}', + indexName: '{{ site.algolia.index_name }}', + searchParameters: { + restrictSearchableAttributes: ['title', 'content'] + } + }); -const hitTemplate = function(hit) { - const url = hit.url; - const title = hit._highlightResult.title.value; - const content = hit._highlightResult.html.value; - - return ` - <div class="list__item"> - <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> - <h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2> - <div class="archive__item-excerpt" itemprop="description">${content}</div> - </article> - </div> - `; -} - -// Adding searchbar and results widgets -search.addWidget( - instantsearch.widgets.searchBox({ - container: '.search-searchbar', - {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %} - placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}' - }) -); -search.addWidget( - instantsearch.widgets.hits({ - container: '.search-hits', - templates: { - item: hitTemplate + const hitTemplate = function(hit) { + const url = hit.url; + const hightlight = hit._highlightResult; + const title = hightlight.title && hightlight.title.value || ""; + const content = hightlight.html && hightlight.html.value || ""; + + return ` + <div class="list__item"> + <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> + <h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2> + <div class="archive__item-excerpt" itemprop="description">${content}</div> + </article> + </div> + `; } - }) -); -// Starting the search -search.start(); + // Adding searchbar and results widgets + search.addWidget( + instantsearch.widgets.searchBox({ + container: '.search-searchbar', + {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %} + placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}' + }) + ); + search.addWidget( + instantsearch.widgets.hits({ + container: '.search-hits', + templates: { + item: hitTemplate, + empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}', + } + }) + ); + + if (!search.started) { + search.start(); + } + }); + document.body.appendChild(script); + + loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css"); + loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css"); +}; + +// Starting the search only when toggle is clicked +$(document).ready(function() { + var scriptLoaded = false; + + $(".search__toggle").on("click", function() { + if (!scriptLoaded) { + loadSearch(); + scriptLoaded = true; + } + }); +}); </script> diff --git a/_includes/search/search_form.html b/_includes/search/search_form.html index 925f6cd74ecf..b9de365c6efe 100644 --- a/_includes/search/search_form.html +++ b/_includes/search/search_form.html @@ -1,18 +1,26 @@ <div class="search-content__inner-wrap"> -{%- assign search_provider = site.search_provider | default: "lunr" -%} -{%- case search_provider -%} + {%- assign search_provider = site.search_provider | default: "lunr" -%} + {%- case search_provider -%} {%- when "lunr" -%} - <input type="search" id="search" aria-placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> - <div id="results" class="results"></div> + <form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search"> + <label class="sr-only" for="search"> + {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }} + </label> + <input type="search" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + </form> + <div id="results" class="results"></div> {%- when "google" -%} - <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id"> - <input type="search" id="cse-search-input-box-id" aria-placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> - </form> - <div id="results" class="results"> - <gcse:searchresults-only></gcse:searchresults-only> - </div> + <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id" role="search"> + <label class="sr-only" for="cse-search-input-box-id"> + {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }} + </label> + <input type="search" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + </form> + <div id="results" class="results"> + <gcse:searchresults-only></gcse:searchresults-only> + </div> {%- when "algolia" -%} - <div class="search-searchbar"></div> - <div class="search-hits"></div> -{%- endcase -%} + <div class="search-searchbar"></div> + <div class="search-hits"></div> + {%- endcase -%} </div> diff --git a/_includes/seo.html b/_includes/seo.html index d4a762a10030..e500c6f3edfa 100644 --- a/_includes/seo.html +++ b/_includes/seo.html @@ -1,54 +1,33 @@ <!-- begin _includes/seo.html --> -{%- if site.url -%} - {%- assign seo_url = site.url | append: site.baseurl -%} -{%- endif -%} -{%- assign seo_url = seo_url | default: site.github.url -%} - -{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %} +{%- assign title_separator = site.title_separator | default: '-' -%} -{%- if page.title -%} - {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%} +{%- assign page_title = page.title | default: site.title | replace: '|', '|' -%} +{%- if page_title contains site.title -%} + {%- assign seo_title = page_title | replace: '|', '|' -%} +{%- else -%} + {%- assign seo_title = page_title | append: " " | append: title_separator | append: " " | append: site.title | replace: '|', '|' -%} {%- endif -%} -{%- if seo_title -%} - {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%} -{%- endif -%} +{%- assign page_title = page_title | markdownify | strip_html | strip_newlines | escape_once -%} +{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%} -{% if page.canonical_url %} - {%- assign canonical_url = page.canonical_url %} -{% else %} - {%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %} -{% endif %} +{%- assign canonical_url = page.canonical_url | default: page.url | replace: "/index.html", "/" | absolute_url %} {%- assign seo_description = page.description | default: page.excerpt | default: site.description -%} {%- if seo_description -%} - {%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%} + {%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip -%} {%- endif -%} -{%- assign author = page.author | default: page.authors[0] | default: site:author -%} +{%- assign author = page.author | default: page.authors[0] | default: site.author -%} {%- assign author = site.data.authors[author] | default: author -%} {%- if author.twitter -%} {%- assign author_twitter = author.twitter | replace: "@", "" -%} {%- endif -%} -{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%} -{%- unless page_large_image contains '://' -%} - {%- assign page_large_image = page_large_image | absolute_url -%} -{%- endunless -%} -{%- assign page_large_image = page_large_image | escape -%} - -{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%} -{%- unless page_teaser_image contains '://' -%} - {%- assign page_teaser_image = page_teaser_image | absolute_url -%} -{%- endunless -%} -{%- assign page_teaser_image = page_teaser_image | escape -%} - -{%- assign site_og_image = site.og_image -%} -{%- unless site_og_image contains '://' -%} - {%- assign site_og_image = site_og_image | absolute_url -%} -{%- endunless -%} -{%- assign site_og_image = site_og_image | escape -%} +{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url | escape -%} +{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url | escape -%} +{%- assign site_og_image = site.og_image | absolute_url | escape -%} {%- if page.date -%} {%- assign og_type = "article" -%} @@ -56,20 +35,23 @@ {%- assign og_type = "website" -%} {%- endif -%} -<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title> +<title>{{ seo_title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title> <meta name="description" content="{{ seo_description }}"> {% if author.name %} <meta name="author" content="{{ author.name | default: author }}"> + {% if og_type == "article" %} + <meta property="article:author" content="{{ author.name | default: author }}"> + {% endif %} {% endif %} <meta property="og:type" content="{{ og_type }}"> <meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}"> <meta property="og:site_name" content="{{ site.title }}"> -<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}"> +<meta property="og:title" content="{{ page_title }}"> <meta property="og:url" content="{{ canonical_url }}"> -{% if page.excerpt %} +{% if seo_description %} <meta property="og:description" content="{{ seo_description }}"> {% endif %} @@ -81,7 +63,7 @@ {% if site.twitter.username %} <meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}"> - <meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}"> + <meta name="twitter:title" content="{{ page_title }}"> <meta name="twitter:description" content="{{ seo_description }}"> <meta name="twitter:url" content="{{ canonical_url }}"> @@ -127,27 +109,8 @@ <link rel="next" href="{{ paginator.next_page_path | absolute_url }}"> {% endif %} -{% if site.og_image %} - <script type="application/ld+json"> - { - "@context": "https://schema.org", - "@type": "Organization", - "url": {{ seo_url | jsonify }}, - "logo": {{ site_og_image | jsonify }} - } - </script> -{% endif %} - -{% if site.social %} - <script type="application/ld+json"> - { - "@context": "https://schema.org", - "@type": "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}", - "name": {{ site.social.name | default: site.name | jsonify }}, - "url": {{ seo_url | jsonify }}, - "sameAs": {{ site.social.links | jsonify }} - } - </script> +{% if page.url == '/' %} + {% include schema.html %} {% endif %} {% if site.google_site_verification %} @@ -165,4 +128,7 @@ {% if site.naver_site_verification %} <meta name="naver-site-verification" content="{{ site.naver_site_verification }}"> {% endif %} +{% if site.baidu_site_verification %} + <meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}"> +{% endif %} <!-- end _includes/seo.html --> diff --git a/_includes/sidebar.html b/_includes/sidebar.html index 2a1884edeb55..a4ca1ca78151 100644 --- a/_includes/sidebar.html +++ b/_includes/sidebar.html @@ -4,13 +4,8 @@ {% if page.sidebar %} {% for s in page.sidebar %} {% if s.image %} - <img src= - {% if s.image contains "://" %} - "{{ s.image }}" - {% else %} - "{{ s.image | relative_url }}" - {% endif %} - alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}"> + <img src="{{ s.image | relative_url }}" + alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}"> {% endif %} {% if s.title %}<h3>{{ s.title }}</h3>{% endif %} {% if s.text %}{{ s.text | markdownify }}{% endif %} @@ -21,4 +16,4 @@ {% endif %} {% endif %} </div> -{% endif %} \ No newline at end of file +{% endif %} diff --git a/_includes/skip-links.html b/_includes/skip-links.html new file mode 100644 index 000000000000..c2d52235e14f --- /dev/null +++ b/_includes/skip-links.html @@ -0,0 +1,7 @@ +<nav class="skip-links"> + <ul> + <li><a href="#site-nav" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li> + <li><a href="#main" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li> + <li><a href="#footer" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_footer | default: 'Skip to footer' }}</a></li> + </ul> +</nav> diff --git a/_includes/social-share.html b/_includes/social-share.html index 0b377982b268..847baa32d5da 100644 --- a/_includes/social-share.html +++ b/_includes/social-share.html @@ -1,11 +1,9 @@ <section class="page__share"> - {% if site.data.ui-text[site.locale].share_on_label %} - <h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4> - {% endif %} + <h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4> <a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fab fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> <a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> - <a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> + <a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> </section> diff --git a/_includes/tag-list.html b/_includes/tag-list.html index 73f86e282a79..5893ee4e4d46 100644 --- a/_includes/tag-list.html +++ b/_includes/tag-list.html @@ -6,20 +6,13 @@ {% endcase %} {% if site.tag_archive.path %} - {% comment %} - <!-- Sort alphabetically regardless of case e.g. a B c d E --> - <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ --> - {% endcomment %} - {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} - {% assign tag_hashes = page_tags | split: ',' | sort %} + {% assign tags_sorted = page.tags | sort_natural %} <p class="page__taxonomy"> <strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong> <span itemprop="keywords"> - {% for hash in tag_hashes %} - {% assign keyValue = hash | split: '#' %} - {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} - <a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} + {% for tag_word in tags_sorted %} + <a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} {% endfor %} </span> </p> diff --git a/_includes/toc.html b/_includes/toc.html index 54ab8b03da40..bc90d08a994b 100644 --- a/_includes/toc.html +++ b/_includes/toc.html @@ -1,6 +1,30 @@ {% capture tocWorkspace %} {% comment %} - Version 1.0.5 + Copyright (c) 2017 Vladimir "allejo" Jimenez + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + {% endcomment %} + {% comment %} + Version 1.2.1 https://github.com/allejo/jekyll-toc "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe @@ -9,77 +33,157 @@ {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} Parameters: - * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll Optional Parameters: - * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC - * class (string) : '' - a CSS class assigned to the TOC - * id (string) : '' - an ID to assigned to the TOC - * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored - * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored - * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list - * item_class (string) : '' - add custom class for each list item; has support for '%level%' placeholder, which is the current heading level - * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content + * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC + * class (string) : '' - a CSS class assigned to the TOC + * id (string) : '' - an ID to assigned to the TOC + * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored + * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored + * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list + * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level + * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level + * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content + * anchor_class (string) : '' - add custom class(es) for each anchor element + * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute + * flat_toc (bool) : false - when set to true, the TOC will be a single level list Output: - An ordered or unordered list representing the table of contents of a markdown block. This snippet will only generate the table of contents and will NOT output the markdown given to it + An ordered or unordered list representing the table of contents of a markdown block. This snippet will only + generate the table of contents and will NOT output the markdown given to it {% endcomment %} - {% capture my_toc %}{% endcapture %} + {% capture newline %} + {% endcapture %} + {% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline --> + + {% capture deprecation_warnings %}{% endcapture %} + + {% if include.baseurl %} + {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %} + {% endif %} + + {% if include.skipNoIDs %} + {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %} + {% endif %} + + {% capture jekyll_toc %}{% endcapture %} {% assign orderedList = include.ordered | default: false %} + {% assign flatToc = include.flat_toc | default: false %} + {% assign baseURL = include.base_url | default: include.baseurl | default: '' %} + {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %} {% assign minHeader = include.h_min | default: 1 %} {% assign maxHeader = include.h_max | default: 6 %} - {% assign nodes = include.html | split: '<h' %} + {% assign nodes = include.html | strip | split: '<h' %} + {% assign firstHeader = true %} + {% assign currLevel = 0 %} + {% assign lastLevel = 0 %} - {% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %} + {% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %} {% for node in nodes %} {% if node == "" %} {% continue %} {% endif %} - {% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %} + {% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %} - {% if headerLevel < minHeader or headerLevel > maxHeader %} + {% if currLevel < minHeader or currLevel > maxHeader %} {% continue %} {% endif %} - {% if firstHeader %} - {% assign firstHeader = false %} - {% assign minHeader = headerLevel %} - {% endif %} - - {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %} {% assign _workspace = node | split: '</h' %} {% assign _idWorkspace = _workspace[0] | split: 'id="' %} {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} - {% assign html_id = _idWorkspace[0] %} + {% assign htmlID = _idWorkspace[0] %} + + {% assign _classWorkspace = _workspace[0] | split: 'class="' %} + {% assign _classWorkspace = _classWorkspace[1] | split: '"' %} + {% assign htmlClass = _classWorkspace[0] %} + + {% if htmlClass contains "no_toc" %} + {% continue %} + {% endif %} + + {% if firstHeader %} + {% assign minHeader = currLevel %} + {% endif %} {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} - {% assign space = '' %} - {% for i in (1..indentAmount) %} - {% assign space = space | prepend: ' ' %} - {% endfor %} + {% if include.item_class and include.item_class != blank %} + {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} - {% unless include.item_class == blank %} - {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} - {% endunless %} + {% if include.submenu_class and include.submenu_class != blank %} + {% assign subMenuLevel = currLevel | minus: 1 %} + {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} + + {% if htmlID %} + {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %} + + {% if include.anchor_class %} + {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %} + {% elsif skipNoIDs == true %} + {% continue %} + {% else %} + {% capture listItem %}{{ anchorBody }}{% endcapture %} + {% endif %} + + {% if currLevel > lastLevel and flatToc == false %} + {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %} + {% elsif currLevel < lastLevel and flatToc == false %} + {% assign repeatCount = lastLevel | minus: currLevel %} - {% capture my_toc %}{{ my_toc }} -{{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %} + {% for i in (1..repeatCount) %} + {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %} + {% endfor %} + + {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} + {% else %} + {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} + {% endif %} + + {% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %} + + {% assign lastLevel = currLevel %} + {% assign firstHeader = false %} {% endfor %} - {% if include.class %} - {% capture my_toc %}{:.{{ include.class }}} -{{ my_toc | lstrip }}{% endcapture %} + {% if flatToc == true %} + {% assign repeatCount = 1 %} + {% else %} + {% assign repeatCount = minHeader | minus: 1 %} + {% assign repeatCount = lastLevel | minus: repeatCount %} {% endif %} - {% if include.id %} - {% capture my_toc %}{: #{{ include.id }}} -{{ my_toc | lstrip }}{% endcapture %} + {% for i in (1..repeatCount) %} + {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %} + {% endfor %} + + {% if jekyll_toc != '' %} + {% assign rootAttributes = '' %} + {% if include.class and include.class != blank %} + {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% if include.id and include.id != blank %} + {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %} + {% endif %} + + {% if rootAttributes %} + {% assign nodes = jekyll_toc | split: '>' %} + {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %} + {% endif %} {% endif %} -{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} \ No newline at end of file +{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}} diff --git a/_includes/video b/_includes/video index 8955c7c49470..c85a868c1d0b 100644 --- a/_includes/video +++ b/_includes/video @@ -1,13 +1,24 @@ {% capture video_id %}{{ include.id }}{% endcapture %} {% capture video_provider %}{{ include.provider }}{% endcapture %} +{% capture video_danmaku %}{{ include.danmaku | default: 0 }}{% endcapture %} -<!-- Courtesy of embedresponsively.com //--> -<div class="responsive-video-container"> -{% if video_provider == "vimeo" %} - <iframe src="https://player.vimeo.com/video/{{ video_id }}?dnt=true" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> -{% elsif video_provider == "youtube" %} - <iframe src="https://www.youtube-nocookie.com/embed/{{ video_id }}" frameborder="0" allowfullscreen></iframe> -{% elsif video_provider == "google-drive" %} - <iframe src="https://drive.google.com/file/d/{{ video_id }}/preview" frameborder="0" allowfullscreen></iframe> -{% endif %} -</div> +{% capture video_src %} + {% case video_provider %} + {% when "vimeo" %} + https://player.vimeo.com/video/{{ video_id }}?dnt=true + {% when "youtube" %} + https://www.youtube-nocookie.com/embed/{{ video_id }} + {% when "google-drive" %} + https://drive.google.com/file/d/{{ video_id }}/preview + {% when "bilibili" %} + https://player.bilibili.com/player.html?bvid={{ video_id }}&page=1&as_wide=1&high_quality=1&danmaku={{ video_danmaku }} + {% endcase %} +{% endcapture %} +{% assign video_src = video_src | strip %} + +<!-- Courtesy of embedresponsively.com --> +{% unless video_src == "" %} + <div class="responsive-video-container"> + <iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe> + </div> +{% endunless %} diff --git a/_layouts/archive-taxonomy.html b/_layouts/archive-taxonomy.html index 6939122d856b..4e94867df655 100644 --- a/_layouts/archive-taxonomy.html +++ b/_layouts/archive-taxonomy.html @@ -3,13 +3,27 @@ author_profile: false --- +{% if page.header.overlay_color or page.header.overlay_image or page.header.image %} + {% include page__hero.html %} +{% elsif page.header.video.id and page.header.video.provider %} + {% include page__hero_video.html %} +{% endif %} + +{% if page.url != "/" and site.breadcrumbs %} + {% unless paginator %} + {% include breadcrumbs.html %} + {% endunless %} +{% endif %} + <div id="main" role="main"> {% include sidebar.html %} <div class="archive"> - <h1 class="page__title">{{ page.title }}</h1> + {% unless page.header.overlay_color or page.header.overlay_image %} + <h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1> + {% endunless %} {% for post in page.posts %} {% include archive-single.html %} {% endfor %} </div> -</div> \ No newline at end of file +</div> diff --git a/_layouts/archive.html b/_layouts/archive.html index 08beb89af516..83e109b58cb4 100644 --- a/_layouts/archive.html +++ b/_layouts/archive.html @@ -19,8 +19,8 @@ <div class="archive"> {% unless page.header.overlay_color or page.header.overlay_image %} - <h1 id="page-title" class="page__title">{{ page.title }}</h1> + <h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1> {% endunless %} {{ content }} </div> -</div> \ No newline at end of file +</div> diff --git a/_layouts/categories.html b/_layouts/categories.html index aa2c6e80e276..4d3661188982 100644 --- a/_layouts/categories.html +++ b/_layouts/categories.html @@ -4,39 +4,4 @@ {{ content }} -{% assign categories_max = 0 %} -{% for category in site.categories %} - {% if category[1].size > categories_max %} - {% assign categories_max = category[1].size %} - {% endif %} -{% endfor %} - -<ul class="taxonomy__index"> - {% for i in (1..categories_max) reversed %} - {% for category in site.categories %} - {% if category[1].size == i %} - <li> - <a href="#{{ category[0] | slugify }}"> - <strong>{{ category[0] }}</strong> <span class="taxonomy__count">{{ i }}</span> - </a> - </li> - {% endif %} - {% endfor %} - {% endfor %} -</ul> - -{% for i in (1..categories_max) reversed %} - {% for category in site.categories %} - {% if category[1].size == i %} - <section id="{{ category[0] | slugify | downcase }}" class="taxonomy__section"> - <h2 class="archive__subtitle">{{ category[0] }}</h2> - <div class="entries-{{ page.entries_layout | default: 'list' }}"> - {% for post in category.last %} - {% include archive-single.html type=page.entries_layout %} - {% endfor %} - </div> - <a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a> - </section> - {% endif %} - {% endfor %} -{% endfor %} +{% include posts-taxonomy.html taxonomies=site.categories %} diff --git a/_layouts/category.html b/_layouts/category.html index 79b81ce0972c..b281c8560395 100644 --- a/_layouts/category.html +++ b/_layouts/category.html @@ -4,6 +4,7 @@ {{ content }} -<div class="entries-{{ page.entries_layout }}"> - {% include posts-category.html taxonomy=page.taxonomy type=page.entries_layout %} +{% assign entries_layout = page.entries_layout | default: 'list' %} +<div class="entries-{{ entries_layout }}"> + {% include posts-category.html taxonomy=page.taxonomy type=entries_layout %} </div> diff --git a/_layouts/collection.html b/_layouts/collection.html index 3bcd916a623d..d23d0c723bf4 100644 --- a/_layouts/collection.html +++ b/_layouts/collection.html @@ -4,6 +4,7 @@ {{ content }} -<div class="entries-{{ page.entries_layout }}"> - {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=page.entries_layout %} +{% assign entries_layout = page.entries_layout | default: 'list' %} +<div class="entries-{{ entries_layout }}"> + {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=entries_layout %} </div> diff --git a/_layouts/default.html b/_layouts/default.html index d8ac781ec8ac..ecfc46620257 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -2,25 +2,20 @@ --- <!doctype html> -<!-- - Minimal Mistakes Jekyll Theme 4.16.3 by Michael Rose - Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes - Free for personal and commercial use under the MIT license - https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE ---> -<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js"> +{% include copyright.html %} +<html lang="{{ site.locale | replace: "_", "-" | default: "en" }}" class="no-js"> <head> {% include head.html %} {% include head/custom.html %} </head> - <body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}"> - - {% include_cached browser-upgrade.html %} + <body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}" dir="{% if site.rtl %}rtl{% else %}ltr{% endif %}"> + {% include_cached skip-links.html %} {% include_cached masthead.html %} <div class="initial-content"> {{ content }} + {% include after-content.html %} </div> {% if site.search == true %} @@ -29,7 +24,7 @@ </div> {% endif %} - <div class="page__footer"> + <div id="footer" class="page__footer"> <footer> {% include footer/custom.html %} {% include_cached footer.html %} @@ -37,6 +32,5 @@ </div> {% include scripts.html %} - </body> </html> diff --git a/_layouts/home.html b/_layouts/home.html index d1428ebb0bb5..384a4d9a3bb7 100644 --- a/_layouts/home.html +++ b/_layouts/home.html @@ -6,8 +6,15 @@ <h3 class="archive__subtitle">{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3> -{% for post in paginator.posts %} - {% include archive-single.html %} -{% endfor %} +{% if paginator %} + {% assign posts = paginator.posts %} +{% else %} + {% assign posts = site.posts %} +{% endif %} + +{% assign entries_layout = page.entries_layout | default: 'list' %} +<div class="entries-{{ entries_layout }}"> + {% include documents-collection.html entries=posts type=entries_layout %} +</div> {% include paginator.html %} diff --git a/_layouts/posts.html b/_layouts/posts.html index 76d25f9dda8e..13fc707cf00a 100644 --- a/_layouts/posts.html +++ b/_layouts/posts.html @@ -5,7 +5,7 @@ {{ content }} <ul class="taxonomy__index"> - {% assign postsInYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %} + {% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} {% for year in postsInYear %} <li> <a href="#{{ year.name }}"> @@ -15,13 +15,14 @@ {% endfor %} </ul> -{% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %} +{% assign entries_layout = page.entries_layout | default: 'list' %} +{% assign postsByYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} {% for year in postsByYear %} <section id="{{ year.name }}" class="taxonomy__section"> <h2 class="archive__subtitle">{{ year.name }}</h2> - <div class="entries-{{ page.entries_layout | default: 'list' }}"> + <div class="entries-{{ entries_layout }}"> {% for post in year.items %} - {% include archive-single.html type=page.entries_layout %} + {% include archive-single.html type=entries_layout %} {% endfor %} </div> <a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a> diff --git a/_layouts/search.html b/_layouts/search.html index d18f22352204..da8784350fd6 100644 --- a/_layouts/search.html +++ b/_layouts/search.html @@ -17,7 +17,7 @@ <div class="archive"> {% unless page.header.overlay_color or page.header.overlay_image %} - <h1 id="page-title" class="page__title">{{ page.title }}</h1> + <h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1> {% endunless %} {{ content }} @@ -25,11 +25,11 @@ <h1 id="page-title" class="page__title">{{ page.title }}</h1> {%- assign search_provider = site.search_provider | default: "lunr" -%} {%- case search_provider -%} {%- when "lunr" -%} - <input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + <input type="text" id="search" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> <div id="results" class="results"></div> {%- when "google" -%} <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id"> - <input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + <input type="text" id="cse-search-input-box-id" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> </form> <div id="results" class="results"> <gcse:searchresults-only></gcse:searchresults-only> diff --git a/_layouts/single.html b/_layouts/single.html index 37c7ec84f38c..21cd71144b56 100644 --- a/_layouts/single.html +++ b/_layouts/single.html @@ -8,7 +8,11 @@ {% include page__hero_video.html %} {% endif %} -{% if page.url != "/" and site.breadcrumbs %} +{% assign breadcrumbs_enabled = site.breadcrumbs %} +{% if page.breadcrumbs != null %} + {% assign breadcrumbs_enabled = page.breadcrumbs %} +{% endif %} +{% if page.url != "/" and breadcrumbs_enabled %} {% unless paginator %} {% include breadcrumbs.html %} {% endunless %} @@ -17,19 +21,21 @@ <div id="main" role="main"> {% include sidebar.html %} - <article class="page" itemscope itemtype="https://schema.org/CreativeWork"> - {% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %} + <article class="page" itemscope itemtype="https://schema.org/CreativeWork"{% if page.locale %} lang="{{ page.locale }}"{% endif %}> + {% if page.title %}<meta itemprop="headline" content="{{ page.title | replace: '|', '|' | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %} {% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %} - {% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %} - {% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %} + {% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %} + {% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %} <div class="page__inner-wrap"> {% unless page.header.overlay_color or page.header.overlay_image %} <header> - {% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %} - {% if page.read_time %} - <p class="page__meta"><i class="far fa-clock" aria-hidden="true"></i> {% include read-time.html %}</p> - {% endif %} + {% if page.title -%} + <h1 id="page-title" class="page__title" itemprop="headline"> + <a href="{{ page.url | absolute_url }}" itemprop="url">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</a> + </h1> + {%- endif %} + {% include page__meta.html %} </header> {% endunless %} @@ -37,8 +43,8 @@ {% if page.toc %} <aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}"> <nav class="toc"> - <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label }}</h4></header> - {% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %} + <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header> + {% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" skip_no_ids=true %} </nav> </aside> {% endif %} @@ -51,11 +57,7 @@ <h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4> {% endif %} {% include page__taxonomy.html %} - {% if page.last_modified_at %} - <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: "%B %d, %Y" }}</time></p> - {% elsif page.date %} - <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p> - {% endif %} + {% include page__date.html %} </footer> {% if page.share %}{% include social-share.html %}{% endif %} @@ -63,33 +65,23 @@ <h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4 {% include post_pagination.html %} </div> - {% if jekyll.environment == 'production' and site.comments.provider and page.comments %} - {% include comments.html %} + {% if site.comments.provider and page.comments %} + {% if jekyll.environment == 'production' %} + {% include comments.html %} + {% else %} + <p> + Comments are configured with provider: <strong>{{ site.comments.provider }}</strong>, + but are disabled in non-production environments. + </p> + {% endif %} {% endif %} </article> {% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %} {% if page.id and page.related and site.related_posts.size > 0 %} - <div class="page__related"> - <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4> - <div class="grid__wrapper"> - {% for post in site.related_posts limit:4 %} - {% include archive-single.html type="grid" %} - {% endfor %} - </div> - </div> + {% include page__related.html posts=site.related_posts %} {% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %} {% elsif page.id and page.related %} - <div class="page__related"> - <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4> - <div class="grid__wrapper"> - {% for post in site.posts limit:4 %} - {% if post.id == page.id %} - {% continue %} - {% endif %} - {% include archive-single.html type="grid" %} - {% endfor %} - </div> - </div> + {% include page__related.html posts=site.posts %} {% endif %} </div> diff --git a/_layouts/splash.html b/_layouts/splash.html index b327607e1137..394209d8c512 100644 --- a/_layouts/splash.html +++ b/_layouts/splash.html @@ -9,11 +9,11 @@ {% endif %} <div id="main" role="main"> - <article class="splash" itemscope itemtype="https://schema.org/CreativeWork"> + <article class="splash" itemscope itemtype="https://schema.org/CreativeWork"{% if page.locale %} lang="{{ page.locale }}"{% endif %}> {% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %} {% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %} - {% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %} - {% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %} + {% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %} + {% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %} <section class="page__content" itemprop="text"> {{ content }} diff --git a/_layouts/tag.html b/_layouts/tag.html index 5f83c2aa1531..8b1c1885004f 100644 --- a/_layouts/tag.html +++ b/_layouts/tag.html @@ -4,6 +4,7 @@ {{ content }} -<div class="entries-{{ page.entries_layout | default: 'list' }}"> - {% include posts-tag.html taxonomy=page.taxonomy type=page.entries_layout %} +{% assign entries_layout = page.entries_layout | default: 'list' %} +<div class="entries-{{ entries_layout }}"> + {% include posts-tag.html taxonomy=page.taxonomy type=entries_layout %} </div> diff --git a/_layouts/tags.html b/_layouts/tags.html index 128e176e4b27..a28fa5d709c6 100644 --- a/_layouts/tags.html +++ b/_layouts/tags.html @@ -4,39 +4,4 @@ {{ content }} -{% assign tags_max = 0 %} -{% for tag in site.tags %} - {% if tag[1].size > tags_max %} - {% assign tags_max = tag[1].size %} - {% endif %} -{% endfor %} - -<ul class="taxonomy__index"> - {% for i in (1..tags_max) reversed %} - {% for tag in site.tags %} - {% if tag[1].size == i %} - <li> - <a href="#{{ tag[0] | slugify }}"> - <strong>{{ tag[0] }}</strong> <span class="taxonomy__count">{{ i }}</span> - </a> - </li> - {% endif %} - {% endfor %} - {% endfor %} -</ul> - -{% for i in (1..tags_max) reversed %} - {% for tag in site.tags %} - {% if tag[1].size == i %} - <section id="{{ tag[0] | slugify | downcase }}" class="taxonomy__section"> - <h2 class="archive__subtitle">{{ tag[0] }}</h2> - <div class="entries-{{ page.entries_layout | default: 'list' }}"> - {% for post in tag.last %} - {% include archive-single.html type=page.entries_layout %} - {% endfor %} - </div> - <a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a> - </section> - {% endif %} - {% endfor %} -{% endfor %} +{% include posts-taxonomy.html taxonomies=site.tags %} diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss index c6b8b197d9c7..ba9d13d5df2f 100644 --- a/_sass/minimal-mistakes.scss +++ b/_sass/minimal-mistakes.scss @@ -1,8 +1,5 @@ -/*! - * Minimal Mistakes Jekyll Theme 4.16.3 by Michael Rose - * Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes - * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) -*/ +/* Copyright comment */ +@import "minimal-mistakes/copyright"; /* Variables */ @import "minimal-mistakes/variables"; diff --git a/_sass/minimal-mistakes/_archive.scss b/_sass/minimal-mistakes/_archive.scss index 194a4d7128a6..aee718909418 100644 --- a/_sass/minimal-mistakes/_archive.scss +++ b/_sass/minimal-mistakes/_archive.scss @@ -7,23 +7,32 @@ margin-bottom: 2em; @include breakpoint($large) { - float: right; + float: inline-end; width: calc(100% - #{$right-sidebar-width-narrow}); - padding-right: $right-sidebar-width-narrow; + padding-inline-end: $right-sidebar-width-narrow; } @include breakpoint($x-large) { width: calc(100% - #{$right-sidebar-width}); - padding-right: $right-sidebar-width; + padding-inline-end: $right-sidebar-width; } } .archive__item { position: relative; + + a { + position: relative; + z-index: 10; + } + + a[rel="permalink"] { + position: static; + } } .archive__subtitle { - margin: 1.414em 0 0; + margin: 1.414em 0 0.5em; padding-bottom: 0.5em; font-size: $type-size-5; color: $muted-text-color; @@ -41,17 +50,10 @@ overflow: hidden; text-overflow: ellipsis; - a::before { + a[rel="permalink"]::before { content: ''; position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - } - - a[rel="permalink"]::before { - content: none; + inset: 0; } a + a { @@ -93,14 +95,14 @@ .archive__item-caption { position: absolute; bottom: 0; - right: 0; + inset-inline-end: 0; margin: 0 auto; padding: 2px 5px; color: #fff; font-family: $caption-font-family; font-size: $type-size-8; background: #000; - text-align: right; + text-align: end; z-index: 5; opacity: 0.5; border-radius: $border-radius 0 0 0; @@ -135,11 +137,11 @@ /* extend grid elements to the right */ @include breakpoint($large) { - margin-right: -1 * $right-sidebar-width-narrow; + margin-inline-end: -1 * $right-sidebar-width-narrow; } @include breakpoint($x-large) { - margin-right: -1 * $right-sidebar-width; + margin-inline-end: -1 * $right-sidebar-width; } } } @@ -148,23 +150,22 @@ margin-bottom: 2em; @include breakpoint($small) { - float: left; + float: inline-start; width: span(5 of 10); &:nth-child(2n + 1) { clear: both; - margin-left: 0; + margin-inline-start: 0; } &:nth-child(2n + 2) { clear: none; - margin-left: gutter(of 10); + margin-inline-start: gutter(of 10); } } @include breakpoint($medium) { - margin-left: 0; /* override margin*/ - margin-right: 0; /* override margin*/ + margin-inline: 0; /* override margin*/ width: span(3 of 12); &:nth-child(2n + 1) { @@ -177,17 +178,17 @@ &:nth-child(4n + 2) { clear: none; - margin-left: gutter(1 of 12); + margin-inline-start: gutter(1 of 12); } &:nth-child(4n + 3) { clear: none; - margin-left: gutter(1 of 12); + margin-inline-start: gutter(1 of 12); } &:nth-child(4n + 4) { clear: none; - margin-left: gutter(1 of 12); + margin-inline-start: gutter(1 of 12); } } @@ -196,6 +197,14 @@ font-size: 0.6em; } + .page__meta-sep { + display: block; + + &::before { + display: none; + } + } + .archive__item-title { margin-top: 0.5em; font-size: $type-size-5; @@ -241,23 +250,23 @@ font-size: 1.125em; @include breakpoint($small) { - float: left; + float: inline-start; margin-bottom: 0; width: span(4 of 12); &:nth-child(3n + 1) { clear: both; - margin-left: 0; + margin-inline-start: 0; } &:nth-child(3n + 2) { clear: none; - margin-left: gutter(of 12); + margin-inline-start: gutter(of 12); } &:nth-child(3n + 3) { clear: none; - margin-left: gutter(of 12); + margin-inline-start: gutter(of 12); } .feature__item-teaser { @@ -267,114 +276,89 @@ } .archive__item-body { - padding-left: gutter(1 of 12); - padding-right: gutter(1 of 12); + padding-inline: gutter(1 of 12); } a.btn::before { content: ''; position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; + inset: 0; } - &--left { + &--left, &--right { position: relative; - float: left; - margin-left: 0; - margin-right: 0; + margin-inline: 0; width: 100%; clear: both; font-size: 1.125em; - .archive__item { - float: left; + a.btn::before { + content: ''; + position: absolute; + inset: 0; } .archive__item-teaser { margin-bottom: 2em; } + } - a.btn::before { - content: ''; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; + &--left { + float: inline-start; + + .archive__item { + float: inline-start; } @include breakpoint($small) { .archive__item-teaser { - float: left; + float: inline-start; width: span(5 of 12); } .archive__item-body { - float: right; - padding-left: gutter(0.5 of 12); - padding-right: gutter(1 of 12); + float: inline-end; width: span(7 of 12); + padding-inline-start: gutter(0.5 of 12); + padding-inline-end: gutter(1 of 12); } } } &--right { - position: relative; - float: left; - margin-left: 0; - margin-right: 0; - width: 100%; - clear: both; - font-size: 1.125em; + float: inline-end; .archive__item { - float: left; - } - - .archive__item-teaser { - margin-bottom: 2em; - } - - a.btn::before { - content: ''; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; + float: inline-end; } @include breakpoint($small) { - text-align: right; + text-align: end; .archive__item-teaser { - float: right; + float: inline-end; width: span(5 of 12); } .archive__item-body { - float: left; + float: inline-start; width: span(7 of 12); - padding-left: gutter(0.5 of 12); - padding-right: gutter(1 of 12); + padding-inline-start: gutter(1 of 12); + padding-inline-end: gutter(0.5 of 12); } } } &--center { position: relative; - float: left; - margin-left: 0; - margin-right: 0; + float: inline-start; + margin-inline: 0; width: 100%; clear: both; font-size: 1.125em; .archive__item { - float: left; + float: inline-start; width: 100%; } @@ -385,10 +369,7 @@ a.btn::before { content: ''; position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; + inset: 0; } @include breakpoint($small) { @@ -429,14 +410,22 @@ Wide Pages ========================================================================== */ - .wide { +.wide { .archive { @include breakpoint($large) { - padding-right: 0; + padding-inline-end: 0; } @include breakpoint($x-large) { - padding-right: 0; + padding-inline-end: 0; } } -} \ No newline at end of file +} + +/* Place inside a single layout */ + +.layout--single { + .feature__wrapper { + display: inline-block; + } +} diff --git a/_sass/minimal-mistakes/_base.scss b/_sass/minimal-mistakes/_base.scss index dd94cda17d60..d52a42f2bc03 100644 --- a/_sass/minimal-mistakes/_base.scss +++ b/_sass/minimal-mistakes/_base.scss @@ -35,27 +35,27 @@ h6 { h1 { margin-top: 0; - font-size: $type-size-3; + font-size: $h-size-1; } h2 { - font-size: $type-size-4; + font-size: $h-size-2; } h3 { - font-size: $type-size-5; + font-size: $h-size-3; } h4 { - font-size: $type-size-6; + font-size: $h-size-4; } h5 { - font-size: $type-size-6; + font-size: $h-size-5; } h6 { - font-size: $type-size-6; + font-size: $h-size-6; } small, @@ -107,18 +107,18 @@ abbr[data-original-title] { /* blockquotes */ blockquote { - margin: 2em 1em 2em 0; - padding-left: 1em; - padding-right: 1em; + margin-block: 2em; + margin-inline-end: 1em; + padding-inline: 1em; font-style: italic; - border-left: 0.25em solid $primary-color; + border-inline-start: 0.25em solid $primary-color; cite { font-style: italic; - &:before { + &::before { content: "\2014"; - padding-right: 5px; + padding-inline-end: 5px; } } } @@ -160,24 +160,6 @@ pre { overflow-x: auto; /* add scrollbars to wide code blocks*/ } -p > code, -a > code, -li > code, -figcaption > code, -td > code { - padding-top: 0.1rem; - padding-bottom: 0.1rem; - font-size: 0.8em; - background: $code-background-color; - border-radius: $border-radius; - - &:before, - &:after { - letter-spacing: -0.2em; - content: "\00a0"; /* non-breaking space*/ - } -} - /* horizontal rule */ hr { diff --git a/_sass/minimal-mistakes/_buttons.scss b/_sass/minimal-mistakes/_buttons.scss index 9ef60a8453cc..d30050bf3c2c 100644 --- a/_sass/minimal-mistakes/_buttons.scss +++ b/_sass/minimal-mistakes/_buttons.scss @@ -21,11 +21,11 @@ cursor: pointer; .icon { - margin-right: 0.5em; + margin-inline-end: 0.5em; } .icon + .hidden { - margin-left: -0.5em; /* override for hidden text*/ + margin-inline-start: -0.5em; /* override for hidden text*/ } /* button colors */ @@ -39,7 +39,8 @@ (info, $info-color), (facebook, $facebook-color), (twitter, $twitter-color), - (linkedin, $linkedin-color); + (linkedin, $linkedin-color), + (mastodon, $mastodon-color); @each $buttoncolor, $color in $buttoncolors { &--#{$buttoncolor} { @@ -94,4 +95,4 @@ &--small { font-size: $type-size-7; } -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/_copyright.scss b/_sass/minimal-mistakes/_copyright.scss new file mode 100644 index 000000000000..b70c0374f557 --- /dev/null +++ b/_sass/minimal-mistakes/_copyright.scss @@ -0,0 +1,6 @@ +/*! + * Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose + * Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes + * Free for personal and commercial use under the MIT license + * https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE + */ diff --git a/_sass/minimal-mistakes/_footer.scss b/_sass/minimal-mistakes/_footer.scss index 766c6c72c16c..96d0842cedef 100644 --- a/_sass/minimal-mistakes/_footer.scss +++ b/_sass/minimal-mistakes/_footer.scss @@ -4,16 +4,9 @@ .page__footer { @include clearfix; - float: left; - margin-left: 0; - margin-right: 0; + float: inline-start; + margin-inline: 0; width: 100%; - clear: both; - /* sticky footer fix start */ - position: absolute; - bottom: 0; - height: auto; - /* sticky footer fix end */ margin-top: 3em; color: $muted-text-color; -webkit-animation: $intro-transition; @@ -24,8 +17,7 @@ footer { @include clearfix; - margin-left: auto; - margin-right: auto; + margin-inline: auto; margin-top: 2em; max-width: 100%; padding: 0 1em 2em; @@ -73,13 +65,13 @@ text-transform: uppercase; } - li + li:before { + li + li::before { content: ""; - padding-right: 5px; + padding-inline-end: 5px; } a { - padding-right: 10px; + padding-inline-end: 10px; font-weight: bold; } diff --git a/_sass/minimal-mistakes/_forms.scss b/_sass/minimal-mistakes/_forms.scss index f93721663524..af29b9f72138 100644 --- a/_sass/minimal-mistakes/_forms.scss +++ b/_sass/minimal-mistakes/_forms.scss @@ -3,7 +3,7 @@ ========================================================================== */ form { - margin: 0 0 5px 0; + margin-bottom: 5px; padding: 1em; background-color: $form-background-color; @@ -17,7 +17,7 @@ form { display: block; width: 100%; margin-bottom: 5px * 2; - *margin-left: -7px; + margin-inline-start: -7px; padding: 0; color: $text-color; border: 0; @@ -25,7 +25,7 @@ form { } p { - margin-bottom: 5px / 2; + margin-bottom: (5px / 2); } ul { @@ -45,7 +45,6 @@ button, select, textarea { vertical-align: baseline; - *vertical-align: middle; } input, @@ -102,24 +101,21 @@ input[type="radio"] { height: auto; padding: 0; margin: 3px 0; - *margin-top: 0; line-height: normal; cursor: pointer; border-radius: 0; border: 0 \9; + box-shadow: none; } input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; - *width: 13px; - *height: 13px; } input[type="image"] { border: 0; - box-shadow: none; } input[type="file"] { @@ -138,12 +134,6 @@ input[type="submit"] { width: auto; height: auto; cursor: pointer; - *overflow: visible; -} - -select, -input[type="file"] { - *margin-top: 4px; } select { @@ -173,14 +163,14 @@ input[type="hidden"] { .radio, .checkbox { - padding-left: 18px; + padding-inline-start: 18px; font-weight: normal; } .radio input[type="radio"], .checkbox input[type="checkbox"] { - float: left; - margin-left: -18px; + float: inline-start; + margin-inline-start: -18px; } .radio.inline, @@ -193,7 +183,7 @@ input[type="hidden"] { .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { - margin-left: 10px; + margin-inline-start: 10px; } /* @@ -248,7 +238,7 @@ select:focus { .help-inline { display: inline-block; vertical-align: middle; - padding-left: 5px; + padding-inline-start: 5px; } /* @@ -279,16 +269,16 @@ select:focus { .form-inline .radio, .form-inline .checkbox, .form-inline .radio { - padding-left: 0; + padding-inline-start: 0; margin-bottom: 0; vertical-align: middle; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { - float: left; - margin-left: 0; - margin-right: 3px; + float: inline-start; + margin-inline-start: 0; + margin-inline-end: 3px; } /* @@ -303,8 +293,7 @@ select:focus { } .form-search .search-query { - padding-left: 14px; - padding-right: 14px; + padding-inline: 14px; margin-bottom: 0; border-radius: 14px; } @@ -316,23 +305,23 @@ select:focus { .form-search .radio, .form-search .checkbox, .form-inline .radio { - padding-left: 0; + padding-inline-start: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"] { - float: left; - margin-left: 0; - margin-right: 3px; + float: inline-start; + margin-inline-start: 0; + margin-inline-end: 3px; } /* .form--loading ========================================================================== */ -.form--loading:before { +.form--loading::before { content: ""; } @@ -340,10 +329,10 @@ select:focus { display: block; } -.form:before { +.form::before { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.7); @@ -354,40 +343,6 @@ select:focus { display: none; position: absolute; top: 50%; - left: 50%; + inset-inline-start: 50%; z-index: 11; } - -/* - Google search form - ========================================================================== */ - -#goog-fixurl { - ul { - list-style: none; - margin-left: 0; - padding-left: 0; - li { - list-style-type: none; - } - } -} - -#goog-wm-qt { - width: auto; - margin-right: 10px; - margin-bottom: 20px; - padding: 8px 20px; - display: inline-block; - font-size: $type-size-6; - background-color: #fff; - color: #000; - border-width: 2px !important; - border-style: solid !important; - border-color: $border-color; - border-radius: $border-radius; -} - -#goog-wm-sb { - @extend .btn; -} diff --git a/_sass/minimal-mistakes/_masthead.scss b/_sass/minimal-mistakes/_masthead.scss index ff3d2b95b1d5..80b0ed57ab40 100644 --- a/_sass/minimal-mistakes/_masthead.scss +++ b/_sass/minimal-mistakes/_masthead.scss @@ -13,8 +13,7 @@ &__inner-wrap { @include clearfix; - margin-left: auto; - margin-right: auto; + margin-inline: auto; padding: 1em; max-width: 100%; display: -webkit-box; @@ -50,21 +49,25 @@ -ms-flex-item-align: center; align-self: center; font-weight: bold; - z-index: 20; + // z-index: 20; +} + +.site-subtitle { + display: block; + font-size: $type-size-8; } .masthead__menu { - float: left; - margin-left: 0; - margin-right: 0; + float: inline-start; + margin-inline: 0; width: 100%; clear: both; .site-nav { - margin-left: 0; + margin-inline-start: 0; @include breakpoint($small) { - float: right; + float: inline-end; } } @@ -82,7 +85,7 @@ white-space: nowrap; &--lg { - padding-right: 2em; + padding-inline-end: 2em; font-weight: 700; } } diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss index ef73777c006b..3ba1b66deaa0 100644 --- a/_sass/minimal-mistakes/_navigation.scss +++ b/_sass/minimal-mistakes/_navigation.scss @@ -10,8 +10,7 @@ @include clearfix; margin: 0 auto; max-width: 100%; - padding-left: 1em; - padding-right: 1em; + padding-inline: 1em; font-family: $sans-serif; -webkit-animation: $intro-transition; animation: $intro-transition; @@ -28,7 +27,7 @@ font-size: $type-size-6; @include breakpoint($large) { - float: right; + float: inline-end; width: calc(100% - #{$right-sidebar-width-narrow}); } @@ -52,7 +51,7 @@ .pagination { @include clearfix(); - float: left; + float: inline-start; margin-top: 1em; padding-top: 1em; width: 100%; @@ -66,8 +65,8 @@ li { display: block; - float: left; - margin-left: -1px; + float: inline-start; + margin-inline-start: -1px; a { display: block; @@ -101,18 +100,18 @@ } &:first-child { - margin-left: 0; + margin-inline-start: 0; a { - border-top-left-radius: $border-radius; - border-bottom-left-radius: $border-radius; + border-start-start-radius: $border-radius; + border-end-start-radius: $border-radius; } } &:last-child { a { - border-top-right-radius: $border-radius; - border-bottom-right-radius: $border-radius; + border-start-end-radius: $border-radius; + border-end-end-radius: $border-radius; } } } @@ -121,7 +120,7 @@ &--pager { display: block; padding: 1em 2em; - float: left; + float: inline-start; width: 50%; font-family: $sans-serif; font-size: $type-size-5; @@ -137,14 +136,14 @@ } &:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; } &:last-child { - margin-left: -1px; - border-top-left-radius: 0; - border-bottom-left-radius: 0; + margin-inline-start: -1px; + border-start-start-radius: 0; + border-end-start-radius: 0; } &.disabled { @@ -184,21 +183,28 @@ margin: 0 1rem; color: $masthead-link-color; text-decoration: none; + -webkit-transition: none; + transition: none; &:hover { color: $masthead-link-color-hover; } &.site-logo { - margin-left: 0; - margin-right: 0.5rem; + margin-inline-start: 0; + margin-inline-end: 0.5rem; } &.site-title { - margin-left: 0; + margin-inline-start: 0; } } + img { + -webkit-transition: none; + transition: none; + } + &__toggle { -ms-flex-item-align: center; align-self: center; @@ -233,7 +239,7 @@ &:before { content: ""; position: absolute; - left: 0; + inset-inline-start: 0; bottom: 0; height: 4px; background: $primary-color; @@ -255,7 +261,7 @@ .hidden-links { position: absolute; top: 100%; - right: 0; + inset-inline-end: 0; margin-top: 15px; padding: 5px; border: 1px solid $border-color; @@ -280,11 +286,11 @@ } } - &:before { + &::before { content: ""; position: absolute; top: -11px; - right: 10px; + inset-inline-end: 10px; width: 0; border-style: solid; border-width: 0 10px 10px; @@ -293,11 +299,11 @@ z-index: 0; } - &:after { + &::after { content: ""; position: absolute; top: -10px; - right: 10px; + inset-inline-end: 10px; width: 0; border-style: solid; border-width: 0 10px 10px; @@ -354,11 +360,11 @@ transition: 0.2s ease-out; cursor: pointer; - &:before, - &:after { + &::before, + &::after { content: ""; position: absolute; - right: 1em; + inset-inline-end: 1em; top: 1.25em; width: 0.75em; height: 0.125em; @@ -439,9 +445,8 @@ } .active { - margin-left: -0.5em; - padding-left: 0.5em; - padding-right: 0.5em; + margin-inline-start: -0.5em; + padding-inline: 0.5em; font-weight: bold; } @@ -509,8 +514,8 @@ color: #fff; font-size: $type-size-6; background: $primary-color; - border-top-left-radius: $border-radius; - border-top-right-radius: $border-radius; + border-start-start-radius: $border-radius; + border-start-end-radius: $border-radius; } // Scrollspy marks toc items as .active when they are in focus @@ -544,23 +549,23 @@ } li ul > li a { - padding-left: 1.25rem; + padding-inline-start: 1.25rem; font-weight: normal; } li ul li ul > li a { - padding-left: 1.75rem; + padding-inline-start: 1.75rem; } li ul li ul li ul > li a { - padding-left: 2.25rem; + padding-inline-start: 2.25rem; } li ul li ul li ul li ul > li a { - padding-left: 2.75rem; + padding-inline-start: 2.75rem; } li ul li ul li ul li ul li ul > li a { - padding-left: 3.25rem + padding-inline-start: 3.25rem; } } diff --git a/_sass/minimal-mistakes/_notices.scss b/_sass/minimal-mistakes/_notices.scss index 7f9b733f62f9..6b4e40128803 100644 --- a/_sass/minimal-mistakes/_notices.scss +++ b/_sass/minimal-mistakes/_notices.scss @@ -13,17 +13,18 @@ @mixin notice($notice-color) { margin: 2em 0 !important; /* override*/ padding: 1em; - color: $dark-gray; + color: $text-color; font-family: $global-font-family; font-size: $type-size-6 !important; text-indent: initial; /* override*/ - background-color: mix(#fff, $notice-color, 90%); + background-color: mix($background-color, $notice-color, $notice-background-mix); border-radius: $border-radius; box-shadow: 0 1px 1px rgba($notice-color, 0.25); h4 { margin-top: 0 !important; /* override*/ margin-bottom: 0.75em; + line-height: inherit; } @at-root .page__content #{&} h4 { @@ -45,17 +46,25 @@ } a { - color: $notice-color; + color: mix(#000, $notice-color, 10%); &:hover { - color: mix(#000, $notice-color, 40%); + color: mix(#000, $notice-color, 50%); } } + @at-root #{selector-unify(&, "blockquote")} { + border-inline-start-color: mix(#000, $notice-color, 10%); + } + code { - background-color: mix(#fff, $notice-color, 95%) + background-color: mix($background-color, $notice-color, $code-notice-background-mix) } + pre code { + background-color: inherit; + } + ul { &:last-child { margin-bottom: 0; /* override*/ @@ -97,4 +106,4 @@ .notice--danger { @include notice($danger-color); -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/_page.scss b/_sass/minimal-mistakes/_page.scss index c5dd864c38f7..e33888400eed 100644 --- a/_sass/minimal-mistakes/_page.scss +++ b/_sass/minimal-mistakes/_page.scss @@ -4,10 +4,8 @@ #main { @include clearfix; - margin-left: auto; - margin-right: auto; - padding-left: 1em; - padding-right: 1em; + margin-inline: auto; + padding-inline: 1em; -webkit-animation: $intro-transition; animation: $intro-transition; max-width: 100%; @@ -19,23 +17,38 @@ } } +body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + min-height: 100vh; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.initial-content, +.search-content { + flex: 1 0 auto; +} + .page { @include breakpoint($large) { - float: right; + float: inline-end; width: calc(100% - #{$right-sidebar-width-narrow}); - padding-right: $right-sidebar-width-narrow; + padding-inline-end: $right-sidebar-width-narrow; } @include breakpoint($x-large) { width: calc(100% - #{$right-sidebar-width}); - padding-right: $right-sidebar-width; + padding-inline-end: $right-sidebar-width; } .page__inner-wrap { - float: left; + float: inline-start; margin-top: 1em; - margin-left: 0; - margin-right: 0; + margin-inline: 0; width: 100%; clear: both; @@ -43,9 +56,8 @@ .page__meta, .page__share { position: relative; - float: left; - margin-left: 0; - margin-right: 0; + float: inline-start; + margin-inline: 0; width: 100%; clear: both; } @@ -56,6 +68,11 @@ margin-top: 0; line-height: 1; + a { + color: $text-color; + text-decoration: none; + } + & + .page__meta { margin-top: -0.5em; } @@ -72,6 +89,23 @@ border-bottom: 1px solid $border-color; } + h1, h2, h3, h4, h5, h6 { + .header-link { + position: relative; + inset-inline-start: 0.5em; + opacity: 0; + font-size: 0.8em; + -webkit-transition: opacity 0.2s ease-in-out 0.1s; + -moz-transition: opacity 0.2s ease-in-out 0.1s; + -o-transition: opacity 0.2s ease-in-out 0.1s; + transition: opacity 0.2s ease-in-out 0.1s; + } + + &:hover .header-link { + opacity: 1; + } + } + p, li, dl { @@ -101,6 +135,20 @@ } } + :not(pre) > code { + padding-top: 0.1rem; + padding-bottom: 0.1rem; + font-size: 0.8em; + background: $code-background-color; + border-radius: $border-radius; + + &::before, + &::after { + letter-spacing: -0.2em; + content: "\00a0"; /* non-breaking space*/ + } + } + dt { margin-top: 1em; font-family: $sans-serif; @@ -108,7 +156,7 @@ } dd { - margin-left: 1em; + margin-inline-start: 1em; font-family: $sans-serif; font-size: $type-size-6; } @@ -120,7 +168,7 @@ /* blockquote citations */ blockquote + .small { margin-top: -1.5em; - padding-left: 1.25rem; + padding-inline-start: 1.25rem; } } @@ -151,8 +199,7 @@ } .wrapper { - padding-left: 1em; - padding-right: 1em; + padding-inline: 1em; @include breakpoint($x-large) { max-width: $x-large; @@ -190,14 +237,14 @@ .page__hero-caption { position: absolute; bottom: 0; - right: 0; + inset-inline-end: 0; margin: 0 auto; padding: 2px 5px; color: #fff; font-family: $caption-font-family; font-size: $type-size-7; background: #000; - text-align: right; + text-align: end; z-index: 5; opacity: 0.5; border-radius: $border-radius 0 0 0; @@ -266,6 +313,11 @@ text-transform: uppercase; } +.page__meta-sep::before { + content: "\2022"; + padding-inline: 0.5em; +} + /* Page taxonomy ========================================================================== */ @@ -276,13 +328,13 @@ } strong { - margin-right: 10px; + margin-inline-end: 10px; } } .page__taxonomy-item { display: inline-block; - margin-right: 5px; + margin-inline-end: 5px; margin-bottom: 8px; padding: 5px 10px; text-decoration: none; @@ -319,11 +371,11 @@ .taxonomy__title { margin-bottom: 0.5em; - color: lighten($text-color, 60%); + color: $muted-text-color; } .taxonomy__count { - color: lighten($text-color, 50%); + color: $muted-text-color; } .taxonomy__index { @@ -356,10 +408,10 @@ .back-to-top { display: block; clear: both; - color: lighten($text-color, 50%); + color: $muted-text-color; font-size: 0.6em; text-transform: uppercase; - text-align: right; + text-align: end; text-decoration: none; } @@ -368,9 +420,8 @@ ========================================================================== */ .page__comments { - float: left; - margin-left: 0; - margin-right: 0; + float: inline-start; + margin-inline: 0; width: 100%; clear: both; } @@ -412,7 +463,7 @@ } .comment__avatar-wrapper { - float: left; + float: inline-start; width: 60px; height: 60px; @@ -436,7 +487,7 @@ } .comment__content-wrapper { - float: right; + float: inline-end; width: calc(100% - 60px); @include breakpoint($large) { @@ -467,13 +518,13 @@ .page__related { @include clearfix(); - float: left; + float: inline-start; margin-top: 2em; padding-top: 1em; border-top: 1px solid $border-color; @include breakpoint($large) { - float: right; + float: inline-end; width: calc(100% - #{$right-sidebar-width-narrow}); } @@ -498,23 +549,13 @@ ========================================================================== */ .wide { - .page { - @include breakpoint($large) { - padding-right: 0; - } - - @include breakpoint($x-large) { - padding-right: 0; - } - } - - .page__related { + .page, .page__related { @include breakpoint($large) { - padding-right: 0; + padding-inline-end: 0; } @include breakpoint($x-large) { - padding-right: 0; + padding-inline-end: 0; } } } diff --git a/_sass/minimal-mistakes/_reset.scss b/_sass/minimal-mistakes/_reset.scss index 2259fd0c2388..13bd9915b5ea 100644 --- a/_sass/minimal-mistakes/_reset.scss +++ b/_sass/minimal-mistakes/_reset.scss @@ -8,18 +8,18 @@ html { /* apply a natural box layout model to all elements */ box-sizing: border-box; background-color: $background-color; - font-size: 16px; + font-size: $doc-font-size; @include breakpoint($medium) { - font-size: 18px; + font-size: $doc-font-size-medium; } @include breakpoint($large) { - font-size: 20px; + font-size: $doc-font-size-large; } @include breakpoint($x-large) { - font-size: 22px; + font-size: $doc-font-size-x-large; } -webkit-text-size-adjust: 100%; @@ -64,8 +64,6 @@ audio, canvas, video { display: inline-block; - *display: inline; - *zoom: 1; } /* Prevents modern browsers from displaying 'audio' without controls */ @@ -142,7 +140,6 @@ textarea { button, input { - *overflow: visible; /* inner spacing ie IE6/7*/ line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/ } @@ -184,4 +181,4 @@ input[type="search"]::-webkit-search-cancel-button { textarea { overflow: auto; /* remove vertical scrollbar in IE6-9*/ vertical-align: top; /* readability and alignment cross-browser*/ -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/_search.scss b/_sass/minimal-mistakes/_search.scss index 85bf311a7802..4a3a2b37e997 100644 --- a/_sass/minimal-mistakes/_search.scss +++ b/_sass/minimal-mistakes/_search.scss @@ -9,8 +9,7 @@ } .search__toggle { - margin-left: 1rem; - margin-right: 1rem; + margin-inline: 1rem; height: $nav-toggle-height; border: 0; outline: none; @@ -38,10 +37,8 @@ &__inner-wrap { width: 100%; - margin-left: auto; - margin-right: auto; - padding-left: 1em; - padding-right: 1em; + margin-inline: auto; + padding-inline: 1em; -webkit-animation: $intro-transition; animation: $intro-transition; -webkit-animation-delay: 0.15s; @@ -50,6 +47,11 @@ @include breakpoint($x-large) { max-width: $max-width; } + + } + + &__form { + background-color: transparent; } .search-input { @@ -119,6 +121,7 @@ font-style: normal; text-decoration: underline; } + .archive__item-excerpt .ais-Highlight { color: $primary-color; font-style: normal; diff --git a/_sass/minimal-mistakes/_sidebar.scss b/_sass/minimal-mistakes/_sidebar.scss index f7fc72dc4963..e51443527a62 100644 --- a/_sass/minimal-mistakes/_sidebar.scss +++ b/_sass/minimal-mistakes/_sidebar.scss @@ -8,16 +8,16 @@ .sidebar { @include clearfix(); - @include breakpoint(max-width $large) { - /* fix z-index order of follow links */ - position: relative; - z-index: 10; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } + // @include breakpoint(max-width $large) { + // /* fix z-index order of follow links */ + // position: relative; + // z-index: 10; + // -webkit-transform: translate3d(0, 0, 0); + // transform: translate3d(0, 0, 0); + // } @include breakpoint($large) { - float: left; + float: inline-start; width: calc(#{$right-sidebar-width-narrow} - 1em); opacity: 0.75; -webkit-transition: opacity 0.2s ease-in-out; @@ -32,7 +32,7 @@ /* calculate height of nav list viewport height - nav height - masthead x-padding */ - height: calc(100vh - #{$nav-height} - 2em); + max-height: calc(100vh - #{$nav-height} - 2em); } } @@ -63,7 +63,7 @@ img { width: 100%; - + &.emoji { width: 20px; height: 20px; @@ -77,10 +77,10 @@ @include breakpoint($large) { position: absolute; top: 0; - right: 0; + inset-inline-end: 0; width: $right-sidebar-width-narrow; - margin-right: -1 * $right-sidebar-width-narrow; - padding-left: 1em; + margin-inline-end: -1 * $right-sidebar-width-narrow; + padding-inline-start: 1em; z-index: 10; &.sticky { @@ -88,25 +88,32 @@ position: -webkit-sticky; position: sticky; top: 2em; - float: right; + float: inline-end; + + .toc { + .toc__menu { + overflow-y: auto; + max-height: calc(100vh - 7em); + } + } } } @include breakpoint($x-large) { width: $right-sidebar-width; - margin-right: -1 * $right-sidebar-width; + margin-inline-end: -1 * $right-sidebar-width; } } .splash .sidebar__right { @include breakpoint($large) { position: relative; - float: right; - margin-right: 0; + float: inline-end; + margin-inline-end: 0; } @include breakpoint($x-large) { - margin-right: 0; + margin-inline-end: 0; } } @@ -140,15 +147,13 @@ .author__content { display: table-cell; vertical-align: top; - padding-left: 15px; - padding-right: 25px; + padding-inline: 15px 25px; line-height: 1; @include breakpoint($large) { display: block; width: 100%; - padding-left: 0; - padding-right: 0; + padding-inline: 0; } a { @@ -184,8 +189,7 @@ display: table-cell; vertical-align: middle; font-family: $sans-serif; - z-index: 10; - position: relative; + z-index: 20; cursor: pointer; li:last-child { @@ -194,13 +198,38 @@ } } + .author__urls { + span.label { + padding-inline-start: 5px; + } + } + @include breakpoint($large) { display: block; } button { + position: relative; margin-bottom: 0; + &:before { + @supports (pointer-events: none) { + content: ''; + position: fixed; + top: 0; + inset-inline-start: 0; + width: 100%; + height: 100%; + pointer-events: none; + } + } + + &.open { + &:before { + pointer-events: auto; + } + } + @include breakpoint($large) { display: none; } @@ -210,14 +239,13 @@ .author__urls { display: none; position: absolute; - right: 0; + inset-inline-end: 0; margin-top: 15px; padding: 10px; list-style-type: none; border: 1px solid $border-color; border-radius: $border-radius; background: $background-color; - z-index: -1; box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12); cursor: default; @@ -235,12 +263,12 @@ box-shadow: none; } - &:before { + &::before { display: block; content: ""; position: absolute; top: -11px; - left: calc(50% - 10px); + inset-inline-start: calc(50% - 10px); width: 0; border-style: solid; border-width: 0 10px 10px; @@ -257,7 +285,7 @@ content: ""; position: absolute; top: -10px; - left: calc(50% - 10px); + inset-inline-start: calc(50% - 10px); width: 0; border-style: solid; border-width: 0 10px 10px; @@ -269,6 +297,11 @@ } } + ul { + padding: 10px; + list-style-type: none; + } + li { white-space: nowrap; } @@ -276,9 +309,8 @@ a { display: block; margin-bottom: 5px; - padding-right: 5px; - padding-top: 2px; - padding-bottom: 2px; + padding-block: 2px; + padding-inline-end: 5px; color: inherit; font-size: $type-size-5; text-decoration: none; @@ -299,10 +331,10 @@ @include breakpoint($large) { position: initial; top: initial; - right: initial; + inset-inline-end: initial; width: initial; - margin-right: initial; - padding-left: initial; + margin-inline-end: initial; + padding-inline-start: initial; z-index: initial; &.sticky { @@ -312,7 +344,6 @@ @include breakpoint($x-large) { width: initial; - margin-right: initial; + margin-inline-end: initial; } } - diff --git a/_sass/minimal-mistakes/_syntax.scss b/_sass/minimal-mistakes/_syntax.scss index 726520202bcd..6d9102d6f663 100644 --- a/_sass/minimal-mistakes/_syntax.scss +++ b/_sass/minimal-mistakes/_syntax.scss @@ -13,6 +13,11 @@ figure.highlight { line-height: 1.8; border-radius: $border-radius; + [dir=rtl] & { + direction: ltr; + text-align: start; + } + > pre, pre.highlight { margin: 0; @@ -33,17 +38,17 @@ figure.highlight { /* line numbers*/ &.gutter, &.rouge-gutter { - padding-right: 1em; + padding-inline-end: 1em; width: 1em; color: $base04; - border-right: 1px solid $base04; - text-align: right; + border-inline-end: 1px solid $base04; + text-align: end; } /* code */ &.code, &.rouge-code { - padding-left: 1em; + padding-inline-start: 1em; } } @@ -321,4 +326,4 @@ figure.highlight { th, td { border-bottom: 0; } -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/_tables.scss b/_sass/minimal-mistakes/_tables.scss index c270a775bfa4..e2704ee81edc 100644 --- a/_sass/minimal-mistakes/_tables.scss +++ b/_sass/minimal-mistakes/_tables.scss @@ -24,7 +24,7 @@ thead { th { padding: 0.5em; font-weight: bold; - text-align: left; + text-align: start; } td { @@ -36,4 +36,4 @@ tr, td, th { vertical-align: middle; -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/_utilities.scss b/_sass/minimal-mistakes/_utilities.scss index a2f4b1ce0210..cd6e94b7fd1d 100644 --- a/_sass/minimal-mistakes/_utilities.scss +++ b/_sass/minimal-mistakes/_utilities.scss @@ -83,20 +83,11 @@ body:hover .visually-hidden button { Type ========================================================================== */ -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.text-justify { - text-align: justify; +$text-alignments: left, right, start, end, center, justify; +@each $alignment in $text-alignments { + .text-#{$alignment} { + text-align: $alignment; + } } .text-nowrap { @@ -108,18 +99,22 @@ body:hover .visually-hidden button { ========================================================================== */ .task-list { - padding:0; + padding: 0; li { list-style-type: none; } .task-list-item-checkbox { - margin-right: 0.5em; + margin-inline-end: 0.5em; opacity: 1; } } +.task-list .task-list { + margin-inline-start: 1em; +} + /* Alignment ========================================================================== */ @@ -131,8 +126,7 @@ body:hover .visually-hidden button { } .wrapper { - margin-left: auto; - margin-right: auto; + margin-inline: auto; width: 100%; } @@ -144,8 +138,7 @@ body:hover .visually-hidden button { .align-left { display: block; - margin-left: auto; - margin-right: auto; + margin-inline: auto; @include breakpoint($small) { float: left; @@ -157,8 +150,7 @@ body:hover .visually-hidden button { .align-right { display: block; - margin-left: auto; - margin-right: auto; + margin-inline: auto; @include breakpoint($small) { float: right; @@ -170,15 +162,14 @@ body:hover .visually-hidden button { .align-center { display: block; - margin-left: auto; - margin-right: auto; + margin-inline: auto; } /* file page content container */ .full { @include breakpoint($large) { - margin-right: -1 * span(2.5 of 12) !important; + margin-inline-end: -1 * span(2.5 of 12) !important; } } @@ -207,114 +198,35 @@ body:hover .visually-hidden button { color: $text-color; } - .fa-behance, - .fa-behance-square { - color: $behance-color; - } - - .fa-bitbucket { - color: $bitbucket-color; - } - - .fa-dribbble, - .fa-dribble-square { - color: $dribbble-color; - } - - .fa-facebook, - .fa-facebook-square, - .fa-facebook-f { - color: $facebook-color; - } - - .fa-flickr { - color: $flickr-color; - } - - .fa-foursquare { - color: $foursquare-color; - } - - .fa-github, - .fa-github-alt, - .fa-github-square { - color: $github-color; - } - - .fa-gitlab { - color: $gitlab-color; - } - - .fa-instagram { - color: $instagram-color; - } - - .fa-lastfm, - .fa-lastfm-square { - color: $lastfm-color; - } - - .fa-linkedin, - .fa-linkedin-in { - color: $linkedin-color; - } - - .fa-mastodon, - .fa-mastodon-square { - color: $mastodon-color; - } - - .fa-pinterest, - .fa-pinterest-p, - .fa-pinterest-square { - color: $pinterest-color; - } - - .fa-reddit { - color: $reddit-color; - } - - .fa-rss, - .fa-rss-square { - color: $rss-color; - } - - .fa-soundcloud { - color: $soundcloud-color; - } - - .fa-stack-exchange, - .fa-stack-overflow { - color: $stackoverflow-color; - } - - .fa-tumblr, - .fa-tumblr-square { - color: $tumblr-color; - } - - .fa-twitter, - .fa-twitter-square { - color: $twitter-color; - } - - .fa-vimeo, - .fa-vimeo-square, - .fa-vimeo-v { - color: $vimeo-color; - } - - .fa-vine { - color: $vine-color; - } - - .fa-youtube { - color: $youtube-color; - } - - .fa-xing, - .fa-xing-square { - color: $xing-color; + @each $color, $icons in ( + $behance-color: ".fa-behance, .fa-behance-square", + $bitbucket-color: ".fa-bitbucket", + $dribbble-color: ".fa-dribbble, .fa-dribbble-square", + $facebook-color: ".fa-facebook, .fa-facebook-square, .fa-facebook-f", + $flickr-color: ".fa-flickr", + $foursquare-color: ".fa-foursquare", + $github-color: ".fa-github, .fa-github-alt, .fa-github-square", + $gitlab-color: ".fa-gitlab", + $instagram-color: ".fa-instagram", + $keybase-color: ".fa-keybase", + $lastfm-color: ".fa-lastfm, .fa-lastfm-square", + $linkedin-color: ".fa-linkedin, .fa-linkedin-in", + $mastodon-color: ".fa-mastodon, .fa-mastodon-square", + $pinterest-color: ".fa-pinterest, .fa-pinterest-p, .fa-pinterest-square", + $reddit-color: ".fa-reddit", + $rss-color: ".fa-rss, .fa-rss-square", + $soundcloud-color: ".fa-soundcloud", + $stackoverflow-color: ".fa-stack-exchange, .fa-stack-overflow", + $tumblr-color: ".fa-tumblr, .fa-tumblr-square", + $twitter-color: ".fa-twitter, .fa-twitter-square", + $vimeo-color: ".fa-vimeo, .fa-vimeo-square, .fa-vimeo-v", + $vine-color: ".fa-vine", + $xing-color: ".fa-xing, .fa-xing-square", + $youtube-color: ".fa-youtube", + ) { + #{$icons} { + color: $color; + } } } @@ -331,11 +243,11 @@ body:hover .visually-hidden button { -webkit-transition: 0.3s; transition: 0.3s; - &:before, - &:after { + &::before, + &::after { content: ""; position: absolute; - left: 0; + inset-inline-start: 0; width: $navicon-width; height: $navicon-height; background: $primary-color; @@ -377,6 +289,33 @@ body:hover .visually-hidden button { } } +.greedy-nav__toggle { + &:before { + @supports (pointer-events: none) { + content: ''; + position: fixed; + top: 0; + inset-inline-start: 0; + width: 100%; + height: 100%; + opacity: 0; + background-color: $background-color; + -webkit-transition: $global-transition; + transition: $global-transition; + pointer-events: none; + } + } + + &.close { + &:before { + opacity: 0.9; + -webkit-transition: $global-transition; + transition: $global-transition; + pointer-events: auto; + } + } +} + .greedy-nav__toggle:hover { .navicon, .navicon:before, @@ -430,11 +369,11 @@ body:hover .visually-hidden button { overflow: hidden; position: relative; - &:before { + &::before { position: absolute; content: ""; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; z-index: 999; @@ -451,8 +390,8 @@ body:hover .visually-hidden button { position: fixed; width: 300px; top: 50%; - left: 50%; - margin-left: -150px; + inset-inline-start: 50%; + margin-inline-start: -150px; margin-top: -150px; min-height: 0; z-index: 9999; @@ -543,7 +482,7 @@ a.reversefootnote { embed { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; } @@ -556,3 +495,74 @@ a.reversefootnote { position: static; } } + +/* + Copy <pre> block to clipboard + ========================================================================== */ + +// a <textarea> to hold text for document.execCommand("copy") +.clipboard-helper { + // Prevent zooming on iOS + font-size: 12pt !important; + border: 0 !important; + padding: 0 !important; + margin: 0 !important; + outline: none !important; + position: absolute; +} + +pre { + &.highlight .clipboard-copy-button { + color: #ffffca; + } + + .clipboard-copy-button { + display: block; + position: absolute; + top: 0.6em; + inset-inline-end: 0.5em; + width: 1.8em; + height: 1.5em; + z-index: 1; + background: none; + border: none; + outline: none; + border-radius: 0.1em; + padding: 0.2em 0.5em; + opacity: 0.4; + transition: color 0.25s linear -0.25s, opacity 0.25s linear; + + &::before { + content: ''; + position: absolute; + inset: 0; + z-index: 2; + } + + i { + position: absolute; + top: 0.25em; + inset-inline-end: 0.25em; + &.copied { + opacity: 0; + } + } + + &.copied i { + opacity: 0; + &.copied { + opacity: 1; + } + } + + @at-root { + .no-copy & { + display: none; + } + } + } + + &:hover .clipboard-copy-button { + opacity: 1; + } +} diff --git a/_sass/minimal-mistakes/_variables.scss b/_sass/minimal-mistakes/_variables.scss index 9dd3a3866c9b..2a3258735264 100644 --- a/_sass/minimal-mistakes/_variables.scss +++ b/_sass/minimal-mistakes/_variables.scss @@ -6,7 +6,10 @@ Typography ========================================================================== */ -$doc-font-size: 16 !default; +$doc-font-size: 16px !default; +$doc-font-size-medium: $doc-font-size * 1.125 !default; +$doc-font-size-large: $doc-font-size * 1.25 !default; +$doc-font-size-x-large: $doc-font-size * 1.375 !default; /* paragraph indention */ $paragraph-indent: false !default; // true, false (default) @@ -43,12 +46,20 @@ $type-size-6: 0.75em !default; // ~12px $type-size-7: 0.6875em !default; // ~11px $type-size-8: 0.625em !default; // ~10px +/* headline scale */ +$h-size-1: 1.563em !default; // ~25.008px +$h-size-2: 1.25em !default; // ~20px +$h-size-3: 1.125em !default; // ~18px +$h-size-4: 1.0625em !default; // ~17px +$h-size-5: 1.03125em !default; // ~16.5px +$h-size-6: 1em !default; // ~16px + /* Colors ========================================================================== */ $gray: #7a8288 !default; -$dark-gray: mix(#000, $gray, 40%) !default; +$dark-gray: mix(#000, $gray, 50%) !default; $darker-gray: mix(#000, $gray, 60%) !default; $light-gray: mix(#fff, $gray, 50%) !default; $lighter-gray: mix(#fff, $gray, 90%) !default; @@ -57,7 +68,7 @@ $background-color: #fff !default; $code-background-color: #fafafa !default; $code-background-color-dark: $light-gray !default; $text-color: $dark-gray !default; -$muted-text-color: mix(#fff, $text-color, 35%) !default; +$muted-text-color: mix(#fff, $text-color, 20%) !default; $border-color: $lighter-gray !default; $form-background-color: $lighter-gray !default; $footer-background-color: $lighter-gray !default; @@ -86,6 +97,7 @@ $foursquare-color: #0072b1 !default; $github-color: #171516 !default; $gitlab-color: #e24329 !default; $instagram-color: #517fa4 !default; +$keybase-color: #ef7639 !default; $lastfm-color: #d51007 !default; $linkedin-color: #007bb6 !default; $mastodon-color: #2b90d9 !default; @@ -102,13 +114,17 @@ $youtube-color: #bb0000 !default; $xing-color: #006567 !default; /* links */ -$link-color: mix(#000, $info-color, 15%) !default; +$link-color: mix(#000, $info-color, 20%) !default; $link-color-hover: mix(#000, $link-color, 25%) !default; $link-color-visited: mix(#fff, $link-color, 15%) !default; $masthead-link-color: $primary-color !default; $masthead-link-color-hover: mix(#000, $primary-color, 25%) !default; $navicon-link-color-hover: mix(#fff, $primary-color, 75%) !default; +/* notices */ +$notice-background-mix: 80% !default; +$code-notice-background-mix: 90% !default; + /* syntax highlighting (base16) */ $base00: #263238 !default; $base01: #2e3c43 !default; diff --git a/_sass/minimal-mistakes/skins/_aqua.scss b/_sass/minimal-mistakes/skins/_aqua.scss index f5a69af5c690..7c3944e07173 100644 --- a/_sass/minimal-mistakes/skins/_aqua.scss +++ b/_sass/minimal-mistakes/skins/_aqua.scss @@ -27,4 +27,8 @@ $link-color : $info-color !default; $link-color-hover : mix(#000, $link-color, 25%) !default; $link-color-visited : mix(#fff, $link-color, 25%) !default; $masthead-link-color : $primary-color !default; -$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default; \ No newline at end of file +$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default; + +/* notices */ +$notice-background-mix: 90% !default; +$code-notice-background-mix: 95% !default; diff --git a/_sass/minimal-mistakes/skins/_contrast.scss b/_sass/minimal-mistakes/skins/_contrast.scss index 4635e533cb65..a8237878c181 100644 --- a/_sass/minimal-mistakes/skins/_contrast.scss +++ b/_sass/minimal-mistakes/skins/_contrast.scss @@ -5,7 +5,7 @@ /* Colors */ $text-color: #000 !default; $muted-text-color: $text-color !default; -$primary-color: #ff0000 !default; +$primary-color: #b60000 !default; $border-color: mix(#fff, $text-color, 75%) !default; $footer-background-color: #000 !default; $link-color: #0000ff !default; @@ -46,6 +46,7 @@ $base0f: #b18a3d !default; color: #fff !important; // override } -.page__footer-follow .social-icons .svg-inline--fa { +.page__footer-follow .social-icons i, +.page__footer-follow .social-icons .svg-inline--fa { color: inherit; } diff --git a/_sass/minimal-mistakes/skins/_dark.scss b/_sass/minimal-mistakes/skins/_dark.scss index 44f1bda06fdd..38053493779f 100644 --- a/_sass/minimal-mistakes/skins/_dark.scss +++ b/_sass/minimal-mistakes/skins/_dark.scss @@ -18,11 +18,13 @@ $masthead-link-color: $text-color !default; $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; +.author__urls.social-icons i, .author__urls.social-icons .svg-inline--fa, -.page__footer-follow .social-icons .svg-inline--fa { +.page__footer-follow .social-icons i, +.page__footer-follow .social-icons .svg-inline--fa { color: inherit; } .ais-search-box .ais-search-box--input { background-color: $form-background-color; -} \ No newline at end of file +} diff --git a/_sass/minimal-mistakes/skins/_mint.scss b/_sass/minimal-mistakes/skins/_mint.scss index 575e977d56be..28557a3a2921 100644 --- a/_sass/minimal-mistakes/skins/_mint.scss +++ b/_sass/minimal-mistakes/skins/_mint.scss @@ -18,6 +18,7 @@ $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; color: #fff !important; // override } +.page__footer-follow .social-icons i, .page__footer-follow .social-icons .svg-inline--fa { color: inherit; } diff --git a/_sass/minimal-mistakes/skins/_neon.scss b/_sass/minimal-mistakes/skins/_neon.scss index 649cbff28233..a4f2ef5d9d8d 100644 --- a/_sass/minimal-mistakes/skins/_neon.scss +++ b/_sass/minimal-mistakes/skins/_neon.scss @@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default; $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; +/* notices */ +$notice-background-mix: 90% !default; +$code-notice-background-mix: 95% !default; + /* neon syntax highlighting (base16) */ $base00: #ffffff !default; $base01: #e0e0e0 !default; @@ -36,8 +40,10 @@ $base0d: #3777e6 !default; $base0e: #ad00a1 !default; $base0f: #cc6633 !default; +.author__urls.social-icons i, .author__urls.social-icons .svg-inline--fa, -.page__footer-follow .social-icons .svg-inline--fa { +.page__footer-follow .social-icons i, +.page__footer-follow .social-icons .svg-inline--fa { color: inherit; } diff --git a/_sass/minimal-mistakes/skins/_plum.scss b/_sass/minimal-mistakes/skins/_plum.scss index 67975d502786..defa69cde796 100644 --- a/_sass/minimal-mistakes/skins/_plum.scss +++ b/_sass/minimal-mistakes/skins/_plum.scss @@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default; $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; +/* notices */ +$notice-background-mix: 70% !default; +$code-notice-background-mix: 80% !default; + /* plum syntax highlighting (base16) */ $base00: #ffffff !default; $base01: #e0e0e0 !default; @@ -36,8 +40,10 @@ $base0d: #3777e6 !default; $base0e: #ad00a1 !default; $base0f: #cc6633 !default; +.author__urls.social-icons i, .author__urls.social-icons .svg-inline--fa, -.page__footer-follow .social-icons .svg-inline--fa { +.page__footer-follow .social-icons i, +.page__footer-follow .social-icons .svg-inline--fa { color: inherit; } diff --git a/_sass/minimal-mistakes/skins/_sunrise.scss b/_sass/minimal-mistakes/skins/_sunrise.scss index 1f0dca394d02..bc259f6d8d3d 100644 --- a/_sass/minimal-mistakes/skins/_sunrise.scss +++ b/_sass/minimal-mistakes/skins/_sunrise.scss @@ -20,6 +20,9 @@ $masthead-link-color: $text-color !default; $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; +/* notices */ +$notice-background-mix: 75% !default; + /* sunrise syntax highlighting (base16) */ $base00: #1d1f21 !default; $base01: #282a2e !default; @@ -38,7 +41,9 @@ $base0d: #81a2be !default; $base0e: #b294bb !default; $base0f: #a3685a !default; -.author__urls.social-icons .fa, -.page__footer-follow .social-icons .svg-inline--fa { +.author__urls.social-icons i, +.author__urls.social-icons .svg-inline--fa, +.page__footer-follow .social-icons i, +.page__footer-follow .social-icons .svg-inline--fa { color: inherit; } diff --git a/assets/css/main.scss b/assets/css/main.scss index 23346e773b1b..1f0ead318516 100644 --- a/assets/css/main.scss +++ b/assets/css/main.scss @@ -1,8 +1,9 @@ --- # Only the main Sass file needs front matter (the dashes are enough) +search: false --- @charset "utf-8"; @import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin -@import "minimal-mistakes"; // main partials \ No newline at end of file +@import "minimal-mistakes"; // main partials diff --git a/assets/js/_main.js b/assets/js/_main.js index 79f974d71bcd..a9159ff1e48f 100644 --- a/assets/js/_main.js +++ b/assets/js/_main.js @@ -2,51 +2,18 @@ jQuery plugin settings and other scripts ========================================================================== */ -$(document).ready(function() { - // Sticky footer - var bumpIt = function() { - $("body").css("margin-bottom", $(".page__footer").outerHeight(true)); - }; - - bumpIt(); - $(window).resize( - jQuery.throttle(250, function() { - bumpIt(); - }) - ); - +$(document).ready(function () { // FitVids init $("#main").fitVids(); - // Sticky sidebar - var stickySideBar = function() { - var show = - $(".author__urls-wrapper button").length === 0 - ? $(window).width() > 1024 // width should match $large Sass variable - : !$(".author__urls-wrapper button").is(":visible"); - if (show) { - // fix - $(".sidebar").addClass("sticky"); - } else { - // unfix - $(".sidebar").removeClass("sticky"); - } - }; - - stickySideBar(); - - $(window).resize(function() { - stickySideBar(); - }); - // Follow menu drop down - $(".author__urls-wrapper button").on("click", function() { + $(".author__urls-wrapper button").on("click", function () { $(".author__urls").toggleClass("is--visible"); - $(".author__urls-wrapper button").toggleClass("open"); + $(".author__urls-wrapper").find("button").toggleClass("open"); }); // Close search screen with Esc key - $(document).keyup(function(e) { + $(document).keyup(function (e) { if (e.keyCode === 27) { if ($(".initial-content").hasClass("is--hidden")) { $(".search-content").toggleClass("is--visible"); @@ -56,11 +23,11 @@ $(document).ready(function() { }); // Search toggle - $(".search__toggle").on("click", function() { + $(".search__toggle").on("click", function () { $(".search-content").toggleClass("is--visible"); $(".initial-content").toggleClass("is--hidden"); // set focus on input - setTimeout(function() { + setTimeout(function () { $(".search-content input").focus(); }, 400); }); @@ -70,11 +37,11 @@ $(document).ready(function() { offset: 20, speed: 400, speedAsDuration: true, - durationMax: 500 + durationMax: 500, }); // Gumshoe scroll spy init - if($("nav.toc").length > 0) { + if ($("nav.toc").length > 0) { var spy = new Gumshoe("nav.toc a", { // Active classes navClass: "active", // applied to the nav list item @@ -89,14 +56,36 @@ $(document).ready(function() { reflow: true, // if true, listen for reflows // Event support - events: true // if true, emit custom events + events: true, // if true, emit custom events }); } - + + // Auto scroll sticky ToC with content + const scrollTocToContent = function (event) { + var target = event.target; + var scrollOptions = { behavior: "auto", block: "nearest", inline: "start" }; + + var tocElement = document.querySelector("aside.sidebar__right.sticky"); + if (!tocElement) return; + if (window.getComputedStyle(tocElement).position !== "sticky") return; + + if (target.parentElement.classList.contains("toc__menu") && target == target.parentElement.firstElementChild) { + // Scroll to top instead + document.querySelector("nav.toc header").scrollIntoView(scrollOptions); + } else { + target.scrollIntoView(scrollOptions); + } + }; + + // Has issues on Firefox, whitelist Chrome for now + if (!!window.chrome) { + document.addEventListener("gumshoeActivate", scrollTocToContent); + } + // add lightbox class to all image links $( - "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']" - ).addClass("image-popup"); + "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']" + ).has("> img").addClass("image-popup"); // Magnific-Popup options $(".image-popup").magnificPopup({ @@ -111,25 +100,135 @@ $(document).ready(function() { gallery: { enabled: true, navigateByImgClick: true, - preload: [0, 1] // Will preload 0 - before current, and 1 after the current image + preload: [0, 1], // Will preload 0 - before current, and 1 after the current image }, image: { - tError: '<a href="%url%">Image #%curr%</a> could not be loaded.' + tError: '<a href="%url%">Image #%curr%</a> could not be loaded.', }, removalDelay: 500, // Delay in milliseconds before popup is removed // Class that is added to body when popup is open. // make it unique to apply your CSS animations just to this exact popup mainClass: "mfp-zoom-in", callbacks: { - beforeOpen: function() { + beforeOpen: function () { // just a hack that adds mfp-anim class to markup this.st.image.markup = this.st.image.markup.replace( "mfp-figure", "mfp-figure mfp-with-anim" ); - } + }, }, closeOnContentClick: true, - midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source. + midClick: true, // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source. }); + + // Add anchors for headings + (function () { + var pageContentElement = document.querySelector(".page__content"); + if (!pageContentElement) return; + + pageContentElement + .querySelectorAll("h1, h2, h3, h4, h5, h6") + .forEach(function (element) { + var id = element.getAttribute("id"); + if (id) { + var anchor = document.createElement("a"); + anchor.className = "header-link"; + anchor.href = "#" + id; + anchor.innerHTML = + '<span class="sr-only">Permalink</span><i class="fas fa-link"></i>'; + anchor.title = "Permalink"; + element.appendChild(anchor); + } + }); + })(); + + // Add copy button for <pre> blocks + var copyText = function (text) { + if (document.queryCommandEnabled("copy") && navigator.clipboard) { + navigator.clipboard.writeText(text).then( + () => true, + () => console.error("Failed to copy text to clipboard: " + text) + ); + return true; + } else { + var isRTL = document.documentElement.getAttribute("dir") === "rtl"; + + var textarea = document.createElement("textarea"); + textarea.className = "clipboard-helper"; + textarea.style[isRTL ? "right" : "left"] = "-9999px"; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + textarea.style.top = yPosition + "px"; + + textarea.setAttribute("readonly", ""); + textarea.value = text; + document.body.appendChild(textarea); + + var success = true; + try { + textarea.select(); + success = document.execCommand("copy"); + } catch (e) { + success = false; + } + textarea.parentNode.removeChild(textarea); + return success; + } + }; + + var copyButtonEventListener = function (event) { + var thisButton = event.target; + + // Locate the <code> element + var codeBlock = thisButton.nextElementSibling; + while (codeBlock && codeBlock.tagName.toLowerCase() !== "code") { + codeBlock = codeBlock.nextElementSibling; + } + if (!codeBlock) { + // No <code> found - wtf? + console.warn(thisButton); + throw new Error("No code block found for this button."); + } + + // Skip line numbers if present (i.e. {% highlight lineno %}) + var realCodeBlock = codeBlock.querySelector("td.code, td.rouge-code"); + if (realCodeBlock) { + codeBlock = realCodeBlock; + } + var result = copyText(codeBlock.innerText); + // Restore the focus to the button + thisButton.focus(); + if (result) { + if (thisButton.interval !== null) { + clearInterval(thisButton.interval); + } + thisButton.classList.add('copied'); + thisButton.interval = setTimeout(function () { + thisButton.classList.remove('copied'); + clearInterval(thisButton.interval); + thisButton.interval = null; + }, 1500); + } + return result; + }; + + if (window.enable_copy_code_button) { + document + .querySelectorAll(".page__content pre.highlight > code") + .forEach(function (element, index, parentList) { + // Locate the <pre> element + var container = element.parentElement; + // Sanity check - don't add an extra button if there's already one + if (container.firstElementChild.tagName.toLowerCase() !== "code") { + return; + } + var copyButton = document.createElement("button"); + copyButton.title = "Copy to clipboard"; + copyButton.className = "clipboard-copy-button"; + copyButton.innerHTML = '<span class="sr-only">Copy code</span><i class="far fa-fw fa-copy"></i><i class="fas fa-fw fa-check copied"></i>'; + copyButton.addEventListener("click", copyButtonEventListener); + container.prepend(copyButton); + }); + } }); diff --git a/assets/js/lunr/lunr-en.js b/assets/js/lunr/lunr-en.js index 5ecfe13bab50..43429309faf0 100644 --- a/assets/js/lunr/lunr-en.js +++ b/assets/js/lunr/lunr-en.js @@ -1,5 +1,5 @@ --- -layout: null +layout: none --- var idx = lunr(function () { @@ -22,8 +22,6 @@ var idx = lunr(function () { } }); -console.log( jQuery.type(idx) ); - $(document).ready(function() { $('input#search').on('keyup', function () { var resultdiv = $('#results'); diff --git a/assets/js/lunr/lunr-gr.js b/assets/js/lunr/lunr-gr.js index bdde6a7ac367..10eb0e71cef4 100644 --- a/assets/js/lunr/lunr-gr.js +++ b/assets/js/lunr/lunr-gr.js @@ -1,5 +1,5 @@ --- -layout: null +layout: none --- step1list = new Array(); @@ -475,8 +475,6 @@ var idx = lunr(function () { } }); -console.log( jQuery.type(idx) ); - $(document).ready(function() { $('input#search').on('keyup', function () { var resultdiv = $('#results'); diff --git a/assets/js/lunr/lunr-store.js b/assets/js/lunr/lunr-store.js index 660e9f2b23ed..fe14f7e11b4e 100644 --- a/assets/js/lunr/lunr-store.js +++ b/assets/js/lunr/lunr-store.js @@ -1,5 +1,5 @@ --- -layout: null +layout: none --- var store = [ @@ -42,13 +42,43 @@ var store = [ {%- endif -%} "categories": {{ doc.categories | jsonify }}, "tags": {{ doc.tags | jsonify }}, - "url": {{ doc.url | absolute_url | jsonify }}, - "teaser": - {%- if teaser contains "://" -%} - {{ teaser | jsonify }} - {%- else -%} - {{ teaser | absolute_url | jsonify }} - {%- endif -%} + "url": {{ doc.url | relative_url | jsonify }}, + "teaser": {{ teaser | relative_url | jsonify }} }{%- unless forloop.last and l -%},{%- endunless -%} {%- endfor -%} - {%- endfor -%}] + {%- endfor -%}{%- if site.lunr.search_within_pages -%}, + {%- assign pages = site.pages | where_exp: 'doc', 'doc.search != false' | where_exp: 'doc', 'doc.title != null' -%} + {%- for doc in pages -%} + {%- if forloop.last -%} + {%- assign l = true -%} + {%- endif -%} + { + "title": {{ doc.title | jsonify }}, + "excerpt": + {%- if site.search_full_content == true -%} + {{ doc.content | newline_to_br | + replace:"<br />", " " | + replace:"</p>", " " | + replace:"</h1>", " " | + replace:"</h2>", " " | + replace:"</h3>", " " | + replace:"</h4>", " " | + replace:"</h5>", " " | + replace:"</h6>", " "| + strip_html | strip_newlines | jsonify }}, + {%- else -%} + {{ doc.content | newline_to_br | + replace:"<br />", " " | + replace:"</p>", " " | + replace:"</h1>", " " | + replace:"</h2>", " " | + replace:"</h3>", " " | + replace:"</h4>", " " | + replace:"</h5>", " " | + replace:"</h6>", " "| + strip_html | strip_newlines | truncatewords: 50 | jsonify }}, + {%- endif -%} + "url": {{ doc.url | absolute_url | jsonify }} + }{%- unless forloop.last and l -%},{%- endunless -%} + {%- endfor -%} +{%- endif -%}] diff --git a/assets/js/lunr/lunr.js b/assets/js/lunr/lunr.js index b37984ab68f3..6aa370fbcb7b 100644 --- a/assets/js/lunr/lunr.js +++ b/assets/js/lunr/lunr.js @@ -1,6 +1,6 @@ /** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.5 - * Copyright (C) 2018 Oliver Nightingale + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale * @license MIT */ @@ -54,10 +54,10 @@ var lunr = function (config) { return builder.build() } -lunr.version = "2.3.5" +lunr.version = "2.3.9" /*! * lunr.utils - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -177,7 +177,7 @@ lunr.FieldRef.prototype.toString = function () { } /*! * lunr.Set - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -211,8 +211,8 @@ lunr.Set.complete = { return other }, - union: function (other) { - return other + union: function () { + return this }, contains: function () { @@ -389,7 +389,7 @@ lunr.Token.prototype.clone = function (fn) { } /*! * lunr.tokenizer - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -424,7 +424,7 @@ lunr.tokenizer = function (obj, metadata) { }) } - var str = obj.toString().trim().toLowerCase(), + var str = obj.toString().toLowerCase(), len = str.length, tokens = [] @@ -465,7 +465,7 @@ lunr.tokenizer = function (obj, metadata) { lunr.tokenizer.separator = /[\s\-]+/ /*! * lunr.Pipeline - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -509,8 +509,8 @@ lunr.Pipeline.registeredFunctions = Object.create(null) * or mutate (or add) metadata for a given token. * * A pipeline function can indicate that the passed token should be discarded by returning - * null. This token will not be passed to any downstream pipeline functions and will not be - * added to the index. + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. * * Multiple tokens can be returned by returning an array of tokens. Each token will be passed * to any downstream pipeline functions and all will returned tokens will be added to the index. @@ -673,7 +673,7 @@ lunr.Pipeline.prototype.run = function (tokens) { for (var j = 0; j < tokens.length; j++) { var result = fn(tokens[j], j, tokens) - if (result === void 0 || result === '') continue + if (result === null || result === void 0 || result === '') continue if (Array.isArray(result)) { for (var k = 0; k < result.length; k++) { @@ -732,7 +732,7 @@ lunr.Pipeline.prototype.toJSON = function () { } /*! * lunr.Vector - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -929,7 +929,7 @@ lunr.Vector.prototype.toJSON = function () { /* eslint-disable */ /*! * lunr.stemmer - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt */ @@ -1151,7 +1151,7 @@ lunr.stemmer = (function(){ lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') /*! * lunr.stopWordFilter - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -1316,7 +1316,7 @@ lunr.stopWordFilter = lunr.generateStopWordFilter([ lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') /*! * lunr.trimmer - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -1343,7 +1343,7 @@ lunr.trimmer = function (token) { lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') /*! * lunr.TokenSet - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -1469,41 +1469,49 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) { }) } + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + // deletion // can only do a deletion if we have enough edits remaining // and if there are characters left to delete in the string - if (frame.editsRemaining > 0 && frame.str.length > 1) { - var char = frame.str.charAt(1), - deletionNode - - if (char in frame.node.edges) { - deletionNode = frame.node.edges[char] - } else { - deletionNode = new lunr.TokenSet - frame.node.edges[char] = deletionNode - } - - if (frame.str.length <= 2) { - deletionNode.final = true - } else { - stack.push({ - node: deletionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(2) - }) - } + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) } // deletion // just removing the last character from the str - if (frame.editsRemaining > 0 && frame.str.length == 1) { + if (frame.str.length == 1) { frame.node.final = true } // substitution // can only do a substitution if we have enough edits remaining // and if there are characters left to substitute - if (frame.editsRemaining > 0 && frame.str.length >= 1) { + if (frame.str.length >= 1) { if ("*" in frame.node.edges) { var substitutionNode = frame.node.edges["*"] } else { @@ -1513,40 +1521,19 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) { if (frame.str.length == 1) { substitutionNode.final = true - } else { - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - } - - // insertion - // can only do insertion if there are edits remaining - if (frame.editsRemaining > 0) { - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode } - if (frame.str.length == 0) { - insertionNode.final = true - } else { - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - } + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) } // transposition // can only do a transposition if there are edits remaining // and there are enough characters to transpose - if (frame.editsRemaining > 0 && frame.str.length > 1) { + if (frame.str.length > 1) { var charA = frame.str.charAt(0), charB = frame.str.charAt(1), transposeNode @@ -1560,13 +1547,13 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) { if (frame.str.length == 1) { transposeNode.final = true - } else { - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) } } @@ -1619,6 +1606,10 @@ lunr.TokenSet.fromString = function (str) { * Converts this TokenSet into an array of strings * contained within the TokenSet. * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * * @returns {string[]} */ lunr.TokenSet.prototype.toArray = function () { @@ -1836,7 +1827,7 @@ lunr.TokenSet.Builder.prototype.minimize = function (downTo) { } /*! * lunr.Index - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** @@ -2003,7 +1994,7 @@ lunr.Index.prototype.query = function (fn) { */ var clause = query.clauses[i], terms = null, - clauseMatches = lunr.Set.complete + clauseMatches = lunr.Set.empty if (clause.usePipeline) { terms = this.pipeline.runString(clause.term, { @@ -2328,7 +2319,7 @@ lunr.Index.load = function (serializedIndex) { } /*! * lunr.Builder - * Copyright (C) 2018 Oliver Nightingale + * Copyright (C) 2020 Oliver Nightingale */ /** diff --git a/assets/js/lunr/lunr.min.js b/assets/js/lunr/lunr.min.js index f45a81eb800c..cdc94cd390c6 100644 --- a/assets/js/lunr/lunr.min.js +++ b/assets/js/lunr/lunr.min.js @@ -1 +1,6 @@ -!function(){var t,l,c,e,r,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T,O,I,i,n,s,z=function(e){var t=new z.Builder;return t.pipeline.add(z.trimmer,z.stopWordFilter,z.stemmer),t.searchPipeline.add(z.stemmer),e.call(t,t),t.build()};z.version="2.3.5",z.utils={},z.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),z.utils.asString=function(e){return null==e?"":e.toString()},z.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},z.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},z.FieldRef.joiner="/",z.FieldRef.fromString=function(e){var t=e.indexOf(z.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var r=e.slice(0,t),i=e.slice(t+1);return new z.FieldRef(i,r,e)},z.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+z.FieldRef.joiner+this.docRef),this._stringValue},z.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},z.Set.complete={intersect:function(e){return e},union:function(e){return e},contains:function(){return!0}},z.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},z.Set.prototype.contains=function(e){return!!this.elements[e]},z.Set.prototype.intersect=function(e){var t,r,i,n=[];if(e===z.Set.complete)return this;if(e===z.Set.empty)return e;r=this.length<e.length?(t=this,e):(t=e,this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in r.elements&&n.push(o)}return new z.Set(n)},z.Set.prototype.union=function(e){return e===z.Set.complete?z.Set.complete:e===z.Set.empty?this:new z.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},z.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},z.Token=function(e,t){this.str=e||"",this.metadata=t||{}},z.Token.prototype.toString=function(){return this.str},z.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},z.Token.prototype.clone=function(e){return e=e||function(e){return e},new z.Token(e(this.str,this.metadata),this.metadata)},z.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return new z.Token(z.utils.asString(e).toLowerCase(),z.utils.clone(t))});for(var r=e.toString().trim().toLowerCase(),i=r.length,n=[],s=0,o=0;s<=i;s++){var a=s-o;if(r.charAt(s).match(z.tokenizer.separator)||s==i){if(0<a){var u=z.utils.clone(t)||{};u.position=[o,a],u.index=n.length,n.push(new z.Token(r.slice(o,s),u))}o=s+1}}return n},z.tokenizer.separator=/[\s\-]+/,z.Pipeline=function(){this._stack=[]},z.Pipeline.registeredFunctions=Object.create(null),z.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&z.utils.warn("Overwriting existing registered function: "+t),e.label=t,z.Pipeline.registeredFunctions[e.label]=e},z.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||z.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},z.Pipeline.load=function(e){var r=new z.Pipeline;return e.forEach(function(e){var t=z.Pipeline.registeredFunctions[e];if(!t)throw new Error("Cannot load unregistered function: "+e);r.add(t)}),r},z.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){z.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},z.Pipeline.prototype.after=function(e,t){z.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},z.Pipeline.prototype.before=function(e,t){z.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},z.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},z.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(void 0!==o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},z.Pipeline.prototype.runString=function(e,t){var r=new z.Token(e,t);return this.run([r]).map(function(e){return e.toString()})},z.Pipeline.prototype.reset=function(){this._stack=[]},z.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return z.Pipeline.warnIfFunctionNotRegistered(e),e.label})},z.Vector=function(e){this._magnitude=0,this.elements=e||[]},z.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];1<i&&(s<e&&(t=n),e<s&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:e<s?2*n:s<e?2*(n+1):void 0},z.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},z.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},z.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},z.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)(o=r[u])<(a=i[l])?u+=2:a<o?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},z.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},z.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},z.Vector.prototype.toJSON=function(){return this.elements},z.stemmer=(l={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},c={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},e="[aeiouy]",r="[^aeiou][^aeiouy]*",h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),y=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,x=/^(.+?)(ed|ing)$/,v=/.$/,w=/(at|bl|iz)$/,Q=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+r+e+"[^aeiouwxy]$"),S=/^(.+?[^aeiou])y$/,E=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,b=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,T=/^(.+?)e$/,O=/ll$/,I=new RegExp("^"+r+e+"[^aeiouwxy]$"),i=function(e){var t,r,i,n,s,o,a;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=m,(n=y).test(e)?e=e.replace(n,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=x,(n=g).test(e)){var u=n.exec(e);(n=h).test(u[1])&&(n=v,e=e.replace(n,""))}else if(s.test(e)){t=(u=s.exec(e))[1],(s=p).test(t)&&(o=Q,a=k,(s=w).test(e=t)?e+="e":o.test(e)?(n=v,e=e.replace(n,"")):a.test(e)&&(e+="e"))}(n=S).test(e)&&(e=(t=(u=n.exec(e))[1])+"i");(n=E).test(e)&&(t=(u=n.exec(e))[1],r=u[2],(n=h).test(t)&&(e=t+l[r]));(n=L).test(e)&&(t=(u=n.exec(e))[1],r=u[2],(n=h).test(t)&&(e=t+c[r]));if(s=P,(n=b).test(e))t=(u=n.exec(e))[1],(n=d).test(t)&&(e=t);else if(s.test(e)){t=(u=s.exec(e))[1]+u[2],(s=d).test(t)&&(e=t)}(n=T).test(e)&&(t=(u=n.exec(e))[1],s=f,o=I,((n=d).test(t)||s.test(t)&&!o.test(t))&&(e=t));return s=d,(n=O).test(e)&&s.test(e)&&(n=v,e=e.replace(n,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(i)}),z.Pipeline.registerFunction(z.stemmer,"stemmer"),z.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},z.stopWordFilter=z.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),z.Pipeline.registerFunction(z.stopWordFilter,"stopWordFilter"),z.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},z.Pipeline.registerFunction(z.trimmer,"trimmer"),z.TokenSet=function(){this.final=!1,this.edges={},this.id=z.TokenSet._nextId,z.TokenSet._nextId+=1},z.TokenSet._nextId=1,z.TokenSet.fromArray=function(e){for(var t=new z.TokenSet.Builder,r=0,i=e.length;r<i;r++)t.insert(e[r]);return t.finish(),t.root},z.TokenSet.fromClause=function(e){return"editDistance"in e?z.TokenSet.fromFuzzyString(e.term,e.editDistance):z.TokenSet.fromString(e.term)},z.TokenSet.fromFuzzyString=function(e,t){for(var r=new z.TokenSet,i=[{node:r,editsRemaining:t,str:e}];i.length;){var n,s,o,a=i.pop();if(0<a.str.length)(s=a.str.charAt(0))in a.node.edges?n=a.node.edges[s]:(n=new z.TokenSet,a.node.edges[s]=n),1==a.str.length&&(n.final=!0),i.push({node:n,editsRemaining:a.editsRemaining,str:a.str.slice(1)});if(0<a.editsRemaining&&1<a.str.length)(s=a.str.charAt(1))in a.node.edges?o=a.node.edges[s]:(o=new z.TokenSet,a.node.edges[s]=o),a.str.length<=2?o.final=!0:i.push({node:o,editsRemaining:a.editsRemaining-1,str:a.str.slice(2)});if(0<a.editsRemaining&&1==a.str.length&&(a.node.final=!0),0<a.editsRemaining&&1<=a.str.length){if("*"in a.node.edges)var u=a.node.edges["*"];else{u=new z.TokenSet;a.node.edges["*"]=u}1==a.str.length?u.final=!0:i.push({node:u,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(0<a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new z.TokenSet;a.node.edges["*"]=l}0==a.str.length?l.final=!0:i.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str})}if(0<a.editsRemaining&&1<a.str.length){var c,h=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?c=a.node.edges[d]:(c=new z.TokenSet,a.node.edges[d]=c),1==a.str.length?c.final=!0:i.push({node:c,editsRemaining:a.editsRemaining-1,str:h+a.str.slice(2)})}}return r},z.TokenSet.fromString=function(e){for(var t=new z.TokenSet,r=t,i=0,n=e.length;i<n;i++){var s=e[i],o=i==n-1;if("*"==s)(t.edges[s]=t).final=o;else{var a=new z.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},z.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},z.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i];e=e+n+this.edges[n].id}return e},z.TokenSet.prototype.intersect=function(e){for(var t=new z.TokenSet,r=void 0,i=[{qNode:e,output:t,node:this}];i.length;){r=i.pop();for(var n=Object.keys(r.qNode.edges),s=n.length,o=Object.keys(r.node.edges),a=o.length,u=0;u<s;u++)for(var l=n[u],c=0;c<a;c++){var h=o[c];if(h==l||"*"==l){var d=r.node.edges[h],f=r.qNode.edges[l],p=d.final&&f.final,y=void 0;h in r.output.edges?(y=r.output.edges[h]).final=y.final||p:((y=new z.TokenSet).final=p,r.output.edges[h]=y),i.push({qNode:f,output:y,node:d})}}}return t},z.TokenSet.Builder=function(){this.previousWord="",this.root=new z.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},z.TokenSet.Builder.prototype.insert=function(e){var t,r=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)r++;this.minimize(r),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=r;i<e.length;i++){var n=new z.TokenSet,s=e[i];t.edges[s]=n,this.uncheckedNodes.push({parent:t,char:s,child:n}),t=n}t.final=!0,this.previousWord=e},z.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},z.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;e<=t;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},z.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},z.Index.prototype.search=function(t){return this.query(function(e){new z.QueryParser(t,e).parse()})},z.Index.prototype.query=function(e){for(var t=new z.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new z.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=z.Set.complete;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<l.length;h++){var d=l[h];u.term=d;var f=z.TokenSet.fromClause(u),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&u.presence===z.Query.presence.REQUIRED){for(var y=0;y<u.fields.length;y++){s[R=u.fields[y]]=z.Set.empty}break}for(var m=0;m<p.length;m++){var g=p[m],x=this.invertedIndex[g],v=x._index;for(y=0;y<u.fields.length;y++){var w=x[R=u.fields[y]],Q=Object.keys(w),k=g+"/"+R,S=new z.Set(Q);if(u.presence==z.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[R]&&(s[R]=z.Set.complete)),u.presence!=z.Query.presence.PROHIBITED){if(i[R].upsert(v,u.boost,function(e,t){return e+t}),!n[k]){for(var E=0;E<Q.length;E++){var L,b=Q[E],P=new z.FieldRef(b,R),T=w[b];void 0===(L=r[P])?r[P]=new z.MatchData(g,R,T):L.add(g,R,T)}n[k]=!0}}else void 0===o[R]&&(o[R]=z.Set.empty),o[R]=o[R].union(S)}}}if(u.presence===z.Query.presence.REQUIRED)for(y=0;y<u.fields.length;y++){s[R=u.fields[y]]=s[R].intersect(c)}}var O=z.Set.complete,I=z.Set.empty;for(a=0;a<this.fields.length;a++){var R;s[R=this.fields[a]]&&(O=O.intersect(s[R])),o[R]&&(I=I.union(o[R]))}var F=Object.keys(r),C=[],N=Object.create(null);if(t.isNegated()){F=Object.keys(this.fieldVectors);for(a=0;a<F.length;a++){P=F[a];var j=z.FieldRef.fromString(P);r[P]=new z.MatchData}}for(a=0;a<F.length;a++){var _=(j=z.FieldRef.fromString(F[a])).docRef;if(O.contains(_)&&!I.contains(_)){var D,A=this.fieldVectors[j],B=i[j.fieldName].similarity(A);if(void 0!==(D=N[_]))D.score+=B,D.matchData.combine(r[j]);else{var V={ref:_,score:B,matchData:r[j]};N[_]=V,C.push(V)}}}return C.sort(function(e,t){return t.score-e.score})},z.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:z.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},z.Index.load=function(e){var t={},r={},i=e.fieldVectors,n=Object.create(null),s=e.invertedIndex,o=new z.TokenSet.Builder,a=z.Pipeline.load(e.pipeline);e.version!=z.version&&z.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+z.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(h=i[u])[0],c=h[1];r[l]=new z.Vector(c)}for(u=0;u<s.length;u++){var h,d=(h=s[u])[0],f=h[1];o.insert(d),n[d]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=n,t.tokenSet=o.root,t.pipeline=a,new z.Index(t)},z.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=z.tokenizer,this.pipeline=new z.Pipeline,this.searchPipeline=new z.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},z.Builder.prototype.ref=function(e){this._ref=e},z.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},z.Builder.prototype.b=function(e){this._b=e<0?0:1<e?1:e},z.Builder.prototype.k1=function(e){this._k1=e},z.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n<i.length;n++){var s=i[n],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new z.FieldRef(r,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var d=0;d<l.length;d++){var f=l[d];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<i.length;y++)p[i[y]]=Object.create(null);this.invertedIndex[f]=p}null==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],x=f.metadata[g];null==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(x)}}}},z.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},i={},n=0;n<t;n++){var s=z.FieldRef.fromString(e[n]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(n=0;n<a.length;n++){var u=a[n];r[u]=r[u]/i[u]}this.averageFieldLength=r},z.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,i=Object.create(null),n=0;n<r;n++){for(var s=z.FieldRef.fromString(t[n]),o=s.fieldName,a=this.fieldLengths[s],u=new z.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,d=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<h;p++){var y,m,g,x=c[p],v=l[x],w=this.invertedIndex[x]._index;void 0===i[x]?(y=z.idf(this.invertedIndex[x],this.documentCount),i[x]=y):y=i[x],m=y*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+v),m*=d,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},z.Builder.prototype.createTokenSet=function(){this.tokenSet=z.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},z.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new z.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},z.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},z.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},z.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},z.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},z.Query=function(e){this.clauses=[],this.allFields=e},z.Query.wildcard=new String("*"),z.Query.wildcard.NONE=0,z.Query.wildcard.LEADING=1,z.Query.wildcard.TRAILING=2,z.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},z.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=z.Query.wildcard.NONE),e.wildcard&z.Query.wildcard.LEADING&&e.term.charAt(0)!=z.Query.wildcard&&(e.term="*"+e.term),e.wildcard&z.Query.wildcard.TRAILING&&e.term.slice(-1)!=z.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=z.Query.presence.OPTIONAL),this.clauses.push(e),this},z.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=z.Query.presence.PROHIBITED)return!1;return!0},z.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,z.utils.clone(t))},this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},z.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},z.QueryParseError.prototype=new Error,z.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},z.QueryLexer.prototype.run=function(){for(var e=z.QueryLexer.lexText;e;)e=e(this)},z.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},z.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},z.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},z.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return z.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},z.QueryLexer.prototype.width=function(){return this.pos-this.start},z.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},z.QueryLexer.prototype.backup=function(){this.pos-=1},z.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=z.QueryLexer.EOS&&this.backup()},z.QueryLexer.prototype.more=function(){return this.pos<this.length},z.QueryLexer.EOS="EOS",z.QueryLexer.FIELD="FIELD",z.QueryLexer.TERM="TERM",z.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",z.QueryLexer.BOOST="BOOST",z.QueryLexer.PRESENCE="PRESENCE",z.QueryLexer.lexField=function(e){return e.backup(),e.emit(z.QueryLexer.FIELD),e.ignore(),z.QueryLexer.lexText},z.QueryLexer.lexTerm=function(e){if(1<e.width()&&(e.backup(),e.emit(z.QueryLexer.TERM)),e.ignore(),e.more())return z.QueryLexer.lexText},z.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(z.QueryLexer.EDIT_DISTANCE),z.QueryLexer.lexText},z.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(z.QueryLexer.BOOST),z.QueryLexer.lexText},z.QueryLexer.lexEOS=function(e){0<e.width()&&e.emit(z.QueryLexer.TERM)},z.QueryLexer.termSeparator=z.tokenizer.separator,z.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==z.QueryLexer.EOS)return z.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return z.QueryLexer.lexField;if("~"==t)return e.backup(),0<e.width()&&e.emit(z.QueryLexer.TERM),z.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),0<e.width()&&e.emit(z.QueryLexer.TERM),z.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(z.QueryLexer.PRESENCE),z.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(z.QueryLexer.PRESENCE),z.QueryLexer.lexText;if(t.match(z.QueryLexer.termSeparator))return z.QueryLexer.lexTerm}else e.escapeCharacter()}},z.QueryParser=function(e,t){this.lexer=new z.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},z.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=z.QueryParser.parseClause;e;)e=e(this);return this.query},z.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},z.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},z.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},z.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case z.QueryLexer.PRESENCE:return z.QueryParser.parsePresence;case z.QueryLexer.FIELD:return z.QueryParser.parseField;case z.QueryLexer.TERM:return z.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw 1<=t.str.length&&(r+=" with value '"+t.str+"'"),new z.QueryParseError(r,t.start,t.end)}},z.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=z.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=z.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new z.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(null==i){r="expecting term or field, found nothing";throw new z.QueryParseError(r,t.start,t.end)}switch(i.type){case z.QueryLexer.FIELD:return z.QueryParser.parseField;case z.QueryLexer.TERM:return z.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new z.QueryParseError(r,i.start,i.end)}}},z.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new z.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(null==n){i="expecting term, found nothing";throw new z.QueryParseError(i,t.start,t.end)}switch(n.type){case z.QueryLexer.TERM:return z.QueryParser.parseTerm;default:i="expecting term, found '"+n.type+"'";throw new z.QueryParseError(i,n.start,n.end)}}},z.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case z.QueryLexer.TERM:return e.nextClause(),z.QueryParser.parseTerm;case z.QueryLexer.FIELD:return e.nextClause(),z.QueryParser.parseField;case z.QueryLexer.EDIT_DISTANCE:return z.QueryParser.parseEditDistance;case z.QueryLexer.BOOST:return z.QueryParser.parseBoost;case z.QueryLexer.PRESENCE:return e.nextClause(),z.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new z.QueryParseError(i,r.start,r.end)}else e.nextClause()}},z.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new z.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case z.QueryLexer.TERM:return e.nextClause(),z.QueryParser.parseTerm;case z.QueryLexer.FIELD:return e.nextClause(),z.QueryParser.parseField;case z.QueryLexer.EDIT_DISTANCE:return z.QueryParser.parseEditDistance;case z.QueryLexer.BOOST:return z.QueryParser.parseBoost;case z.QueryLexer.PRESENCE:return e.nextClause(),z.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new z.QueryParseError(i,n.start,n.end)}else e.nextClause()}},z.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new z.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case z.QueryLexer.TERM:return e.nextClause(),z.QueryParser.parseTerm;case z.QueryLexer.FIELD:return e.nextClause(),z.QueryParser.parseField;case z.QueryLexer.EDIT_DISTANCE:return z.QueryParser.parseEditDistance;case z.QueryLexer.BOOST:return z.QueryParser.parseBoost;case z.QueryLexer.PRESENCE:return e.nextClause(),z.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new z.QueryParseError(i,n.start,n.end)}else e.nextClause()}},n=this,s=function(){return z},"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():n.lunr=s()}(); \ No newline at end of file +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},e.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},e.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},e.Set.prototype.contains=function(e){return!!this.elements[e]},e.Set.prototype.intersect=function(t){var r,i,n,s=[];if(t===e.Set.complete)return this;if(t===e.Set.empty)return t;this.length<t.length?(r=this,i=t):(r=t,i=this),n=Object.keys(r.elements);for(var o=0;o<n.length;o++){var a=n[o];a in i.elements&&s.push(a)}return new e.Set(s)},e.Set.prototype.union=function(t){return t===e.Set.complete?e.Set.complete:t===e.Set.empty?this:new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements)))},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t,r){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase(),e.utils.clone(r))});for(var i=t.toString().toLowerCase(),n=i.length,s=[],o=0,a=0;o<=n;o++){var u=i.charAt(o),l=o-a;if(u.match(e.tokenizer.separator)||o==n){if(l>0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!==o&&void 0!==o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},e.Pipeline.prototype.runString=function(t,r){var i=new e.Token(t,r);return this.run([i]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(s<e&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:s<e?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)o=r[u],a=i[l],o<a?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},e.Vector.prototype.toJSON=function(){return this.elements},e.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},r="[^aeiou]",i="[aeiouy]",n=r+"[^aeiouy]*",s=i+"[aeiou]*",o="^("+n+")?"+s+n,a="^("+n+")?"+s+n+"("+s+")?$",u="^("+n+")?"+s+n+s+n,l="^("+n+")?"+i,c=new RegExp(o),h=new RegExp(u),d=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,g=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+n+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,T=/ll$/,O=new RegExp("^"+n+i+"[^aeiouwxy]$"),I=function(r){var i,n,s,o,a,u,l;if(r.length<3)return r;if(s=r.substr(0,1),"y"==s&&(r=s.toUpperCase()+r.substr(1)),o=p,a=y,o.test(r)?r=r.replace(o,"$1$2"):a.test(r)&&(r=r.replace(a,"$1$2")),o=m,a=v,o.test(r)){var I=o.exec(r);o=c,o.test(I[1])&&(o=g,r=r.replace(o,""))}else if(a.test(r)){var I=a.exec(r);i=I[1],a=f,a.test(i)&&(r=i,a=x,u=w,l=Q,a.test(r)?r+="e":u.test(r)?(o=g,r=r.replace(o,"")):l.test(r)&&(r+="e"))}if(o=k,o.test(r)){var I=o.exec(r);i=I[1],r=i+"i"}if(o=S,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+e[n])}if(o=E,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+t[n])}if(o=L,a=b,o.test(r)){var I=o.exec(r);i=I[1],o=h,o.test(i)&&(r=i)}else if(a.test(r)){var I=a.exec(r);i=I[1]+I[2],a=h,a.test(i)&&(r=i)}if(o=P,o.test(r)){var I=o.exec(r);i=I[1],o=h,a=d,u=O,(o.test(i)||a.test(i)&&!u.test(i))&&(r=i)}return o=T,a=h,o.test(r)&&a.test(r)&&(o=g,r=r.replace(o,"")),"y"==s&&(r=s.toLowerCase()+r.substr(1)),r};return function(e){return e.update(I)}}(),e.Pipeline.registerFunction(e.stemmer,"stemmer"),e.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},e.stopWordFilter=e.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),e.Pipeline.registerFunction(e.stopWordFilter,"stopWordFilter"),e.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},e.Pipeline.registerFunction(e.trimmer,"trimmer"),e.TokenSet=function(){this["final"]=!1,this.edges={},this.id=e.TokenSet._nextId,e.TokenSet._nextId+=1},e.TokenSet._nextId=1,e.TokenSet.fromArray=function(t){for(var r=new e.TokenSet.Builder,i=0,n=t.length;i<n;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n<s;n++){var o=t[n],a=n==s-1;if("*"==o)r.edges[o]=r,r["final"]=a;else{var u=new e.TokenSet;u["final"]=a,r.edges[o]=u,r=u}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;l<o;l++)for(var c=s[l],h=0;h<u;h++){var d=a[h];if(d==c||"*"==c){var f=i.node.edges[d],p=i.qNode.edges[c],y=f["final"]&&p["final"],m=void 0;d in i.output.edges?(m=i.output.edges[d],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[d]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t<this.previousWord)throw new Error("Out of order word insertion");for(var n=0;n<t.length&&n<this.previousWord.length&&t[n]==this.previousWord[n];n++)i++;this.minimize(i),r=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var n=i;n<t.length;n++){var s=new e.TokenSet,o=t[n];r.edges[o]=s,this.uncheckedNodes.push({parent:r,"char":o,child:s}),r=s}r["final"]=!0,this.previousWord=t},e.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},e.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u<this.fields.length;u++)n[this.fields[u]]=new e.Vector;t.call(r,r);for(var u=0;u<r.clauses.length;u++){var l=r.clauses[u],c=null,h=e.Set.empty;c=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<c.length;d++){var f=c[d];l.term=f;var p=e.TokenSet.fromClause(l),y=this.tokenSet.intersect(p).toArray();if(0===y.length&&l.presence===e.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=e.Set.empty}break}for(var g=0;g<y.length;g++)for(var x=y[g],w=this.invertedIndex[x],Q=w._index,m=0;m<l.fields.length;m++){var v=l.fields[m],k=w[v],S=Object.keys(k),E=x+"/"+v,L=new e.Set(S);if(l.presence==e.Query.presence.REQUIRED&&(h=h.union(L),void 0===o[v]&&(o[v]=e.Set.complete)),l.presence!=e.Query.presence.PROHIBITED){if(n[v].upsert(Q,l.boost,function(e,t){return e+t}),!s[E]){for(var b=0;b<S.length;b++){var P,T=S[b],O=new e.FieldRef(T,v),I=k[T];void 0===(P=i[O])?i[O]=new e.MatchData(x,v,I):P.add(x,v,I)}s[E]=!0}}else void 0===a[v]&&(a[v]=e.Set.empty),a[v]=a[v].union(L)}}if(l.presence===e.Query.presence.REQUIRED)for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=o[v].intersect(h)}}for(var R=e.Set.complete,F=e.Set.empty,u=0;u<this.fields.length;u++){var v=this.fields[u];o[v]&&(R=R.intersect(o[v])),a[v]&&(F=F.union(a[v]))}var C=Object.keys(i),N=[],_=Object.create(null);if(r.isNegated()){C=Object.keys(this.fieldVectors);for(var u=0;u<C.length;u++){var O=C[u],j=e.FieldRef.fromString(O);i[O]=new e.MatchData}}for(var u=0;u<C.length;u++){var j=e.FieldRef.fromString(C[u]),D=j.docRef;if(R.contains(D)&&!F.contains(D)){var A,B=this.fieldVectors[j],V=n[j.fieldName].similarity(B);if(void 0!==(A=_[D]))A.score+=V,A.matchData.combine(i[j]);else{var z={ref:D,score:V,matchData:i[j]};_[D]=z,N.push(z)}}}return N.sort(function(e,t){return t.score-e.score})},e.Index.prototype.toJSON=function(){var t=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),r=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:e.version,fields:this.fields,fieldVectors:r,invertedIndex:t,pipeline:this.pipeline.toJSON()}},e.Index.load=function(t){var r={},i={},n=t.fieldVectors,s=Object.create(null),o=t.invertedIndex,a=new e.TokenSet.Builder,u=e.Pipeline.load(t.pipeline);t.version!=e.version&&e.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+e.version+"' does not match serialized index '"+t.version+"'");for(var l=0;l<n.length;l++){var c=n[l],h=c[0],d=c[1];i[h]=new e.Vector(d)}for(var l=0;l<o.length;l++){var c=o[l],f=c[0],p=c[1];a.insert(f),s[f]=p}return a.finish(),r.fields=t.fields,r.fieldVectors=i,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=u,new e.Index(r)},e.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=e.tokenizer,this.pipeline=new e.Pipeline,this.searchPipeline=new e.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},e.Builder.prototype.ref=function(e){this._ref=e},e.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},e.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s<n.length;s++){var o=n[s],a=this._fields[o].extractor,u=a?a(t):t[o],l=this.tokenizer(u,{fields:[o]}),c=this.pipeline.run(l),h=new e.FieldRef(i,o),d=Object.create(null);this.fieldTermFrequencies[h]=d,this.fieldLengths[h]=0,this.fieldLengths[h]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(void 0==d[p]&&(d[p]=0),d[p]+=1,void 0==this.invertedIndex[p]){var y=Object.create(null);y._index=this.termIndex,this.termIndex+=1;for(var m=0;m<n.length;m++)y[n[m]]=Object.create(null);this.invertedIndex[p]=y}void 0==this.invertedIndex[p][o][i]&&(this.invertedIndex[p][o][i]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var g=this.metadataWhitelist[v],x=p.metadata[g];void 0==this.invertedIndex[p][o][i][g]&&(this.invertedIndex[p][o][i][g]=[]),this.invertedIndex[p][o][i][g].push(x)}}}},e.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),r=t.length,i={},n={},s=0;s<r;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var u=Object.keys(this._fields),s=0;s<u.length;s++){var l=u[s];i[l]=i[l]/n[l]}this.averageFieldLength=i},e.Builder.prototype.createFieldVectors=function(){for(var t={},r=Object.keys(this.fieldTermFrequencies),i=r.length,n=Object.create(null),s=0;s<i;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,c=this.fieldTermFrequencies[o],h=Object.keys(c),d=h.length,f=this._fields[a].boost||1,p=this._documents[o.docRef].boost||1,y=0;y<d;y++){var m,v,g,x=h[y],w=c[x],Q=this.invertedIndex[x]._index;void 0===n[x]?(m=e.idf(this.invertedIndex[x],this.documentCount),n[x]=m):m=n[x],v=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+w),v*=f,v*=p,g=Math.round(1e3*v)/1e3,l.insert(Q,g)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},e.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},e.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(!(t in this.metadata[e]))return void(this.metadata[e][t]=r);for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}},e.Query=function(e){this.clauses=[],this.allFields=e},e.Query.wildcard=new String("*"),e.Query.wildcard.NONE=0,e.Query.wildcard.LEADING=1,e.Query.wildcard.TRAILING=2,e.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},e.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=e.Query.wildcard.NONE),t.wildcard&e.Query.wildcard.LEADING&&t.term.charAt(0)!=e.Query.wildcard&&(t.term="*"+t.term),t.wildcard&e.Query.wildcard.TRAILING&&t.term.slice(-1)!=e.Query.wildcard&&(t.term=""+t.term+"*"),"presence"in t||(t.presence=e.Query.presence.OPTIONAL),this.clauses.push(t),this},e.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=e.Query.presence.PROHIBITED)return!1;return!0},e.Query.prototype.term=function(t,r){if(Array.isArray(t))return t.forEach(function(t){this.term(t,e.utils.clone(r))},this),this;var i=r||{};return i.term=t.toString(),this.clause(i),this},e.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},e.QueryParseError.prototype=new Error,e.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},e.QueryLexer.prototype.run=function(){for(var t=e.QueryLexer.lexText;t;)t=t(this)},e.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},e.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},e.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},e.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos<this.length},e.QueryLexer.EOS="EOS",e.QueryLexer.FIELD="FIELD",e.QueryLexer.TERM="TERM",e.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",e.QueryLexer.BOOST="BOOST",e.QueryLexer.PRESENCE="PRESENCE",e.QueryLexer.lexField=function(t){return t.backup(),t.emit(e.QueryLexer.FIELD),t.ignore(),e.QueryLexer.lexText},e.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/assets/js/main.min.js b/assets/js/main.min.js old mode 100755 new mode 100644 index ab74a17e0bd8..9ae91ed20349 --- a/assets/js/main.min.js +++ b/assets/js/main.min.js @@ -1,9 +1,7 @@ /*! - * Minimal Mistakes Jekyll Theme 4.16.3 by Michael Rose - * Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes - * Licensed under MIT + * Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose + * Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes + * Free for personal and commercial use under the MIT license + * https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t,n){n=n||ue;var r,o,i=n.createElement("script");if(i.text=e,t)for(r in Ce)o=t[r]||t.getAttribute&&t.getAttribute(r),o&&i.setAttribute(r,o);n.head.appendChild(i).parentNode.removeChild(i)}function r(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[me.call(e)]||"object":typeof e}function o(e){var t=!!e&&"length"in e&&e.length,n=r(e);return xe(e)||we(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function a(e,t,n){return xe(t)?Ee.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?Ee.grep(e,function(e){return e===t!==n}):"string"!=typeof t?Ee.grep(e,function(e){return pe.call(t,e)>-1!==n}):Ee.filter(t,e,n)}function s(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function u(e){var t={};return Ee.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function l(e){return e}function c(e){throw e}function f(e,t,n,r){var o;try{e&&xe(o=e.promise)?o.call(e).done(t).fail(n):e&&xe(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function d(){ue.removeEventListener("DOMContentLoaded",d),e.removeEventListener("load",d),Ee.ready()}function p(e,t){return t.toUpperCase()}function h(e){return e.replace(Be,"ms-").replace($e,p)}function m(){this.expando=Ee.expando+m.uid++}function g(e){return"true"===e?!0:"false"===e?!1:"null"===e?null:e===+e+""?+e:Ue.test(e)?JSON.parse(e):e}function v(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Xe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=g(n)}catch(o){}We.set(e,t,n)}else n=void 0;return n}function y(e,t,n,r){var o,i,a=20,s=r?function(){return r.cur()}:function(){return Ee.css(e,t,"")},u=s(),l=n&&n[3]||(Ee.cssNumber[t]?"":"px"),c=e.nodeType&&(Ee.cssNumber[t]||"px"!==l&&+u)&&Ye.exec(Ee.css(e,t));if(c&&c[3]!==l){for(u/=2,l=l||c[3],c=+u||1;a--;)Ee.style(e,t,c+l),(1-i)*(1-(i=s()/u||.5))<=0&&(a=0),c/=i;c=2*c,Ee.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,o=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=o)),o}function b(e){var t,n=e.ownerDocument,r=e.nodeName,o=tt[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=Ee.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),tt[r]=o,o)}function x(e,t){for(var n,r,o=[],i=0,a=e.length;a>i;i++)r=e[i],r.style&&(n=r.style.display,t?("none"===n&&(o[i]=ze.get(r,"display")||null,o[i]||(r.style.display="")),""===r.style.display&&Je(r)&&(o[i]=b(r))):"none"!==n&&(o[i]="none",ze.set(r,"display",n)));for(i=0;a>i;i++)null!=o[i]&&(e[i].style.display=o[i]);return e}function w(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&i(e,t)?Ee.merge([e],n):n}function C(e,t){for(var n=0,r=e.length;r>n;n++)ze.set(e[n],"globalEval",!t||ze.get(t[n],"globalEval"))}function T(e,t,n,o,i){for(var a,s,u,l,c,f,d=t.createDocumentFragment(),p=[],h=0,m=e.length;m>h;h++)if(a=e[h],a||0===a)if("object"===r(a))Ee.merge(p,a.nodeType?[a]:a);else if(at.test(a)){for(s=s||d.appendChild(t.createElement("div")),u=(rt.exec(a)||["",""])[1].toLowerCase(),l=it[u]||it._default,s.innerHTML=l[1]+Ee.htmlPrefilter(a)+l[2],f=l[0];f--;)s=s.lastChild;Ee.merge(p,s.childNodes),s=d.firstChild,s.textContent=""}else p.push(t.createTextNode(a));for(d.textContent="",h=0;a=p[h++];)if(o&&Ee.inArray(a,o)>-1)i&&i.push(a);else if(c=Ke(a),s=w(d.appendChild(a),"script"),c&&C(s),n)for(f=0;a=s[f++];)ot.test(a.type||"")&&n.push(a);return d}function E(){return!0}function S(){return!1}function k(e,t){return e===A()==("focus"===t)}function A(){try{return ue.activeElement}catch(e){}}function N(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)N(e,s,n,r,t[s],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=S;else if(!o)return e;return 1===i&&(a=o,o=function(e){return Ee().off(e),a.apply(this,arguments)},o.guid=a.guid||(a.guid=Ee.guid++)),e.each(function(){Ee.event.add(this,t,o,r,n)})}function j(e,t,n){return n?(ze.set(e,t,!1),void Ee.event.add(e,t,{namespace:!1,handler:function(e){var r,o,i=ze.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(Ee.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=ce.call(arguments),ze.set(this,t,i),r=n(this,t),this[t](),o=ze.get(this,t),i!==o||r?ze.set(this,t,!1):o={},i!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else i.length&&(ze.set(this,t,{value:Ee.event.trigger(Ee.extend(i[0],Ee.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void(void 0===ze.get(e,t)&&Ee.event.add(e,t,E))}function I(e,t){return i(e,"table")&&i(11!==t.nodeType?t:t.firstChild,"tr")?Ee(e).children("tbody")[0]||e:e}function L(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function D(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function O(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(ze.hasData(e)&&(i=ze.access(e),a=ze.set(t,i),l=i.events)){delete a.handle,a.events={};for(o in l)for(n=0,r=l[o].length;r>n;n++)Ee.event.add(t,o,l[o][n])}We.hasData(e)&&(s=We.access(e),u=Ee.extend({},s),We.set(t,u))}}function H(e,t){var n=t.nodeName.toLowerCase();"input"===n&&nt.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function P(e,t,r,o){t=fe.apply([],t);var i,a,s,u,l,c,f=0,d=e.length,p=d-1,h=t[0],m=xe(h);if(m||d>1&&"string"==typeof h&&!be.checkClone&&dt.test(h))return e.each(function(n){var i=e.eq(n);m&&(t[0]=h.call(this,n,i.html())),P(i,t,r,o)});if(d&&(i=T(t,e[0].ownerDocument,!1,e,o),a=i.firstChild,1===i.childNodes.length&&(i=a),a||o)){for(s=Ee.map(w(i,"script"),L),u=s.length;d>f;f++)l=i,f!==p&&(l=Ee.clone(l,!0,!0),u&&Ee.merge(s,w(l,"script"))),r.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,Ee.map(s,D),f=0;u>f;f++)l=s[f],ot.test(l.type||"")&&!ze.access(l,"globalEval")&&Ee.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?Ee._evalUrl&&!l.noModule&&Ee._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):n(l.textContent.replace(pt,""),l,c))}return e}function q(e,t,n){for(var r,o=t?Ee.filter(t,e):e,i=0;null!=(r=o[i]);i++)n||1!==r.nodeType||Ee.cleanData(w(r)),r.parentNode&&(n&&Ke(r)&&C(w(r,"script")),r.parentNode.removeChild(r));return e}function M(e,t,n){var r,o,i,a,s=e.style;return n=n||mt(e),n&&(a=n.getPropertyValue(t)||n[t],""!==a||Ke(e)||(a=Ee.style(e,t)),!be.pixelBoxStyles()&&ht.test(a)&>.test(t)&&(r=s.width,o=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=o,s.maxWidth=i)),void 0!==a?a+"":a}function _(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function R(e){for(var t=e[0].toUpperCase()+e.slice(1),n=vt.length;n--;)if(e=vt[n]+t,e in yt)return e}function B(e){var t=Ee.cssProps[e]||bt[e];return t?t:e in yt?e:bt[e]=R(e)||e}function $(e,t,n){var r=Ye.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function F(e,t,n,r,o,i){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;4>a;a+=2)"margin"===n&&(u+=Ee.css(e,n+Ve[a],!0,o)),r?("content"===n&&(u-=Ee.css(e,"padding"+Ve[a],!0,o)),"margin"!==n&&(u-=Ee.css(e,"border"+Ve[a]+"Width",!0,o))):(u+=Ee.css(e,"padding"+Ve[a],!0,o),"padding"!==n?u+=Ee.css(e,"border"+Ve[a]+"Width",!0,o):s+=Ee.css(e,"border"+Ve[a]+"Width",!0,o));return!r&&i>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-u-s-.5))||0),u}function z(e,t,n){var r=mt(e),o=!be.boxSizingReliable()||n,i=o&&"border-box"===Ee.css(e,"boxSizing",!1,r),a=i,s=M(e,t,r),u="offset"+t[0].toUpperCase()+t.slice(1);if(ht.test(s)){if(!n)return s;s="auto"}return(!be.boxSizingReliable()&&i||"auto"===s||!parseFloat(s)&&"inline"===Ee.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===Ee.css(e,"boxSizing",!1,r),a=u in e,a&&(s=e[u])),s=parseFloat(s)||0,s+F(e,t,n||(i?"border":"content"),a,r,s)+"px"}function W(e,t,n,r,o){return new W.prototype.init(e,t,n,r,o)}function U(){St&&(ue.hidden===!1&&e.requestAnimationFrame?e.requestAnimationFrame(U):e.setTimeout(U,Ee.fx.interval),Ee.fx.tick())}function X(){return e.setTimeout(function(){Et=void 0}),Et=Date.now()}function Q(e,t){var n,r=0,o={height:e};for(t=t?1:0;4>r;r+=2-t)n=Ve[r],o["margin"+n]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function Y(e,t,n){for(var r,o=(K.tweeners[t]||[]).concat(K.tweeners["*"]),i=0,a=o.length;a>i;i++)if(r=o[i].call(n,t,e))return r}function V(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,d=this,p={},h=e.style,m=e.nodeType&&Je(e),g=ze.get(e,"fxshow");n.queue||(a=Ee._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,Ee.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(o=t[r],kt.test(o)){if(delete t[r],i=i||"toggle"===o,o===(m?"hide":"show")){if("show"!==o||!g||void 0===g[r])continue;m=!0}p[r]=g&&g[r]||Ee.style(e,r)}if(u=!Ee.isEmptyObject(t),u||!Ee.isEmptyObject(p)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],l=g&&g.display,null==l&&(l=ze.get(e,"display")),c=Ee.css(e,"display"),"none"===c&&(l?c=l:(x([e],!0),l=e.style.display||l,c=Ee.css(e,"display"),x([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===Ee.css(e,"float")&&(u||(d.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",d.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in p)u||(g?"hidden"in g&&(m=g.hidden):g=ze.access(e,"fxshow",{display:l}),i&&(g.hidden=!m),m&&x([e],!0),d.done(function(){m||x([e]),ze.remove(e,"fxshow");for(r in p)Ee.style(e,r,p[r])})),u=Y(m?g[r]:0,r,d),r in g||(g[r]=u.start,m&&(u.end=u.start,u.start=0))}}function G(e,t){var n,r,o,i,a;for(n in e)if(r=h(n),o=t[r],i=e[n],Array.isArray(i)&&(o=i[1],i=e[n]=i[0]),n!==r&&(e[r]=i,delete e[n]),a=Ee.cssHooks[r],a&&"expand"in a){i=a.expand(i),delete e[r];for(n in i)n in e||(e[n]=i[n],t[n]=o)}else t[r]=o}function K(e,t,n){var r,o,i=0,a=K.prefilters.length,s=Ee.Deferred().always(function(){delete u.elem}),u=function(){if(o)return!1;for(var t=Et||X(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,i=1-r,a=0,u=l.tweens.length;u>a;a++)l.tweens[a].run(i);return s.notifyWith(e,[l,i,n]),1>i&&u?n:(u||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:Ee.extend({},t),opts:Ee.extend(!0,{specialEasing:{},easing:Ee.easing._default},n),originalProperties:t,originalOptions:n,startTime:Et||X(),duration:n.duration,tweens:[],createTween:function(t,n){var r=Ee.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(o)return this;for(o=!0;r>n;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(G(c,l.opts.specialEasing);a>i;i++)if(r=K.prefilters[i].call(l,e,c,l.opts))return xe(r.stop)&&(Ee._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return Ee.map(c,Y,l),xe(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),Ee.fx.timer(Ee.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}function Z(e){var t=e.match(qe)||[];return t.join(" ")}function J(e){return e.getAttribute&&e.getAttribute("class")||""}function ee(e){return Array.isArray(e)?e:"string"==typeof e?e.match(qe)||[]:[]}function te(e,t,n,o){var i;if(Array.isArray(t))Ee.each(t,function(t,r){n||_t.test(e)?o(e,r):te(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,o)});else if(n||"object"!==r(t))o(e,t);else for(i in t)te(e+"["+i+"]",t[i],n,o)}function ne(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,o=0,i=t.toLowerCase().match(qe)||[];if(xe(n))for(;r=i[o++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function re(e,t,n,r){function o(s){var u;return i[s]=!0,Ee.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||a||i[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),o(l),!1)}),u}var i={},a=e===Gt;return o(t.dataTypes[0])||!i["*"]&&o("*")}function oe(e,t){var n,r,o=Ee.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&Ee.extend(!0,e,r),e}function ie(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in s)if(s[o]&&s[o].test(r)){u.unshift(o);break}if(u[0]in n)i=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){i=o;break}a||(a=o)}i=i||a}return i?(i!==u[0]&&u.unshift(i),n[i]):void 0}function ae(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=i,i=c.shift())if("*"===i)i=u;else if("*"!==u&&u!==i){if(a=l[u+" "+i]||l["* "+i],!a)for(o in l)if(s=o.split(" "),s[1]===i&&(a=l[u+" "+s[0]]||l["* "+s[0]])){a===!0?a=l[o]:l[o]!==!0&&(i=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+u+" to "+i}}}return{state:"success",data:t}}var se=[],ue=e.document,le=Object.getPrototypeOf,ce=se.slice,fe=se.concat,de=se.push,pe=se.indexOf,he={},me=he.toString,ge=he.hasOwnProperty,ve=ge.toString,ye=ve.call(Object),be={},xe=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},we=function(e){return null!=e&&e===e.window},Ce={type:!0,src:!0,nonce:!0,noModule:!0},Te="3.4.1",Ee=function(e,t){return new Ee.fn.init(e,t)},Se=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;Ee.fn=Ee.prototype={jquery:Te,constructor:Ee,length:0,toArray:function(){return ce.call(this)},get:function(e){return null==e?ce.call(this):0>e?this[e+this.length]:this[e]},pushStack:function(e){var t=Ee.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return Ee.each(this,e)},map:function(e){return this.pushStack(Ee.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ce.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:de,sort:se.sort,splice:se.splice},Ee.extend=Ee.fn.extend=function(){var e,t,n,r,o,i,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||xe(a)||(a={}),s===u&&(a=this,s--);u>s;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(Ee.isPlainObject(r)||(o=Array.isArray(r)))?(n=a[t],i=o&&!Array.isArray(n)?[]:o||Ee.isPlainObject(n)?n:{},o=!1,a[t]=Ee.extend(l,i,r)):void 0!==r&&(a[t]=r));return a},Ee.extend({expando:"jQuery"+(Te+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return e&&"[object Object]"===me.call(e)?(t=le(e))?(n=ge.call(t,"constructor")&&t.constructor,"function"==typeof n&&ve.call(n)===ye):!0:!1},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){n(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(o(e))for(n=e.length;n>r&&t.call(e[r],r,e[r])!==!1;r++);else for(r in e)if(t.call(e[r],r,e[r])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(Se,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(o(Object(e))?Ee.merge(n,"string"==typeof e?[e]:e):de.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:pe.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,o=e.length;n>r;r++)e[o++]=t[r];return e.length=o,e},grep:function(e,t,n){for(var r,o=[],i=0,a=e.length,s=!n;a>i;i++)r=!t(e[i],i),r!==s&&o.push(e[i]);return o},map:function(e,t,n){var r,i,a=0,s=[];if(o(e))for(r=e.length;r>a;a++)i=t(e[a],a,n),null!=i&&s.push(i);else for(a in e)i=t(e[a],a,n),null!=i&&s.push(i);return fe.apply([],s)},guid:1,support:be}),"function"==typeof Symbol&&(Ee.fn[Symbol.iterator]=se[Symbol.iterator]),Ee.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=function(e){function t(e,t,n,r){var o,i,a,s,u,l,c,d=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==h&&9!==h&&11!==h)return n;if(!r&&((t?t.ownerDocument||t:$)!==O&&D(t),t=t||O,P)){if(11!==h&&(u=be.exec(e)))if(o=u[1]){if(9===h){if(!(a=t.getElementById(o)))return n;if(a.id===o)return n.push(a),n}else if(d&&(a=d.getElementById(o))&&R(t,a)&&a.id===o)return n.push(a),n}else{if(u[2])return J.apply(n,t.getElementsByTagName(e)),n;if((o=u[3])&&C.getElementsByClassName&&t.getElementsByClassName)return J.apply(n,t.getElementsByClassName(o)),n}if(C.qsa&&!Q[e+" "]&&(!q||!q.test(e))&&(1!==h||"object"!==t.nodeName.toLowerCase())){if(c=e,d=t,1===h&&fe.test(e)){for((s=t.getAttribute("id"))?s=s.replace(Te,Ee):t.setAttribute("id",s=B),l=k(e),i=l.length;i--;)l[i]="#"+s+" "+p(l[i]);c=l.join(","),d=xe.test(e)&&f(t.parentNode)||t}try{return J.apply(n,d.querySelectorAll(c)),n}catch(m){Q(e,!0)}finally{s===B&&t.removeAttribute("id")}}}return N(e.replace(ue,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[B]=!0,e}function o(e){var t=O.createElement("fieldset");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ke(t)===e:t.disabled===e:"label"in t?t.disabled===e:!1}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),a=i.length;a--;)n[o=i[a]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function d(){}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=z++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,o);return!1}:function(t,n,u){var l,c,f,d=[F,s];if(u){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,u))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(f=t[B]||(t[B]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),o&&o===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[i])&&l[0]===F&&l[1]===s)return d[2]=l[2];if(c[i]=d,d[2]=e(t,n,u))return!0}return!1}}function m(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var o=0,i=n.length;i>o;o++)t(e,n[o],r);return r}function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(i=e[s])&&(n&&!n(i,r,o)||(a.push(i),l&&t.push(s)));return a}function y(e,t,n,o,i,a){return o&&!o[B]&&(o=y(o)),i&&!i[B]&&(i=y(i,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,m=r||g(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?m:v(m,d,e,s,u),b=n?i||(r?e:h||o)?[]:a:y;if(n&&n(y,b,s,u),o)for(l=v(b,p),o(l,[],s,u),c=l.length;c--;)(f=l[c])&&(b[p[c]]=!(y[p[c]]=f));if(r){if(i||e){if(i){for(l=[],c=b.length;c--;)(f=b[c])&&l.push(y[c]=f);i(null,b=[],l,u)}for(c=b.length;c--;)(f=b[c])&&(l=i?te(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else b=v(b===a?b.splice(h,b.length):b),i?i(null,a,b,u):J.apply(a,b)})}function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.relative[" "],s=i?1:0,u=h(function(e){return e===t},a,!0),l=h(function(e){return te(t,e)>-1},a,!0),c=[function(e,n,r){var o=!i&&(r||n!==j)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,o}];o>s;s++)if(n=T.relative[e[s].type])c=[h(m(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[B]){for(r=++s;o>r&&!T.relative[e[r].type];r++);return y(s>1&&m(c),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ue,"$1"),n,r>s&&b(e.slice(s,r)),o>r&&b(e=e.slice(r)),o>r&&p(e))}c.push(n)}return m(c)}function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",m=r&&[],g=[],y=j,b=r||i&&T.find.TAG("*",l),x=F+=null==y?1:Math.random()||.1,w=b.length;for(l&&(j=a===O||a||l);h!==w&&null!=(c=b[h]);h++){if(i&&c){for(f=0,a||c.ownerDocument===O||(D(c),s=!P);d=e[f++];)if(d(c,a||O,s)){u.push(c);break}l&&(F=x)}o&&((c=!d&&c)&&p--,r&&m.push(c))}if(p+=h,o&&h!==p){for(f=0;d=n[f++];)d(m,g,a,s);if(r){if(p>0)for(;h--;)m[h]||g[h]||(g[h]=K.call(u));g=v(g)}J.apply(u,g),l&&!r&&g.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(F=x,j=y),m};return o?r(a):a}var w,C,T,E,S,k,A,N,j,I,L,D,O,H,P,q,M,_,R,B="sizzle"+1*new Date,$=e.document,F=0,z=0,W=n(),U=n(),X=n(),Q=n(),Y=function(e,t){return e===t&&(L=!0),0},V={}.hasOwnProperty,G=[],K=G.pop,Z=G.push,J=G.push,ee=G.slice,te=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",oe="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",ie="\\["+re+"*("+oe+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+oe+"))|)"+re+"*\\]",ae=":("+oe+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",se=new RegExp(re+"+","g"),ue=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),fe=new RegExp(re+"|>"),de=new RegExp(ae),pe=new RegExp("^"+oe+"$"),he={ID:new RegExp("^#("+oe+")"),CLASS:new RegExp("^\\.("+oe+")"),TAG:new RegExp("^("+oe+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},me=/HTML$/i,ge=/^(?:input|select|textarea|button)$/i,ve=/^h\d$/i,ye=/^[^{]+\{\s*\[native \w/,be=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,xe=/[+~]/,we=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),Ce=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Ee=function(e,t){return t?"\x00"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Se=function(){D()},ke=h(function(e){return e.disabled===!0&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{J.apply(G=ee.call($.childNodes),$.childNodes),G[$.childNodes.length].nodeType}catch(Ae){J={apply:G.length?function(e,t){Z.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=t.support={},S=t.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!me.test(t||n&&n.nodeName||"HTML")},D=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:$;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,H=O.documentElement,P=!S(O),$!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Se,!1):n.attachEvent&&n.attachEvent("onunload",Se)),C.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=o(function(e){return e.appendChild(O.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=ye.test(O.getElementsByClassName),C.getById=o(function(e){return H.appendChild(e).id=B,!O.getElementsByName||!O.getElementsByName(B).length}),C.getById?(T.filter.ID=function(e){var t=e.replace(we,Ce);return function(e){return e.getAttribute("id")===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&P){var n=t.getElementById(e);return n?[n]:[]}}):(T.filter.ID=function(e){var t=e.replace(we,Ce);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&P){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),T.find.TAG=C.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):C.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},T.find.CLASS=C.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&P?t.getElementsByClassName(e):void 0},M=[],q=[],(C.qsa=ye.test(O.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="<a id='"+B+"'></a><select id='"+B+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||q.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll("[id~="+B+"-]").length||q.push("~="),e.querySelectorAll(":checked").length||q.push(":checked"),e.querySelectorAll("a#"+B+"+*").length||q.push(".#.+[+~]")}),o(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=O.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&q.push("name"+re+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),q.push(",.*:")})),(C.matchesSelector=ye.test(_=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){C.disconnectedMatch=_.call(e,"*"),_.call(e,"[s!='']:x"),M.push("!=",ae)}),q=q.length&&new RegExp(q.join("|")),M=M.length&&new RegExp(M.join("|")),t=ye.test(H.compareDocumentPosition),R=t||ye.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Y=t?function(e,t){if(e===t)return L=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!C.sortDetached&&t.compareDocumentPosition(e)===n?e===O||e.ownerDocument===$&&R($,e)?-1:t===O||t.ownerDocument===$&&R($,t)?1:I?te(I,e)-te(I,t):0:4&n?-1:1)}:function(e,t){if(e===t)return L=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,s=[e],u=[t];if(!o||!i)return e===O?-1:t===O?1:o?-1:i?1:I?te(I,e)-te(I,t):0;if(o===i)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===$?-1:u[r]===$?1:0},O):O},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==O&&D(e),C.matchesSelector&&P&&!Q[n+" "]&&(!M||!M.test(n))&&(!q||!q.test(n)))try{var r=_.call(e,n);if(r||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(o){Q(n,!0)}return t(n,O,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==O&&D(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==O&&D(e);var n=T.attrHandle[t.toLowerCase()],r=n&&V.call(T.attrHandle,t.toLowerCase())?n(e,t,!P):void 0;return void 0!==r?r:C.attributes||!P?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(Te,Ee)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(L=!C.detectDuplicates,I=!C.sortStable&&e.slice(0),e.sort(Y),L){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return I=null,e},E=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=E(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(we,Ce),e[3]=(e[3]||e[4]||e[5]||"").replace(we,Ce),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=k(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(we,Ce).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:n?(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n?i===r||i.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,m=i!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(g){if(i){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(d=g,f=d[B]||(d[B]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===F&&l[1],b=p&&l[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[F,p,b];break}}else if(y&&(d=t,f=d[B]||(d[B]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===F&&l[1],b=p),b===!1)for(;(d=++p&&d&&d[m]||(b=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&(f=d[B]||(d[B]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[F,b]),d!==t)););return b-=o,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,n){var o,i=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[B]?i(n):i.length>1?(o=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),a=o.length;a--;)r=te(e,o[a]),e[r]=!(t[r]=o[a])}):function(e){ -return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=A(e.replace(ue,"$1"));return o[B]?r(function(e,t,n,r){for(var i,a=o(e,null,r,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(we,Ce),function(t){return(t.textContent||E(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(we,Ce).toLowerCase(),function(t){var n;do if(n=P?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:l(!1),disabled:l(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ve.test(e.nodeName)},input:function(e){return ge.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n>t?t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})T.pseudos[w]=u(w);return d.prototype=T.filters=T.pseudos,T.setFilters=new d,k=t.tokenize=function(e,n){var r,o,i,a,s,u,l,c=U[e+" "];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(o=le.exec(s))||(o&&(s=s.slice(o[0].length)||s),u.push(i=[])),r=!1,(o=ce.exec(s))&&(r=o.shift(),i.push({value:r,type:o[0].replace(ue," ")}),s=s.slice(r.length));for(a in T.filter)!(o=he[a].exec(s))||l[a]&&!(o=l[a](o))||(r=o.shift(),i.push({value:r,type:a,matches:o}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):U(e,u).slice(0)},A=t.compile=function(e,t){var n,r=[],o=[],i=X[e+" "];if(!i){for(t||(t=k(e)),n=t.length;n--;)i=b(t[n]),i[B]?r.push(i):o.push(i);i=X(e,x(o,r)),i.selector=e}return i},N=t.select=function(e,t,n,r){var o,i,a,s,u,l="function"==typeof e&&e,c=!r&&k(e=l.selector||e);if(n=n||[],1===c.length){if(i=c[0]=c[0].slice(0),i.length>2&&"ID"===(a=i[0]).type&&9===t.nodeType&&P&&T.relative[i[1].type]){if(t=(T.find.ID(a.matches[0].replace(we,Ce),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(a=i[o],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(we,Ce),xe.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&p(i),!e)return J.apply(n,r),n;break}}return(l||A(e,c))(r,t,!P,n,!t||xe.test(e)&&f(t.parentNode)||t),n},C.sortStable=B.split("").sort(Y).join("")===B,C.detectDuplicates=!!L,D(),C.sortDetached=o(function(e){return 1&e.compareDocumentPosition(O.createElement("fieldset"))}),o(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&o(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);Ee.find=ke,Ee.expr=ke.selectors,Ee.expr[":"]=Ee.expr.pseudos,Ee.uniqueSort=Ee.unique=ke.uniqueSort,Ee.text=ke.getText,Ee.isXMLDoc=ke.isXML,Ee.contains=ke.contains,Ee.escapeSelector=ke.escape;var Ae=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&Ee(e).is(n))break;r.push(e)}return r},Ne=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},je=Ee.expr.match.needsContext,Ie=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;Ee.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?Ee.find.matchesSelector(r,e)?[r]:[]:Ee.find.matches(e,Ee.grep(t,function(e){return 1===e.nodeType}))},Ee.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(Ee(e).filter(function(){for(t=0;r>t;t++)if(Ee.contains(o[t],this))return!0}));for(n=this.pushStack([]),t=0;r>t;t++)Ee.find(e,o[t],n);return r>1?Ee.uniqueSort(n):n},filter:function(e){return this.pushStack(a(this,e||[],!1))},not:function(e){return this.pushStack(a(this,e||[],!0))},is:function(e){return!!a(this,"string"==typeof e&&je.test(e)?Ee(e):e||[],!1).length}});var Le,De=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Oe=Ee.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||Le,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:De.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof Ee?t[0]:t,Ee.merge(this,Ee.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ue,!0)),Ie.test(r[1])&&Ee.isPlainObject(t))for(r in t)xe(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=ue.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):xe(e)?void 0!==n.ready?n.ready(e):e(Ee):Ee.makeArray(e,this)};Oe.prototype=Ee.fn,Le=Ee(ue);var He=/^(?:parents|prev(?:Until|All))/,Pe={children:!0,contents:!0,next:!0,prev:!0};Ee.fn.extend({has:function(e){var t=Ee(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(Ee.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,o=this.length,i=[],a="string"!=typeof e&&Ee(e);if(!je.test(e))for(;o>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&Ee.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?Ee.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?pe.call(Ee(e),this[0]):pe.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(Ee.uniqueSort(Ee.merge(this.get(),Ee(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),Ee.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Ae(e,"parentNode")},parentsUntil:function(e,t,n){return Ae(e,"parentNode",n)},next:function(e){return s(e,"nextSibling")},prev:function(e){return s(e,"previousSibling")},nextAll:function(e){return Ae(e,"nextSibling")},prevAll:function(e){return Ae(e,"previousSibling")},nextUntil:function(e,t,n){return Ae(e,"nextSibling",n)},prevUntil:function(e,t,n){return Ae(e,"previousSibling",n)},siblings:function(e){return Ne((e.parentNode||{}).firstChild,e)},children:function(e){return Ne(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(i(e,"template")&&(e=e.content||e),Ee.merge([],e.childNodes))}},function(e,t){Ee.fn[e]=function(n,r){var o=Ee.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=Ee.filter(r,o)),this.length>1&&(Pe[e]||Ee.uniqueSort(o),He.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;Ee.Callbacks=function(e){e="string"==typeof e?u(e):Ee.extend({},e);var t,n,o,i,a=[],s=[],l=-1,c=function(){for(i=i||e.once,o=t=!0;s.length;l=-1)for(n=s.shift();++l<a.length;)a[l].apply(n[0],n[1])===!1&&e.stopOnFalse&&(l=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:"")},f={add:function(){return a&&(n&&!t&&(l=a.length-1,s.push(n)),function o(t){Ee.each(t,function(t,n){xe(n)?e.unique&&f.has(n)||a.push(n):n&&n.length&&"string"!==r(n)&&o(n)})}(arguments),n&&!t&&c()),this},remove:function(){return Ee.each(arguments,function(e,t){for(var n;(n=Ee.inArray(t,a,n))>-1;)a.splice(n,1),l>=n&&l--}),this},has:function(e){return e?Ee.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=s=[],n||t||(a=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},Ee.extend({Deferred:function(t){var n=[["notify","progress",Ee.Callbacks("memory"),Ee.Callbacks("memory"),2],["resolve","done",Ee.Callbacks("once memory"),Ee.Callbacks("once memory"),0,"resolved"],["reject","fail",Ee.Callbacks("once memory"),Ee.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},"catch":function(e){return o.then(null,e)},pipe:function(){var e=arguments;return Ee.Deferred(function(t){Ee.each(n,function(n,r){var o=xe(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&xe(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var s=this,u=arguments,f=function(){var e,f;if(!(a>t)){if(e=r.apply(s,u),e===n.promise())throw new TypeError("Thenable self-resolution");f=e&&("object"==typeof e||"function"==typeof e)&&e.then,xe(f)?o?f.call(e,i(a,n,l,o),i(a,n,c,o)):(a++,f.call(e,i(a,n,l,o),i(a,n,c,o),i(a,n,l,n.notifyWith))):(r!==l&&(s=void 0,u=[e]),(o||n.resolveWith)(s,u))}},d=o?f:function(){try{f()}catch(e){Ee.Deferred.exceptionHook&&Ee.Deferred.exceptionHook(e,d.stackTrace),t+1>=a&&(r!==c&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?d():(Ee.Deferred.getStackHook&&(d.stackTrace=Ee.Deferred.getStackHook()),e.setTimeout(d))}}var a=0;return Ee.Deferred(function(e){n[0][3].add(i(0,e,xe(o)?o:l,e.notifyWith)),n[1][3].add(i(0,e,xe(t)?t:l)),n[2][3].add(i(0,e,xe(r)?r:c))}).promise()},promise:function(e){return null!=e?Ee.extend(e,o):o}},i={};return Ee.each(n,function(e,t){var a=t[2],s=t[5];o[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=a.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=ce.call(arguments),i=Ee.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?ce.call(arguments):n,--t||i.resolveWith(r,o)}};if(1>=t&&(f(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||xe(o[n]&&o[n].then)))return i.then();for(;n--;)f(o[n],a(n),i.reject);return i.promise()}});var Me=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;Ee.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Me.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},Ee.readyException=function(t){e.setTimeout(function(){throw t})};var _e=Ee.Deferred();Ee.fn.ready=function(e){return _e.then(e)["catch"](function(e){Ee.readyException(e)}),this},Ee.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--Ee.readyWait:Ee.isReady)||(Ee.isReady=!0,e!==!0&&--Ee.readyWait>0||_e.resolveWith(ue,[Ee]))}}),Ee.ready.then=_e.then,"complete"===ue.readyState||"loading"!==ue.readyState&&!ue.documentElement.doScroll?e.setTimeout(Ee.ready):(ue.addEventListener("DOMContentLoaded",d),e.addEventListener("load",d));var Re=function(e,t,n,o,i,a,s){var u=0,l=e.length,c=null==n;if("object"===r(n)){i=!0;for(u in n)Re(e,t,u,n[u],!0,a,s)}else if(void 0!==o&&(i=!0,xe(o)||(s=!0),c&&(s?(t.call(e,o),t=null):(c=t,t=function(e,t,n){return c.call(Ee(e),n)})),t))for(;l>u;u++)t(e[u],n,s?o:o.call(e[u],u,t(e[u],n)));return i?e:c?t.call(e):l?t(e[0],n):a},Be=/^-ms-/,$e=/-([a-z])/g,Fe=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};m.uid=1,m.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Fe(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,o=this.cache(e);if("string"==typeof t)o[h(t)]=n;else for(r in t)o[h(r)]=t[r];return o},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][h(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){Array.isArray(t)?t=t.map(h):(t=h(t),t=t in r?[t]:t.match(qe)||[]),n=t.length;for(;n--;)delete r[t[n]]}(void 0===t||Ee.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!Ee.isEmptyObject(t)}};var ze=new m,We=new m,Ue=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Xe=/[A-Z]/g;Ee.extend({hasData:function(e){return We.hasData(e)||ze.hasData(e)},data:function(e,t,n){return We.access(e,t,n)},removeData:function(e,t){We.remove(e,t)},_data:function(e,t,n){return ze.access(e,t,n)},_removeData:function(e,t){ze.remove(e,t)}}),Ee.fn.extend({data:function(e,t){var n,r,o,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(o=We.get(i),1===i.nodeType&&!ze.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=h(r.slice(5)),v(i,r,o[r])));ze.set(i,"hasDataAttrs",!0)}return o}return"object"==typeof e?this.each(function(){We.set(this,e)}):Re(this,function(t){var n;if(i&&void 0===t){if(n=We.get(i,e),void 0!==n)return n;if(n=v(i,e),void 0!==n)return n}else this.each(function(){We.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){We.remove(this,e)})}}),Ee.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=ze.get(e,t),n&&(!r||Array.isArray(n)?r=ze.access(e,t,Ee.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=Ee.queue(e,t),r=n.length,o=n.shift(),i=Ee._queueHooks(e,t),a=function(){Ee.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,a,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ze.get(e,n)||ze.access(e,n,{empty:Ee.Callbacks("once memory").add(function(){ze.remove(e,[t+"queue",n])})})}}),Ee.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?Ee.queue(this[0],e):void 0===t?this:this.each(function(){var n=Ee.queue(this,e,t);Ee._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&Ee.dequeue(this,e)})},dequeue:function(e){return this.each(function(){Ee.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,o=Ee.Deferred(),i=this,a=this.length,s=function(){--r||o.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ze.get(i[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),o.promise(t)}});var Qe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Ye=new RegExp("^(?:([+-])=|)("+Qe+")([a-z%]*)$","i"),Ve=["Top","Right","Bottom","Left"],Ge=ue.documentElement,Ke=function(e){return Ee.contains(e.ownerDocument,e)},Ze={composed:!0};Ge.getRootNode&&(Ke=function(e){return Ee.contains(e.ownerDocument,e)||e.getRootNode(Ze)===e.ownerDocument});var Je=function(e,t){return e=t||e,"none"===e.style.display||""===e.style.display&&Ke(e)&&"none"===Ee.css(e,"display")},et=function(e,t,n,r){var o,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];o=n.apply(e,r||[]);for(i in t)e.style[i]=a[i];return o},tt={};Ee.fn.extend({show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Je(this)?Ee(this).show():Ee(this).hide()})}});var nt=/^(?:checkbox|radio)$/i,rt=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ot=/^$|^module$|\/(?:java|ecma)script/i,it={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};it.optgroup=it.option,it.tbody=it.tfoot=it.colgroup=it.caption=it.thead,it.th=it.td;var at=/<|&#?\w+;/;!function(){var e=ue.createDocumentFragment(),t=e.appendChild(ue.createElement("div")),n=ue.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),be.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",be.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var st=/^key/,ut=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,lt=/^([^.]*)(?:\.(.+)|)/;Ee.event={global:{},add:function(e,t,n,r,o){var i,a,s,u,l,c,f,d,p,h,m,g=ze.get(e);if(g)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&Ee.find.matchesSelector(Ge,o),n.guid||(n.guid=Ee.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(t){return"undefined"!=typeof Ee&&Ee.event.triggered!==t.type?Ee.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],l=t.length;l--;)s=lt.exec(t[l])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p&&(f=Ee.event.special[p]||{},p=(o?f.delegateType:f.bindType)||p,f=Ee.event.special[p]||{},c=Ee.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&Ee.expr.match.needsContext.test(o),namespace:h.join(".")},i),(d=u[p])||(d=u[p]=[],d.delegateCount=0,f.setup&&f.setup.call(e,r,h,a)!==!1||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,c):d.push(c),Ee.event.global[p]=!0)},remove:function(e,t,n,r,o){var i,a,s,u,l,c,f,d,p,h,m,g=ze.hasData(e)&&ze.get(e);if(g&&(u=g.events)){for(t=(t||"").match(qe)||[""],l=t.length;l--;)if(s=lt.exec(t[l])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){for(f=Ee.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=u[p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=d.length;i--;)c=d[i],!o&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(i,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&f.teardown.call(e,h,g.handle)!==!1||Ee.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)Ee.event.remove(e,p+t[l],n,r,!0);Ee.isEmptyObject(u)&&ze.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,a,s=Ee.event.fix(e),u=new Array(arguments.length),l=(ze.get(this,"events")||{})[s.type]||[],c=Ee.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,s)!==!1){for(a=Ee.event.handlers.call(this,s,l),t=0;(o=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=o.elem,n=0;(i=o.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&i.namespace!==!1&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,r=((Ee.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),void 0!==r&&(s.result=r)===!1&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,o,i,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||l.disabled!==!0)){for(i=[],a={},n=0;u>n;n++)r=t[n],o=r.selector+" ",void 0===a[o]&&(a[o]=r.needsContext?Ee(o,this).index(l)>-1:Ee.find(o,this,null,[l]).length),a[o]&&i.push(r);i.length&&s.push({elem:l,handlers:i})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(Ee.Event.prototype,e,{enumerable:!0,configurable:!0,get:xe(t)?function(){return this.originalEvent?t(this.originalEvent):void 0}:function(){return this.originalEvent?this.originalEvent[e]:void 0},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[Ee.expando]?e:new Ee.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return nt.test(t.type)&&t.click&&i(t,"input")&&j(t,"click",E),!1},trigger:function(e){var t=this||e;return nt.test(t.type)&&t.click&&i(t,"input")&&j(t,"click"),!0},_default:function(e){var t=e.target;return nt.test(t.type)&&t.click&&i(t,"input")&&ze.get(t,"click")||i(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},Ee.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},Ee.Event=function(e,t){return this instanceof Ee.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?E:S,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&Ee.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),void(this[Ee.expando]=!0)):new Ee.Event(e,t)},Ee.Event.prototype={constructor:Ee.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=E,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=E,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=E,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},Ee.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&st.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&ut.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},Ee.event.addProp),Ee.each({focus:"focusin",blur:"focusout"},function(e,t){Ee.event.special[e]={setup:function(){return j(this,e,k),!1},trigger:function(){return j(this,e),!0},delegateType:t}}),Ee.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){Ee.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,o=e.relatedTarget,i=e.handleObj;return o&&(o===r||Ee.contains(r,o))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),Ee.fn.extend({on:function(e,t,n,r){return N(this,e,t,n,r)},one:function(e,t,n,r){return N(this,e,t,n,r,1)},off:function(e,t,n){var r,o;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,Ee(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(o in e)this.off(o,t,e[o]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){Ee.event.remove(this,e,n,t)})}});var ct=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ft=/<script|<style|<link/i,dt=/checked\s*(?:[^=]|=\s*.checked.)/i,pt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;Ee.extend({htmlPrefilter:function(e){return e.replace(ct,"<$1></$2>")},clone:function(e,t,n){var r,o,i,a,s=e.cloneNode(!0),u=Ke(e);if(!(be.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||Ee.isXMLDoc(e)))for(a=w(s),i=w(e),r=0,o=i.length;o>r;r++)H(i[r],a[r]);if(t)if(n)for(i=i||w(e),a=a||w(s),r=0,o=i.length;o>r;r++)O(i[r],a[r]);else O(e,s);return a=w(s,"script"),a.length>0&&C(a,!u&&w(e,"script")),s},cleanData:function(e){for(var t,n,r,o=Ee.event.special,i=0;void 0!==(n=e[i]);i++)if(Fe(n)){if(t=n[ze.expando]){if(t.events)for(r in t.events)o[r]?Ee.event.remove(n,r):Ee.removeEvent(n,r,t.handle);n[ze.expando]=void 0}n[We.expando]&&(n[We.expando]=void 0)}}}),Ee.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Re(this,function(e){return void 0===e?Ee.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return P(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=I(this,e);t.appendChild(e)}})},prepend:function(){return P(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=I(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return P(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return P(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(Ee.cleanData(w(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return Ee.clone(this,e,t)})},html:function(e){return Re(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ft.test(e)&&!it[(rt.exec(e)||["",""])[1].toLowerCase()]){e=Ee.htmlPrefilter(e);try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(Ee.cleanData(w(t,!1)),t.innerHTML=e);t=0}catch(o){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return P(this,arguments,function(t){var n=this.parentNode;Ee.inArray(this,e)<0&&(Ee.cleanData(w(this)),n&&n.replaceChild(t,this))},e)}}),Ee.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){Ee.fn[e]=function(e){for(var n,r=[],o=Ee(e),i=o.length-1,a=0;i>=a;a++)n=a===i?this:this.clone(!0),Ee(o[a])[t](n),de.apply(r,n.get());return this.pushStack(r)}});var ht=new RegExp("^("+Qe+")(?!px)[a-z%]+$","i"),mt=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=new RegExp(Ve.join("|"),"i");!function(){function t(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",Ge.appendChild(u).appendChild(l);var t=e.getComputedStyle(l);r="1%"!==t.top,s=12===n(t.marginLeft),l.style.right="60%",a=36===n(t.right),o=36===n(t.width),l.style.position="absolute",i=12===n(l.offsetWidth/3),Ge.removeChild(u),l=null}}function n(e){return Math.round(parseFloat(e))}var r,o,i,a,s,u=ue.createElement("div"),l=ue.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",be.clearCloneStyle="content-box"===l.style.backgroundClip,Ee.extend(be,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),a},pixelPosition:function(){return t(),r},reliableMarginLeft:function(){return t(),s},scrollboxSize:function(){return t(),i}}))}();var vt=["Webkit","Moz","ms"],yt=ue.createElement("div").style,bt={},xt=/^(none|table(?!-c[ea]).+)/,wt=/^--/,Ct={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"};Ee.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=M(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a,s=h(t),u=wt.test(t),l=e.style;return u||(t=B(s)),a=Ee.cssHooks[t]||Ee.cssHooks[s],void 0===n?a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:l[t]:(i=typeof n,"string"===i&&(o=Ye.exec(n))&&o[1]&&(n=y(e,t,o),i="number"),null!=n&&n===n&&("number"!==i||u||(n+=o&&o[3]||(Ee.cssNumber[s]?"":"px")),be.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n)),void 0)}},css:function(e,t,n,r){var o,i,a,s=h(t),u=wt.test(t);return u||(t=B(s)),a=Ee.cssHooks[t]||Ee.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=M(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),Ee.each(["height","width"],function(e,t){Ee.cssHooks[t]={get:function(e,n,r){return n?!xt.test(Ee.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?z(e,t,r):et(e,Ct,function(){return z(e,t,r)}):void 0},set:function(e,n,r){var o,i=mt(e),a=!be.scrollboxSize()&&"absolute"===i.position,s=a||r,u=s&&"border-box"===Ee.css(e,"boxSizing",!1,i),l=r?F(e,t,r,u,i):0;return u&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-F(e,t,"border",!1,i)-.5)),l&&(o=Ye.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=Ee.css(e,t)),$(e,n,l)}}}),Ee.cssHooks.marginLeft=_(be.reliableMarginLeft,function(e,t){return t?(parseFloat(M(e,"marginLeft"))||e.getBoundingClientRect().left-et(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px":void 0}),Ee.each({margin:"",padding:"",border:"Width"},function(e,t){Ee.cssHooks[e+t]={expand:function(n){for(var r=0,o={},i="string"==typeof n?n.split(" "):[n];4>r;r++)o[e+Ve[r]+t]=i[r]||i[r-2]||i[0];return o}},"margin"!==e&&(Ee.cssHooks[e+t].set=$)}),Ee.fn.extend({css:function(e,t){return Re(this,function(e,t,n){var r,o,i={},a=0;if(Array.isArray(t)){for(r=mt(e),o=t.length;o>a;a++)i[t[a]]=Ee.css(e,t[a],!1,r);return i}return void 0!==n?Ee.style(e,t,n):Ee.css(e,t)},e,t,arguments.length>1)}}),Ee.Tween=W,W.prototype={constructor:W,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||Ee.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(Ee.cssNumber[n]?"":"px")},cur:function(){var e=W.propHooks[this.prop];return e&&e.get?e.get(this):W.propHooks._default.get(this)},run:function(e){var t,n=W.propHooks[this.prop];return this.options.duration?this.pos=t=Ee.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):W.propHooks._default.set(this),this}},W.prototype.init.prototype=W.prototype,W.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=Ee.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){Ee.fx.step[e.prop]?Ee.fx.step[e.prop](e):1!==e.elem.nodeType||!Ee.cssHooks[e.prop]&&null==e.elem.style[B(e.prop)]?e.elem[e.prop]=e.now:Ee.style(e.elem,e.prop,e.now+e.unit)}}},W.propHooks.scrollTop=W.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},Ee.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},Ee.fx=W.prototype.init,Ee.fx.step={};var Et,St,kt=/^(?:toggle|show|hide)$/,At=/queueHooks$/;Ee.Animation=Ee.extend(K,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return y(n.elem,e,Ye.exec(t),n),n}]},tweener:function(e,t){xe(e)?(t=e,e=["*"]):e=e.match(qe); -for(var n,r=0,o=e.length;o>r;r++)n=e[r],K.tweeners[n]=K.tweeners[n]||[],K.tweeners[n].unshift(t)},prefilters:[V],prefilter:function(e,t){t?K.prefilters.unshift(e):K.prefilters.push(e)}}),Ee.speed=function(e,t,n){var r=e&&"object"==typeof e?Ee.extend({},e):{complete:n||!n&&t||xe(e)&&e,duration:e,easing:n&&t||t&&!xe(t)&&t};return Ee.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in Ee.fx.speeds?r.duration=Ee.fx.speeds[r.duration]:r.duration=Ee.fx.speeds._default),null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){xe(r.old)&&r.old.call(this),r.queue&&Ee.dequeue(this,r.queue)},r},Ee.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Je).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var o=Ee.isEmptyObject(e),i=Ee.speed(t,n,r),a=function(){var t=K(this,Ee.extend({},e),i);(o||ze.get(this,"finish"))&&t.stop(!0)};return a.finish=a,o||i.queue===!1?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,o=null!=e&&e+"queueHooks",i=Ee.timers,a=ze.get(this);if(o)a[o]&&a[o].stop&&r(a[o]);else for(o in a)a[o]&&a[o].stop&&At.test(o)&&r(a[o]);for(o=i.length;o--;)i[o].elem!==this||null!=e&&i[o].queue!==e||(i[o].anim.stop(n),t=!1,i.splice(o,1));!t&&n||Ee.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ze.get(this),r=n[e+"queue"],o=n[e+"queueHooks"],i=Ee.timers,a=r?r.length:0;for(n.finish=!0,Ee.queue(this,e,[]),o&&o.stop&&o.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),Ee.each(["toggle","show","hide"],function(e,t){var n=Ee.fn[t];Ee.fn[t]=function(e,r,o){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(Q(t,!0),e,r,o)}}),Ee.each({slideDown:Q("show"),slideUp:Q("hide"),slideToggle:Q("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){Ee.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),Ee.timers=[],Ee.fx.tick=function(){var e,t=0,n=Ee.timers;for(Et=Date.now();t<n.length;t++)e=n[t],e()||n[t]!==e||n.splice(t--,1);n.length||Ee.fx.stop(),Et=void 0},Ee.fx.timer=function(e){Ee.timers.push(e),Ee.fx.start()},Ee.fx.interval=13,Ee.fx.start=function(){St||(St=!0,U())},Ee.fx.stop=function(){St=null},Ee.fx.speeds={slow:600,fast:200,_default:400},Ee.fn.delay=function(t,n){return t=Ee.fx?Ee.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var o=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(o)}})},function(){var e=ue.createElement("input"),t=ue.createElement("select"),n=t.appendChild(ue.createElement("option"));e.type="checkbox",be.checkOn=""!==e.value,be.optSelected=n.selected,e=ue.createElement("input"),e.value="t",e.type="radio",be.radioValue="t"===e.value}();var Nt,jt=Ee.expr.attrHandle;Ee.fn.extend({attr:function(e,t){return Re(this,Ee.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){Ee.removeAttr(this,e)})}}),Ee.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?Ee.prop(e,t,n):(1===i&&Ee.isXMLDoc(e)||(o=Ee.attrHooks[t.toLowerCase()]||(Ee.expr.match.bool.test(t)?Nt:void 0)),void 0!==n?null===n?void Ee.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=Ee.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!be.radioValue&&"radio"===t&&i(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),Nt={set:function(e,t,n){return t===!1?Ee.removeAttr(e,n):e.setAttribute(n,n),n}},Ee.each(Ee.expr.match.bool.source.match(/\w+/g),function(e,t){var n=jt[t]||Ee.find.attr;jt[t]=function(e,t,r){var o,i,a=t.toLowerCase();return r||(i=jt[a],jt[a]=o,o=null!=n(e,t,r)?a:null,jt[a]=i),o}});var It=/^(?:input|select|textarea|button)$/i,Lt=/^(?:a|area)$/i;Ee.fn.extend({prop:function(e,t){return Re(this,Ee.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[Ee.propFix[e]||e]})}}),Ee.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&Ee.isXMLDoc(e)||(t=Ee.propFix[t]||t,o=Ee.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=Ee.find.attr(e,"tabindex");return t?parseInt(t,10):It.test(e.nodeName)||Lt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),be.optSelected||(Ee.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),Ee.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Ee.propFix[this.toLowerCase()]=this}),Ee.fn.extend({addClass:function(e){var t,n,r,o,i,a,s,u=0;if(xe(e))return this.each(function(t){Ee(this).addClass(e.call(this,t,J(this)))});if(t=ee(e),t.length)for(;n=this[u++];)if(o=J(n),r=1===n.nodeType&&" "+Z(o)+" "){for(a=0;i=t[a++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");s=Z(r),o!==s&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,o,i,a,s,u=0;if(xe(e))return this.each(function(t){Ee(this).removeClass(e.call(this,t,J(this)))});if(!arguments.length)return this.attr("class","");if(t=ee(e),t.length)for(;n=this[u++];)if(o=J(n),r=1===n.nodeType&&" "+Z(o)+" "){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");s=Z(r),o!==s&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):xe(e)?this.each(function(n){Ee(this).toggleClass(e.call(this,n,J(this),t),t)}):this.each(function(){var t,o,i,a;if(r)for(o=0,i=Ee(this),a=ee(e);t=a[o++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=J(this),t&&ze.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":ze.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+Z(J(n))+" ").indexOf(t)>-1)return!0;return!1}});var Dt=/\r/g;Ee.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=xe(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,Ee(this).val()):e,null==o?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=Ee.map(o,function(e){return null==e?"":e+""})),t=Ee.valHooks[this.type]||Ee.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=Ee.valHooks[o.type]||Ee.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),Ee.extend({valHooks:{option:{get:function(e){var t=Ee.find.attr(e,"value");return null!=t?t:Z(Ee.text(e))}},select:{get:function(e){var t,n,r,o=e.options,a=e.selectedIndex,s="select-one"===e.type,u=s?null:[],l=s?a+1:o.length;for(r=0>a?l:s?a:0;l>r;r++)if(n=o[r],(n.selected||r===a)&&!n.disabled&&(!n.parentNode.disabled||!i(n.parentNode,"optgroup"))){if(t=Ee(n).val(),s)return t;u.push(t)}return u},set:function(e,t){for(var n,r,o=e.options,i=Ee.makeArray(t),a=o.length;a--;)r=o[a],(r.selected=Ee.inArray(Ee.valHooks.option.get(r),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),Ee.each(["radio","checkbox"],function(){Ee.valHooks[this]={set:function(e,t){return Array.isArray(t)?e.checked=Ee.inArray(Ee(e).val(),t)>-1:void 0}},be.checkOn||(Ee.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),be.focusin="onfocusin"in e;var Ot=/^(?:focusinfocus|focusoutblur)$/,Ht=function(e){e.stopPropagation()};Ee.extend(Ee.event,{trigger:function(t,n,r,o){var i,a,s,u,l,c,f,d,p=[r||ue],h=ge.call(t,"type")?t.type:t,m=ge.call(t,"namespace")?t.namespace.split("."):[];if(a=d=s=r=r||ue,3!==r.nodeType&&8!==r.nodeType&&!Ot.test(h+Ee.event.triggered)&&(h.indexOf(".")>-1&&(m=h.split("."),h=m.shift(),m.sort()),l=h.indexOf(":")<0&&"on"+h,t=t[Ee.expando]?t:new Ee.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:Ee.makeArray(n,[t]),f=Ee.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!we(r)){for(u=f.delegateType||h,Ot.test(u+h)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||ue)&&p.push(s.defaultView||s.parentWindow||e)}for(i=0;(a=p[i++])&&!t.isPropagationStopped();)d=a,t.type=i>1?u:f.bindType||h,c=(ze.get(a,"events")||{})[t.type]&&ze.get(a,"handle"),c&&c.apply(a,n),c=l&&a[l],c&&c.apply&&Fe(a)&&(t.result=c.apply(a,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!Fe(r)||l&&xe(r[h])&&!we(r)&&(s=r[l],s&&(r[l]=null),Ee.event.triggered=h,t.isPropagationStopped()&&d.addEventListener(h,Ht),r[h](),t.isPropagationStopped()&&d.removeEventListener(h,Ht),Ee.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=Ee.extend(new Ee.Event,n,{type:e,isSimulated:!0});Ee.event.trigger(r,null,t)}}),Ee.fn.extend({trigger:function(e,t){return this.each(function(){Ee.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?Ee.event.trigger(e,t,n,!0):void 0}}),be.focusin||Ee.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){Ee.event.simulate(t,e.target,Ee.event.fix(e))};Ee.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=ze.access(r,t);o||r.addEventListener(e,n,!0),ze.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=ze.access(r,t)-1;o?ze.access(r,t,o):(r.removeEventListener(e,n,!0),ze.remove(r,t))}}});var Pt=e.location,qt=Date.now(),Mt=/\?/;Ee.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(r){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||Ee.error("Invalid XML: "+t),n};var _t=/\[\]$/,Rt=/\r?\n/g,Bt=/^(?:submit|button|image|reset|file)$/i,$t=/^(?:input|select|textarea|keygen)/i;Ee.param=function(e,t){var n,r=[],o=function(e,t){var n=xe(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!Ee.isPlainObject(e))Ee.each(e,function(){o(this.name,this.value)});else for(n in e)te(n,e[n],t,o);return r.join("&")},Ee.fn.extend({serialize:function(){return Ee.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=Ee.prop(this,"elements");return e?Ee.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!Ee(this).is(":disabled")&&$t.test(this.nodeName)&&!Bt.test(e)&&(this.checked||!nt.test(e))}).map(function(e,t){var n=Ee(this).val();return null==n?null:Array.isArray(n)?Ee.map(n,function(e){return{name:t.name,value:e.replace(Rt,"\r\n")}}):{name:t.name,value:n.replace(Rt,"\r\n")}}).get()}});var Ft=/%20/g,zt=/#.*$/,Wt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)$/gm,Xt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Qt=/^(?:GET|HEAD)$/,Yt=/^\/\//,Vt={},Gt={},Kt="*/".concat("*"),Zt=ue.createElement("a");Zt.href=Pt.href,Ee.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Pt.href,type:"GET",isLocal:Xt.test(Pt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":Ee.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?oe(oe(e,Ee.ajaxSettings),t):oe(Ee.ajaxSettings,e)},ajaxPrefilter:ne(Vt),ajaxTransport:ne(Gt),ajax:function(t,n){function r(t,n,r,s){var l,d,p,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=void 0,a=s||"",T.readyState=t>0?4:0,l=t>=200&&300>t||304===t,r&&(x=ie(h,T,r)),x=ae(h,x,T,l),l?(h.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(Ee.lastModified[i]=w),w=T.getResponseHeader("etag"),w&&(Ee.etag[i]=w)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=x.state,d=x.data,p=x.error,l=!p)):(p=C,!t&&C||(C="error",0>t&&(t=0))),T.status=t,T.statusText=(n||C)+"",l?v.resolveWith(m,[d,C,T]):v.rejectWith(m,[T,C,p]),T.statusCode(b),b=void 0,f&&g.trigger(l?"ajaxSuccess":"ajaxError",[T,h,l?d:p]),y.fireWith(m,[T,C]),f&&(g.trigger("ajaxComplete",[T,h]),--Ee.active||Ee.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,a,s,u,l,c,f,d,p,h=Ee.ajaxSetup({},n),m=h.context||h,g=h.context&&(m.nodeType||m.jquery)?Ee(m):Ee.event,v=Ee.Deferred(),y=Ee.Callbacks("once memory"),b=h.statusCode||{},x={},w={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Ut.exec(a);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return o&&o.abort(t),r(0,t),this}};if(v.promise(T),h.url=((t||h.url||Pt.href)+"").replace(Yt,Pt.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(qe)||[""],null==h.crossDomain){l=ue.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Zt.protocol+"//"+Zt.host!=l.protocol+"//"+l.host}catch(E){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=Ee.param(h.data,h.traditional)),re(Vt,h,n,T),c)return T;f=Ee.event&&h.global,f&&0===Ee.active++&&Ee.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Qt.test(h.type),i=h.url.replace(zt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Ft,"+")):(p=h.url.slice(i.length),h.data&&(h.processData||"string"==typeof h.data)&&(i+=(Mt.test(i)?"&":"?")+h.data,delete h.data),h.cache===!1&&(i=i.replace(Wt,"$1"),p=(Mt.test(i)?"&":"?")+"_="+qt++ +p),h.url=i+p),h.ifModified&&(Ee.lastModified[i]&&T.setRequestHeader("If-Modified-Since",Ee.lastModified[i]),Ee.etag[i]&&T.setRequestHeader("If-None-Match",Ee.etag[i])),(h.data&&h.hasContent&&h.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",h.contentType),T.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Kt+"; q=0.01":""):h.accepts["*"]);for(d in h.headers)T.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(h.beforeSend.call(m,T,h)===!1||c))return T.abort();if(C="abort",y.add(h.complete),T.done(h.success),T.fail(h.error),o=re(Gt,h,n,T)){if(T.readyState=1,f&&g.trigger("ajaxSend",[T,h]),c)return T;h.async&&h.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},h.timeout));try{c=!1,o.send(x,r)}catch(E){if(c)throw E;r(-1,E)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return Ee.get(e,t,n,"json")},getScript:function(e,t){return Ee.get(e,void 0,t,"script")}}),Ee.each(["get","post"],function(e,t){Ee[t]=function(e,n,r,o){return xe(n)&&(o=o||r,r=n,n=void 0),Ee.ajax(Ee.extend({url:e,type:t,dataType:o,data:n,success:r},Ee.isPlainObject(e)&&e))}}),Ee._evalUrl=function(e,t){return Ee.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){Ee.globalEval(e,t)}})},Ee.fn.extend({wrapAll:function(e){var t;return this[0]&&(xe(e)&&(e=e.call(this[0])),t=Ee(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return xe(e)?this.each(function(t){Ee(this).wrapInner(e.call(this,t))}):this.each(function(){var t=Ee(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=xe(e);return this.each(function(n){Ee(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){Ee(this).replaceWith(this.childNodes)}),this}}),Ee.expr.pseudos.hidden=function(e){return!Ee.expr.pseudos.visible(e)},Ee.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},Ee.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(t){}};var Jt={0:200,1223:204},en=Ee.ajaxSettings.xhr();be.cors=!!en&&"withCredentials"in en,be.ajax=en=!!en,Ee.ajaxTransport(function(t){var n,r;return be.cors||en&&!t.crossDomain?{send:function(o,i){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(a in o)s.setRequestHeader(a,o[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(Jt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(u){if(n)throw u}},abort:function(){n&&n()}}:void 0}),Ee.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),Ee.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return Ee.globalEval(e),e}}}),Ee.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),Ee.ajaxTransport("script",function(e){if(e.crossDomain||e.scriptAttrs){var t,n;return{send:function(r,o){t=Ee("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),ue.head.appendChild(t[0])},abort:function(){n&&n()}}}});var tn=[],nn=/(=)\?(?=&|$)|\?\?/;Ee.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=tn.pop()||Ee.expando+"_"+qt++;return this[e]=!0,e}}),Ee.ajaxPrefilter("json jsonp",function(t,n,r){var o,i,a,s=t.jsonp!==!1&&(nn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&nn.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(o=t.jsonpCallback=xe(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(nn,"$1"+o):t.jsonp!==!1&&(t.url+=(Mt.test(t.url)?"&":"?")+t.jsonp+"="+o),t.converters["script json"]=function(){return a||Ee.error(o+" was not called"),a[0]},t.dataTypes[0]="json",i=e[o],e[o]=function(){a=arguments},r.always(function(){void 0===i?Ee(e).removeProp(o):e[o]=i,t[o]&&(t.jsonpCallback=n.jsonpCallback,tn.push(o)),a&&xe(i)&&i(a[0]),a=i=void 0}),"script"):void 0}),be.createHTMLDocument=function(){var e=ue.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),Ee.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var r,o,i;return t||(be.createHTMLDocument?(t=ue.implementation.createHTMLDocument(""),r=t.createElement("base"),r.href=ue.location.href,t.head.appendChild(r)):t=ue),o=Ie.exec(e),i=!n&&[],o?[t.createElement(o[1])]:(o=T([e],t,i),i&&i.length&&Ee(i).remove(),Ee.merge([],o.childNodes))},Ee.fn.load=function(e,t,n){var r,o,i,a=this,s=e.indexOf(" ");return s>-1&&(r=Z(e.slice(s)),e=e.slice(0,s)),xe(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),a.length>0&&Ee.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(r?Ee("<div>").append(Ee.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},Ee.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){Ee.fn[t]=function(e){return this.on(t,e)}}),Ee.expr.pseudos.animated=function(e){return Ee.grep(Ee.timers,function(t){return e===t.elem}).length},Ee.offset={setOffset:function(e,t,n){var r,o,i,a,s,u,l,c=Ee.css(e,"position"),f=Ee(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),i=Ee.css(e,"top"),u=Ee.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(i+u).indexOf("auto")>-1,l?(r=f.position(),a=r.top,o=r.left):(a=parseFloat(i)||0,o=parseFloat(u)||0),xe(t)&&(t=t.call(e,n,Ee.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+o),"using"in t?t.using.call(e,d):f.css(d)}},Ee.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){Ee.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],o={top:0,left:0};if("fixed"===Ee.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===Ee.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&(o=Ee(e).offset(),o.top+=Ee.css(e,"borderTopWidth",!0),o.left+=Ee.css(e,"borderLeftWidth",!0))}return{top:t.top-o.top-Ee.css(r,"marginTop",!0),left:t.left-o.left-Ee.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===Ee.css(e,"position");)e=e.offsetParent;return e||Ge})}}),Ee.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;Ee.fn[e]=function(r){return Re(this,function(e,r,o){var i;return we(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===o?i?i[t]:e[r]:void(i?i.scrollTo(n?i.pageXOffset:o,n?o:i.pageYOffset):e[r]=o)},e,r,arguments.length)}}),Ee.each(["top","left"],function(e,t){Ee.cssHooks[t]=_(be.pixelPosition,function(e,n){return n?(n=M(e,t),ht.test(n)?Ee(e).position()[t]+"px":n):void 0})}),Ee.each({Height:"height",Width:"width"},function(e,t){Ee.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){Ee.fn[r]=function(o,i){var a=arguments.length&&(n||"boolean"!=typeof o),s=n||(o===!0||i===!0?"margin":"border");return Re(this,function(t,n,o){var i;return we(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===o?Ee.css(t,n,s):Ee.style(t,n,o,s)},t,a?o:void 0,a)}})}),Ee.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){Ee.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),Ee.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),Ee.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),Ee.proxy=function(e,t){var n,r,o;return"string"==typeof t&&(n=e[t],t=e,e=n),xe(e)?(r=ce.call(arguments,2),o=function(){return e.apply(t||this,r.concat(ce.call(arguments)))},o.guid=e.guid=e.guid||Ee.guid++,o):void 0},Ee.holdReady=function(e){e?Ee.readyWait++:Ee.ready(!0)},Ee.isArray=Array.isArray,Ee.parseJSON=JSON.parse,Ee.nodeName=i,Ee.isFunction=xe,Ee.isWindow=we,Ee.camelCase=h,Ee.type=r,Ee.now=Date.now,Ee.isNumeric=function(e){var t=Ee.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return Ee});var rn=e.jQuery,on=e.$;return Ee.noConflict=function(t){return e.$===Ee&&(e.$=on),t&&e.jQuery===Ee&&(e.jQuery=rn),Ee},t||(e.jQuery=e.$=Ee),Ee}),function(e){"use strict";e.fn.fitVids=function(t){var n={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var r=document.head||document.getElementsByTagName("head")[0],o=".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}",i=document.createElement("div");i.innerHTML='<p>x</p><style id="fit-vids-style">'+o+"</style>",r.appendChild(i.childNodes[1])}return t&&e.extend(n,t),this.each(function(){var t=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];n.customSelector&&t.push(n.customSelector);var r=".fitvidsignore";n.ignore&&(r=r+", "+n.ignore);var o=e(this).find(t.join(","));o=o.not("object object"),o=o.not(r),o.each(function(t){var n=e(this);if(!(n.parents(r).length>0||"embed"===this.tagName.toLowerCase()&&n.parent("object").length||n.parent(".fluid-width-video-wrapper").length)){n.css("height")||n.css("width")||!isNaN(n.attr("height"))&&!isNaN(n.attr("width"))||(n.attr("height",9),n.attr("width",16));var o="object"===this.tagName.toLowerCase()||n.attr("height")&&!isNaN(parseInt(n.attr("height"),10))?parseInt(n.attr("height"),10):n.height(),i=isNaN(parseInt(n.attr("width"),10))?n.width():parseInt(n.attr("width"),10),a=o/i;if(!n.attr("id")){var s="fitvid"+t;n.attr("id",s)}n.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*a+"%"),n.removeAttr("height").removeAttr("width")}})})}}(window.jQuery||window.Zepto),$(document).ready(function(){function e(){u=n.width()-t.width(),l=n.children().length,c=s[l-1],c>u?(n.children().last().prependTo(r),l-=1,e()):u>s[l]&&(r.children().first().appendTo(n),l+=1,e()),t.attr("count",o-l),l===o?t.addClass("hidden"):t.removeClass("hidden")}var t=$("nav.greedy-nav .greedy-nav__toggle"),n=$("nav.greedy-nav .visible-links"),r=$("nav.greedy-nav .hidden-links"),o=0,i=0,a=1e3,s=[];n.children().outerWidth(function(e,t){i+=t,o+=1,s.push(i)});var u,l,c,f;$(window).resize(function(){e()}),t.on("click",function(){r.toggleClass("hidden"),$(this).toggleClass("close"),clearTimeout(f)}),r.on("mouseleave",function(){f=setTimeout(function(){r.addClass("hidden"),t.toggleClass("close")},a)}).on("mouseenter",function(){clearTimeout(f)}),e()}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(e){var t,n,r,o,i,a,s="Close",u="BeforeClose",l="AfterClose",c="BeforeAppend",f="MarkupParse",d="Open",p="Change",h="mfp",m="."+h,g="mfp-ready",v="mfp-removing",y="mfp-prevent-close",b=function(){},x=!!window.jQuery,w=e(window),C=function(e,n){t.ev.on(h+e+m,n)},T=function(t,n,r,o){var i=document.createElement("div");return i.className="mfp-"+t,r&&(i.innerHTML=r),o?n&&n.appendChild(i):(i=e(i),n&&i.appendTo(n)),i},E=function(n,r){t.ev.triggerHandler(h+n,r),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(r)?r:[r]))},S=function(n){return n===a&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),a=n),t.currTemplate.closeBtn},k=function(){e.magnificPopup.instance||(t=new b,t.init(),e.magnificPopup.instance=t)},A=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1};b.prototype={constructor:b,init:function(){var n=navigator.appVersion;t.isLowIE=t.isIE8=document.all&&!document.addEventListener,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=A(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),r=e(document),t.popupsCache={}},open:function(n){var o;if(n.isObj===!1){t.items=n.items.toArray(),t.index=0;var a,s=n.items;for(o=0;o<s.length;o++)if(a=s[o],a.parsed&&(a=a.el[0]),a===n.el[0]){t.index=o;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(t.isOpen)return void t.updateItemHTML();t.types=[],i="",n.mainEl&&n.mainEl.length?t.ev=n.mainEl.eq(0):t.ev=r,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=T("bg").on("click"+m,function(){t.close()}),t.wrap=T("wrap").attr("tabindex",-1).on("click"+m,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=T("container",t.wrap)),t.contentContainer=T("content"),t.st.preloader&&(t.preloader=T("preloader",t.container,t.st.tLoading));var u=e.magnificPopup.modules;for(o=0;o<u.length;o++){var l=u[o];l=l.charAt(0).toUpperCase()+l.slice(1),t["init"+l].call(t)}E("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(C(f,function(e,t,n,r){n.close_replaceWith=S(r.type)}),i+=" mfp-close-btn-in"):t.wrap.append(S())),t.st.alignTop&&(i+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:w.scrollTop(),position:"absolute"}),(t.st.fixedBgPos===!1||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:r.height(),position:"absolute"}),t.st.enableEscapeKey&&r.on("keyup"+m,function(e){27===e.keyCode&&t.close()}),w.on("resize"+m,function(){t.updateSize()}),t.st.closeOnContentClick||(i+=" mfp-auto-cursor"),i&&t.wrap.addClass(i);var c=t.wH=w.height(),p={};if(t.fixedContentPos&&t._hasScrollBar(c)){var h=t._getScrollbarSize();h&&(p.marginRight=h)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):p.overflow="hidden");var v=t.st.mainClass;return t.isIE7&&(v+=" mfp-ie7"),v&&t._addClassToMFP(v),t.updateItemHTML(),E("BuildControls"),e("html").css(p),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||e(document.body)),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(g),t._setFocus()):t.bgOverlay.addClass(g),r.on("focusin"+m,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(c),E(d),n},close:function(){t.isOpen&&(E(u),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(v),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){E(s);var n=v+" "+g+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var o={marginRight:""};t.isIE7?e("body, html").css("overflow",""):o.overflow="",e("html").css(o)}r.off("keyup"+m+" focusin"+m),t.ev.off(m),t.wrap.attr("class","mfp-wrap").removeAttr("style"), -t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&t.currTemplate[t.currItem.type]!==!0||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t.st.autoFocusLast&&t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,E(l)},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,r=window.innerHeight*n;t.wrap.css("height",r),t.wH=r}else t.wH=e||w.height();t.fixedContentPos||t.wrap.css("height",t.wH),E("Resize")},updateItemHTML:function(){var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var r=n.type;if(E("BeforeChange",[t.currItem?t.currItem.type:"",r]),t.currItem=n,!t.currTemplate[r]){var i=t.st[r]?t.st[r].markup:!1;E("FirstMarkupParse",i),i?t.currTemplate[r]=e(i):t.currTemplate[r]=!0}o&&o!==n.type&&t.container.removeClass("mfp-"+o+"-holder");var a=t["get"+r.charAt(0).toUpperCase()+r.slice(1)](n,t.currTemplate[r]);t.appendContent(a,r),n.preloaded=!0,E(p,n),o=n.type,t.container.prepend(t.contentContainer),E("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&t.currTemplate[n]===!0?t.content.find(".mfp-close").length||t.content.append(S()):t.content=e:t.content="",E(c),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var r,o=t.items[n];if(o.tagName?o={el:e(o)}:(r=o.type,o={data:o,src:o.src}),o.el){for(var i=t.types,a=0;a<i.length;a++)if(o.el.hasClass("mfp-"+i[a])){r=i[a];break}o.src=o.el.attr("data-mfp-src"),o.src||(o.src=o.el.attr("href"))}return o.type=r||t.st.type||"inline",o.index=n,o.parsed=!0,t.items[n]=o,E("ElementParse",o),t.items[n]},addGroup:function(e,n){var r=function(r){r.mfpEl=this,t._openClick(r,e,n)};n||(n={});var o="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(o).on(o,r)):(n.isObj=!1,n.delegate?e.off(o).on(o,n.delegate,r):(n.items=e,e.off(o).on(o,r)))},_openClick:function(n,r,o){var i=void 0!==o.midClick?o.midClick:e.magnificPopup.defaults.midClick;if(i||!(2===n.which||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey)){var a=void 0!==o.disableOn?o.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(w.width()<a)return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),o.el=e(n.mfpEl),o.delegate&&(o.items=r.find(o.delegate)),t.open(o)}},updateStatus:function(e,r){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),r||"loading"!==e||(r=t.st.tLoading);var o={status:e,text:r};E("UpdateStatus",o),e=o.status,r=o.text,t.preloader.html(r),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(y)){var r=t.st.closeOnContentClick,o=t.st.closeOnBgClick;if(r&&o)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(r)return!0}else if(o&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?r.height():document.body.scrollHeight)>(e||w.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){return n.target===t.wrap[0]||e.contains(t.wrap[0],n.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,n,r){var o;r.data&&(n=e.extend(r.data,n)),E(f,[t,n,r]),e.each(n,function(n,r){if(void 0===r||r===!1)return!0;if(o=n.split("_"),o.length>1){var i=t.find(m+"-"+o[0]);if(i.length>0){var a=o[1];"replaceWith"===a?i[0]!==r[0]&&i.replaceWith(r):"img"===a?i.is("img")?i.attr("src",r):i.replaceWith(e("<img>").attr("src",r).attr("class",i.attr("class"))):i.attr(o[1],r)}}else t.find(m+"-"+n).html(r)})},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:b.prototype,modules:[],open:function(t,n){return k(),t=t?e.extend(!0,{},t):{},t.isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">×</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},e.fn.magnificPopup=function(n){k();var r=e(this);if("string"==typeof n)if("open"===n){var o,i=x?r.data("magnificPopup"):r[0].magnificPopup,a=parseInt(arguments[1],10)||0;i.items?o=i.items[a]:(o=r,i.delegate&&(o=o.find(i.delegate)),o=o.eq(a)),t._openClick({mfpEl:o},r,i)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),x?r.data("magnificPopup",n):r[0].magnificPopup=n,t.addGroup(r,n);return r};var N,j,I,L="inline",D=function(){I&&(j.after(I.addClass(N)).detach(),I=null)};e.magnificPopup.registerModule(L,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(L),C(s+"."+L,function(){D()})},getInline:function(n,r){if(D(),n.src){var o=t.st.inline,i=e(n.src);if(i.length){var a=i[0].parentNode;a&&a.tagName&&(j||(N=o.hiddenClass,j=T(N),N="mfp-"+N),I=i.after(j).detach().removeClass(N)),t.updateStatus("ready")}else t.updateStatus("error",o.tNotFound),i=e("<div>");return n.inlineElement=i,i}return t.updateStatus("ready"),t._parseMarkup(r,{},n),r}}});var O,H="ajax",P=function(){O&&e(document.body).removeClass(O)},q=function(){P(),t.req&&t.req.abort()};e.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(H),O=t.st.ajax.cursor,C(s+"."+H,q),C("BeforeChange."+H,q)},getAjax:function(n){O&&e(document.body).addClass(O),t.updateStatus("loading");var r=e.extend({url:n.src,success:function(r,o,i){var a={data:r,xhr:i};E("ParseAjax",a),t.appendContent(e(a.data),H),n.finished=!0,P(),t._setFocus(),setTimeout(function(){t.wrap.addClass(g)},16),t.updateStatus("ready"),E("AjaxContentAdded")},error:function(){P(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(r),""}}});var M,_=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;var r=t.st.image.titleSrc;if(r){if(e.isFunction(r))return r.call(t,n);if(n.el)return n.el.attr(r)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var n=t.st.image,r=".image";t.types.push("image"),C(d+r,function(){"image"===t.currItem.type&&n.cursor&&e(document.body).addClass(n.cursor)}),C(s+r,function(){n.cursor&&e(document.body).removeClass(n.cursor),w.off("resize"+m)}),C("Resize"+r,t.resizeImage),t.isLowIE&&C("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,M&&clearInterval(M),e.isCheckingImgSize=!1,E("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,r=e.img[0],o=function(i){M&&clearInterval(M),M=setInterval(function(){return r.naturalWidth>0?void t._onImageHasSize(e):(n>200&&clearInterval(M),n++,void(3===n?o(10):40===n?o(50):100===n&&o(500)))},i)};o(1)},getImage:function(n,r){var o=0,i=function(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,E("ImageLoadComplete")):(o++,200>o?setTimeout(i,100):a()))},a=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,u=r.find(".mfp-img");if(u.length){var l=document.createElement("img");l.className="mfp-img",n.el&&n.el.find("img").length&&(l.alt=n.el.find("img").attr("alt")),n.img=e(l).on("load.mfploader",i).on("error.mfploader",a),l.src=n.src,u.is("img")&&(n.img=n.img.clone()),l=n.img[0],l.naturalWidth>0?n.hasSize=!0:l.width||(n.hasSize=!1)}return t._parseMarkup(r,{title:_(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(M&&clearInterval(M),n.loadError?(r.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(r.removeClass("mfp-loading"),t.updateStatus("ready")),r):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,r.addClass("mfp-loading"),t.findImageSize(n)),r)}}});var R,B=function(){return void 0===R&&(R=void 0!==document.createElement("p").style.MozTransform),R};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,n=t.st.zoom,r=".zoom";if(n.enabled&&t.supportsTransition){var o,i,a=n.duration,l=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),r="all "+n.duration/1e3+"s "+n.easing,o={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},i="transition";return o["-webkit-"+i]=o["-moz-"+i]=o["-o-"+i]=o[i]=r,t.css(o),t},c=function(){t.content.css("visibility","visible")};C("BuildControls"+r,function(){if(t._allowZoom()){if(clearTimeout(o),t.content.css("visibility","hidden"),e=t._getItemToZoom(),!e)return void c();i=l(e),i.css(t._getOffset()),t.wrap.append(i),o=setTimeout(function(){i.css(t._getOffset(!0)),o=setTimeout(function(){c(),setTimeout(function(){i.remove(),e=i=null,E("ZoomAnimationEnded")},16)},a)},16)}}),C(u+r,function(){if(t._allowZoom()){if(clearTimeout(o),t.st.removalDelay=a,!e){if(e=t._getItemToZoom(),!e)return;i=l(e)}i.css(t._getOffset(!0)),t.wrap.append(i),t.content.css("visibility","hidden"),setTimeout(function(){i.css(t._getOffset())},16)}}),C(s+r,function(){t._allowZoom()&&(c(),i&&i.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return t.currItem.hasSize?t.currItem.img:!1},_getOffset:function(n){var r;r=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem);var o=r.offset(),i=parseInt(r.css("padding-top"),10),a=parseInt(r.css("padding-bottom"),10);o.top-=e(window).scrollTop()-i;var s={width:r.width(),height:(x?r.innerHeight():r[0].offsetHeight)-a-i};return B()?s["-moz-transform"]=s.transform="translate("+o.left+"px,"+o.top+"px)":(s.left=o.left,s.top=o.top),s}}});var $="iframe",F="//about:blank",z=function(e){if(t.currTemplate[$]){var n=t.currTemplate[$].find("iframe");n.length&&(e||(n[0].src=F),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule($,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push($),C("BeforeChange",function(e,t,n){t!==n&&(t===$?z():n===$&&z(!0))}),C(s+"."+$,function(){z()})},getIframe:function(n,r){var o=n.src,i=t.st.iframe;e.each(i.patterns,function(){return o.indexOf(this.index)>-1?(this.id&&(o="string"==typeof this.id?o.substr(o.lastIndexOf(this.id)+this.id.length,o.length):this.id.call(this,o)),o=this.src.replace("%id%",o),!1):void 0});var a={};return i.srcAction&&(a[i.srcAction]=o),t._parseMarkup(r,a,n),t.updateStatus("ready"),r}}});var W=function(e){var n=t.items.length;return e>n-1?e-n:0>e?n+e:e},U=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,o=".mfp-gallery";return t.direction=!0,n&&n.enabled?(i+=" mfp-gallery",C(d+o,function(){n.navigateByImgClick&&t.wrap.on("click"+o,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),r.on("keydown"+o,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),C("UpdateStatus"+o,function(e,n){n.text&&(n.text=U(n.text,t.currItem.index,t.items.length))}),C(f+o,function(e,r,o,i){var a=t.items.length;o.counter=a>1?U(n.tCounter,i.index,a):""}),C("BuildControls"+o,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var r=n.arrowMarkup,o=t.arrowLeft=e(r.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(y),i=t.arrowRight=e(r.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(y);o.click(function(){t.prev()}),i.click(function(){t.next()}),t.container.append(o.add(i))}}),C(p+o,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void C(s+o,function(){r.off(o),t.wrap.off("click"+o),t.arrowRight=t.arrowLeft=null})):!1},next:function(){t.direction=!0,t.index=W(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=W(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,r=Math.min(n[0],t.items.length),o=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?o:r);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?r:o);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=W(n),!t.items[n].preloaded){var r=t.items[n];r.parsed||(r=t.parseEl(n)),E("LazyLoad",r),"image"===r.type&&(r.img=e('<img class="mfp-img" />').on("load.mfploader",function(){r.hasSize=!0}).on("error.mfploader",function(){r.hasSize=!0,r.loadError=!0,E("LazyLoadError",r)}).attr("src",r.src)),r.preloaded=!0}}}});var X="retina";e.magnificPopup.registerModule(X,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(C("ImageHasSize."+X,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),C("ElementParse."+X,function(t,r){r.src=e.replaceSrc(r,n)}))}}}}),k()}),function(e,t){"$:nomunge";var n,r=e.jQuery||e.Cowboy||(e.Cowboy={});r.throttle=n=function(e,n,o,i){function a(){function r(){u=+new Date,o.apply(l,f)}function a(){s=t}var l=this,c=+new Date-u,f=arguments;i&&!s&&r(),s&&clearTimeout(s),i===t&&c>e?r():n!==!0&&(s=setTimeout(i?a:r,i===t?e-c:e))}var s,u=0;return"boolean"!=typeof n&&(i=o,o=n,n=t),r.guid&&(a.guid=o.guid=o.guid||r.guid++),a},r.debounce=function(e,r,o){return o===t?n(e,r,!1):n(e,o,r!==!1)}}(this),function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,function(e){"use strict";var t={ignore:"[data-scroll-ignore]",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:"easeInOutCubic",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},n=function(){return"querySelector"in document&&"addEventListener"in e&&"requestAnimationFrame"in e&&"closest"in e.Element.prototype},r=function(){var e={};return Array.prototype.forEach.call(arguments,function(t){for(var n in t){if(!t.hasOwnProperty(n))return;e[n]=t[n]}}),e},o=function(t){return!!("matchMedia"in e&&e.matchMedia("(prefers-reduced-motion)").matches)},i=function(t){return parseInt(e.getComputedStyle(t).height,10)},a=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),r=n.length,o=-1,i="",a=n.charCodeAt(0);++o<r;){if(t=n.charCodeAt(o),0===t)throw new InvalidCharacterError("Invalid character: the input contains U+0000.");i+=t>=1&&31>=t||127==t||0===o&&t>=48&&57>=t||1===o&&t>=48&&57>=t&&45===a?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t?n.charAt(o):"\\"+n.charAt(o)}return"#"+i},s=function(e,t){var n;return"easeInQuad"===e.easing&&(n=t*t),"easeOutQuad"===e.easing&&(n=t*(2-t)),"easeInOutQuad"===e.easing&&(n=.5>t?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e.easing&&(n=t*t*t),"easeOutCubic"===e.easing&&(n=--t*t*t+1),"easeInOutCubic"===e.easing&&(n=.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e.easing&&(n=t*t*t*t),"easeOutQuart"===e.easing&&(n=1- --t*t*t*t),"easeInOutQuart"===e.easing&&(n=.5>t?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e.easing&&(n=t*t*t*t*t),"easeOutQuint"===e.easing&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e.easing&&(n=.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t),e.customEasing&&(n=e.customEasing(t)),n||t},u=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,n,r,o){var i=0;if(t.offsetParent)do i+=t.offsetTop,t=t.offsetParent;while(t);return i=Math.max(i-n-r,0),o&&(i=Math.min(i,u()-e.innerHeight)),i},c=function(e){return e?i(e)+e.offsetTop:0},f=function(e,t){var n=t.speedAsDuration?t.speed:Math.abs(e/1e3*t.speed);return t.durationMax&&n>t.durationMax?t.durationMax:t.durationMin&&n<t.durationMin?t.durationMin:parseInt(n,10)},d=function(t){if(history.replaceState&&t.updateURL&&!history.state){var n=e.location.hash;n=n?n:"",history.replaceState({smoothScroll:JSON.stringify(t),anchor:n?n:e.pageYOffset},document.title,n?n:e.location.href)}},p=function(e,t,n){t||history.pushState&&n.updateURL&&history.pushState({smoothScroll:JSON.stringify(n),anchor:e.id},document.title,e===document.documentElement?"#top":"#"+e.id)},h=function(t,n,r){0===t&&document.body.focus(),r||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),e.scrollTo(0,n))},m=function(t,n,r,o){if(n.emitEvents&&"function"==typeof e.CustomEvent){var i=new CustomEvent(t,{bubbles:!0,detail:{anchor:r,toggle:o}});document.dispatchEvent(i)}},g=function(i,g){var v,y,b,x,w,C,T={};T.cancelScroll=function(e){cancelAnimationFrame(C),C=null,e||m("scrollCancel",v)},T.animateScroll=function(n,o,i){T.cancelScroll();var a=r(v||t,i||{}),d="[object Number]"===Object.prototype.toString.call(n),g=d||!n.tagName?null:n;if(d||g){var y=e.pageYOffset;a.header&&!x&&(x=document.querySelector(a.header));var b,w,E,S=c(x),k=d?n:l(g,S,parseInt("function"==typeof a.offset?a.offset(n,o):a.offset,10),a.clip),A=k-y,N=u(),j=0,I=f(A,a),L=function(t,r){var i=e.pageYOffset;return t==r||i==r||(r>y&&e.innerHeight+i)>=N?(T.cancelScroll(!0),h(n,r,d),m("scrollStop",a,n,o),b=null,C=null,!0):void 0},D=function(t){b||(b=t),j+=t-b,w=0===I?0:j/I,w=w>1?1:w,E=y+A*s(a,w),e.scrollTo(0,Math.floor(E)),L(E,k)||(C=e.requestAnimationFrame(D),b=t)};0===e.pageYOffset&&e.scrollTo(0,0),p(n,d,a),m("scrollStart",a,n,o),T.cancelScroll(!0),e.requestAnimationFrame(D)}};var E=function(t){if(!o(v)&&0===t.button&&!t.metaKey&&!t.ctrlKey&&"closest"in t.target&&(b=t.target.closest(i),b&&"a"===b.tagName.toLowerCase()&&!t.target.closest(v.ignore)&&b.hostname===e.location.hostname&&b.pathname===e.location.pathname&&/#/.test(b.href))){var n=a(b.hash),r=v.topOnEmptyHash&&"#"===n?document.documentElement:document.querySelector(n);r=r||"#top"!==n?r:document.documentElement,r&&(t.preventDefault(),d(v),T.animateScroll(r,b))}},S=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(v)){var t=history.state.anchor;"string"==typeof t&&t&&!(t=document.querySelector(a(history.state.anchor)))||T.animateScroll(t,null,{updateURL:!1})}};return T.destroy=function(){v&&(document.removeEventListener("click",E,!1),e.removeEventListener("popstate",S,!1),T.cancelScroll(),v=null,y=null,b=null,x=null,w=null,C=null)},T.init=function(o){if(!n())throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";T.destroy(),v=r(t,o||{}),x=v.header?document.querySelector(v.header):null,document.addEventListener("click",E,!1),v.updateURL&&v.popstate&&e.addEventListener("popstate",S,!1)},T.init(g),T};return g}),function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof exports?module.exports=t(e):e.Gumshoe=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,function(e){"use strict";var t={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(){var e={};return Array.prototype.forEach.call(arguments,function(t){for(var n in t){if(!t.hasOwnProperty(n))return;e[n]=t[n]}}),e},r=function(e,t,n){if(n.settings.events){var r=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t.dispatchEvent(r)}},o=function(e){var t=0;if(e.offsetParent)for(;e;)t+=e.offsetTop,e=e.offsetParent;return t>=0?t:0},i=function(e){e&&e.sort(function(e,t){var n=o(e.content),r=o(t.content);return r>n?-1:1})},a=function(e){return"function"==typeof e.offset?parseFloat(e.offset()):parseFloat(e.offset)},s=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},u=function(t,n,r){var o=t.getBoundingClientRect(),i=a(n);return r?parseInt(o.bottom,10)<(e.innerHeight||document.documentElement.clientHeight):parseInt(o.top,10)<=i},l=function(){return e.innerHeight+e.pageYOffset>=s()},c=function(e,t){return!(!l()||!u(e.content,t,!0))},f=function(e,t){var n=e[e.length-1];if(c(n,t))return n;for(var r=e.length-1;r>=0;r--)if(u(e[r].content,t))return e[r]},d=function(e,t){if(t.nested){var n=e.parentNode.closest("li");n&&(n.classList.remove(t.nestedClass),d(n,t))}},p=function(e,t){if(e){var n=e.nav.closest("li");n&&(n.classList.remove(t.navClass),e.content.classList.remove(t.contentClass),d(n,t),r("gumshoeDeactivate",n,{link:e.nav,content:e.content,settings:t}))}},h=function(e,t){if(t.nested){var n=e.parentNode.closest("li");n&&(n.classList.add(t.nestedClass),h(n,t))}},m=function(e,t){if(e){var n=e.nav.closest("li");n&&(n.classList.add(t.navClass),e.content.classList.add(t.contentClass),h(n,t),r("gumshoeActivate",n,{link:e.nav,content:e.content,settings:t}))}},g=function(r,o){var a,s,u,l,c,d={};d.setup=function(){a=document.querySelectorAll(r),s=[],Array.prototype.forEach.call(a,function(e){var t=document.getElementById(decodeURIComponent(e.hash.substr(1)));t&&s.push({nav:e,content:t})}),i(s)},d.detect=function(){var e=f(s,c);return e?void(u&&e.content===u.content||(p(u,c),m(e,c),u=e)):void(u&&(p(u,c),u=null))};var h=function(t){l&&e.cancelAnimationFrame(l),l=e.requestAnimationFrame(d.detect)},g=function(t){l&&e.cancelAnimationFrame(l),l=e.requestAnimationFrame(function(){i(s),d.detect()})};d.destroy=function(){u&&p(u,c),e.removeEventListener("scroll",h,!1),c.reflow&&e.removeEventListener("resize",g,!1),s=null,a=null,u=null,l=null,c=null};var v=function(){c=n(t,o||{}),d.setup(),d.detect(),e.addEventListener("scroll",h,!1),c.reflow&&e.addEventListener("resize",g,!1)};return v(),d};return g}),$(document).ready(function(){var e=function(){$("body").css("margin-bottom",$(".page__footer").outerHeight(!0))};e(),$(window).resize(jQuery.throttle(250,function(){e()})),$("#main").fitVids();var t=function(){var e=0===$(".author__urls-wrapper button").length?$(window).width()>1024:!$(".author__urls-wrapper button").is(":visible");e?$(".sidebar").addClass("sticky"):$(".sidebar").removeClass("sticky")};t(),$(window).resize(function(){t()}),$(".author__urls-wrapper button").on("click",function(){$(".author__urls").toggleClass("is--visible"),$(".author__urls-wrapper button").toggleClass("open")}),$(document).keyup(function(e){27===e.keyCode&&$(".initial-content").hasClass("is--hidden")&&($(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"))}),$(".search__toggle").on("click",function(){$(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"),setTimeout(function(){$(".search-content input").focus()},400)});new SmoothScroll('a[href*="#"]',{offset:20,speed:400,speedAsDuration:!0,durationMax:500});if($("nav.toc").length>0){new Gumshoe("nav.toc a",{navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:20,reflow:!0,events:!0})}$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"),$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'<a href="%url%">Image #%curr%</a> could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0})}); \ No newline at end of file +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(w,P){"use strict";function y(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item}function m(e){return null!=e&&e===e.window}var t=[],M=Object.getPrototypeOf,s=t.slice,_=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},R=t.push,B=t.indexOf,F={},$=F.toString,W=F.hasOwnProperty,z=W.toString,U=z.call(Object),g={},C=w.document,X={type:!0,src:!0,nonce:!0,noModule:!0};function Q(e,t,n){var r,o,i=(n=n||C).createElement("script");if(i.text=e,t)for(r in X)(o=t[r]||t.getAttribute&&t.getAttribute(r))&&i.setAttribute(r,o);n.head.appendChild(i).parentNode.removeChild(i)}function h(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?F[$.call(e)]||"object":typeof e}var e="3.6.0",T=function(e,t){return new T.fn.init(e,t)};function Y(e){var t=!!e&&"length"in e&&e.length,n=h(e);return!y(e)&&!m(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}T.fn=T.prototype={jquery:e,constructor:T,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){e=T.merge(this.constructor(),e);return e.prevObject=this,e},each:function(e){return T.each(this,e)},map:function(n){return this.pushStack(T.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(T.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(T.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,e=+e+(e<0?t:0);return this.pushStack(0<=e&&e<t?[this[e]]:[])},end:function(){return this.prevObject||this.constructor()},push:R,sort:t.sort,splice:t.splice},T.extend=T.fn.extend=function(){var e,t,n,r,o,i=arguments[0]||{},a=1,s=arguments.length,l=!1;for("boolean"==typeof i&&(l=i,i=arguments[a]||{},a++),"object"==typeof i||y(i)||(i={}),a===s&&(i=this,a--);a<s;a++)if(null!=(e=arguments[a]))for(t in e)n=e[t],"__proto__"!==t&&i!==n&&(l&&n&&(T.isPlainObject(n)||(r=Array.isArray(n)))?(o=i[t],o=r&&!Array.isArray(o)?[]:r||T.isPlainObject(o)?o:{},r=!1,i[t]=T.extend(l,o,n)):void 0!==n&&(i[t]=n));return i},T.extend({expando:"jQuery"+(e+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){return!(!e||"[object Object]"!==$.call(e)||(e=M(e))&&("function"!=typeof(e=W.call(e,"constructor")&&e.constructor)||z.call(e)!==U))},isEmptyObject:function(e){for(var t in e)return!1;return!0},globalEval:function(e,t,n){Q(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(Y(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){t=t||[];return null!=e&&(Y(Object(e))?T.merge(t,"string"==typeof e?[e]:e):R.call(t,e)),t},inArray:function(e,t,n){return null==t?-1:B.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},grep:function(e,t,n){for(var r=[],o=0,i=e.length,a=!n;o<i;o++)!t(e[o],o)!=a&&r.push(e[o]);return r},map:function(e,t,n){var r,o,i=0,a=[];if(Y(e))for(r=e.length;i<r;i++)null!=(o=t(e[i],i,n))&&a.push(o);else for(i in e)null!=(o=t(e[i],i,n))&&a.push(o);return _(a)},guid:1,support:g}),"function"==typeof Symbol&&(T.fn[Symbol.iterator]=t[Symbol.iterator]),T.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){F["[object "+t+"]"]=t.toLowerCase()});function r(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&T(e).is(n))break;r.push(e)}return r}function V(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}var e=function(P){function d(e,t){return e="0x"+e.slice(1)-65536,t||(e<0?String.fromCharCode(65536+e):String.fromCharCode(e>>10|55296,1023&e|56320))}function M(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}function _(){C()}var e,f,x,i,R,p,B,F,w,l,u,C,T,n,E,h,r,o,m,S="sizzle"+ +new Date,c=P.document,k=0,$=0,W=L(),z=L(),U=L(),g=L(),X=function(e,t){return e===t&&(u=!0),0},Q={}.hasOwnProperty,t=[],Y=t.pop,V=t.push,A=t.push,G=t.slice,y=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",a="[\\x20\\t\\r\\n\\f]",s="(?:\\\\[\\da-fA-F]{1,6}"+a+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",Z="\\["+a+"*("+s+")(?:"+a+"*([*^$|!~]?=)"+a+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+s+"))|)"+a+"*\\]",J=":("+s+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+Z+")*)|.*)\\)|)",ee=new RegExp(a+"+","g"),v=new RegExp("^"+a+"+|((?:^|[^\\\\])(?:\\\\.)*)"+a+"+$","g"),te=new RegExp("^"+a+"*,"+a+"*"),ne=new RegExp("^"+a+"*([>+~]|"+a+")"+a+"*"),re=new RegExp(a+"|>"),oe=new RegExp(J),ie=new RegExp("^"+s+"$"),b={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+Z),PSEUDO:new RegExp("^"+J),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},ae=/HTML$/i,se=/^(?:input|select|textarea|button)$/i,le=/^h\d$/i,N=/^[^{]+\{\s*\[native \w/,ue=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ce=/[+~]/,j=new RegExp("\\\\[\\da-fA-F]{1,6}"+a+"?|\\\\([^\\r\\n\\f])","g"),de=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fe=ye(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{A.apply(t=G.call(c.childNodes),c.childNodes),t[c.childNodes.length].nodeType}catch(e){A={apply:t.length?function(e,t){V.apply(e,G.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function I(t,e,n,r){var o,i,a,s,l,u,c=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(s=ue.exec(t)))if(o=s[1]){if(9===d){if(!(u=e.getElementById(o)))return n;if(u.id===o)return n.push(u),n}else if(c&&(u=c.getElementById(o))&&m(e,u)&&u.id===o)return n.push(u),n}else{if(s[2])return A.apply(n,e.getElementsByTagName(t)),n;if((o=s[3])&&f.getElementsByClassName&&e.getElementsByClassName)return A.apply(n,e.getElementsByClassName(o)),n}if(f.qsa&&!g[t+" "]&&(!h||!h.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(u=t,c=e,1===d&&(re.test(t)||ne.test(t))){for((c=ce.test(t)&&ge(e.parentNode)||e)===e&&f.scope||((a=e.getAttribute("id"))?a=a.replace(de,M):e.setAttribute("id",a=S)),i=(l=p(t)).length;i--;)l[i]=(a?"#"+a:":scope")+" "+H(l[i]);u=l.join(",")}try{return A.apply(n,c.querySelectorAll(u)),n}catch(e){g(t,!0)}finally{a===S&&e.removeAttribute("id")}}}return F(t.replace(v,"$1"),e,n,r)}function L(){var n=[];function r(e,t){return n.push(e+" ")>x.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function D(e){return e[S]=!0,e}function O(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function pe(e,t){for(var n=e.split("|"),r=n.length;r--;)x.attrHandle[n[r]]=t}function he(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function me(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&fe(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function q(a){return D(function(i){return i=+i,D(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=I.support={},R=I.isXML=function(e){var t=e&&e.namespaceURI,e=e&&(e.ownerDocument||e).documentElement;return!ae.test(t||e&&e.nodeName||"HTML")},C=I.setDocument=function(e){var e=e?e.ownerDocument||e:c;return e!=T&&9===e.nodeType&&e.documentElement&&(n=(T=e).documentElement,E=!R(T),c!=T&&(e=T.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",_,!1):e.attachEvent&&e.attachEvent("onunload",_)),f.scope=O(function(e){return n.appendChild(e).appendChild(T.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),f.attributes=O(function(e){return e.className="i",!e.getAttribute("className")}),f.getElementsByTagName=O(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),f.getElementsByClassName=N.test(T.getElementsByClassName),f.getById=O(function(e){return n.appendChild(e).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),f.getById?(x.filter.ID=function(e){var t=e.replace(j,d);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&E)return(t=t.getElementById(e))?[t]:[]}):(x.filter.ID=function(e){var t=e.replace(j,d);return function(e){e=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,o,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),x.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},x.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},r=[],h=[],(f.qsa=N.test(T.querySelectorAll))&&(O(function(e){var t;n.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&h.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||h.push("\\["+a+"*(?:value|"+K+")"),e.querySelectorAll("[id~="+S+"-]").length||h.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||h.push("\\["+a+"*name"+a+"*="+a+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||h.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||h.push(".#.+[+~]"),e.querySelectorAll("\\\f"),h.push("[\\r\\n\\f]")}),O(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&h.push("name"+a+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&h.push(":enabled",":disabled"),n.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(f.matchesSelector=N.test(o=n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.oMatchesSelector||n.msMatchesSelector))&&O(function(e){f.disconnectedMatch=o.call(e,"*"),o.call(e,"[s!='']:x"),r.push("!=",J)}),h=h.length&&new RegExp(h.join("|")),r=r.length&&new RegExp(r.join("|")),e=N.test(n.compareDocumentPosition),m=e||N.test(n.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},X=e?function(e,t){var n;return e===t?(u=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==c&&m(c,e)?-1:t==T||t.ownerDocument==c&&m(c,t)?1:l?y(l,e)-y(l,t):0:4&n?-1:1)}:function(e,t){if(e===t)return u=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!o||!i)return e==T?-1:t==T?1:o?-1:i?1:l?y(l,e)-y(l,t):0;if(o===i)return he(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?he(a[r],s[r]):a[r]==c?-1:s[r]==c?1:0}),T},I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(C(e),f.matchesSelector&&E&&!g[t+" "]&&(!r||!r.test(t))&&(!h||!h.test(t)))try{var n=o.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){g(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&C(e),m(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&C(e);var n=x.attrHandle[t.toLowerCase()],n=n&&Q.call(x.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==n?n:f.attributes||!E?e.getAttribute(t):(n=e.getAttributeNode(t))&&n.specified?n.value:null},I.escape=function(e){return(e+"").replace(de,M)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},I.uniqueSort=function(e){var t,n=[],r=0,o=0;if(u=!f.detectDuplicates,l=!f.sortStable&&e.slice(0),e.sort(X),u){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return l=null,e},i=I.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(x=I.selectors={cacheLength:50,createPseudo:D,match:b,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(j,d),e[3]=(e[3]||e[4]||e[5]||"").replace(j,d),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return b.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&oe.test(n)&&(t=(t=p(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(j,d).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=I.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1<e.indexOf(r):"$="===n?r&&e.slice(-r.length)===r:"~="===n?-1<(" "+e.replace(ee," ")+" ").indexOf(r):"|="===n&&(e===r||e.slice(0,r.length+1)===r+"-"))}},CHILD:function(h,e,t,m,g){var v="nth"!==h.slice(0,3),y="last"!==h.slice(-4),b="of-type"===e;return 1===m&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,s,l,u=v!=y?"nextSibling":"previousSibling",c=e.parentNode,d=b&&e.nodeName.toLowerCase(),f=!n&&!b,p=!1;if(c){if(v){for(;u;){for(a=e;a=a[u];)if(b?a.nodeName.toLowerCase()===d:1===a.nodeType)return!1;l=u="only"===h&&!l&&"nextSibling"}return!0}if(l=[y?c.firstChild:c.lastChild],y&&f){for(p=(s=(r=(o=(i=(a=c)[S]||(a[S]={}))[a.uniqueID]||(i[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];a=++s&&a&&a[u]||(p=s=0,l.pop());)if(1===a.nodeType&&++p&&a===e){o[h]=[k,s,p];break}}else if(!1===(p=f?s=(r=(o=(i=(a=e)[S]||(a[S]={}))[a.uniqueID]||(i[a.uniqueID]={}))[h]||[])[0]===k&&r[1]:p))for(;(a=++s&&a&&a[u]||(p=s=0,l.pop()))&&((b?a.nodeName.toLowerCase()!==d:1!==a.nodeType)||!++p||(f&&((o=(i=a[S]||(a[S]={}))[a.uniqueID]||(i[a.uniqueID]={}))[h]=[k,p]),a!==e)););return(p-=g)===m||p%m==0&&0<=p/m}}},PSEUDO:function(e,i){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(i):1<a.length?(t=[e,e,"",i],x.setFilters.hasOwnProperty(e.toLowerCase())?D(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=y(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:D(function(e){var r=[],o=[],s=B(e.replace(v,"$1"));return s[S]?D(function(e,t,n,r){for(var o,i=s(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,s(r,null,n,o),r[0]=null,!o.pop()}}),has:D(function(t){return function(e){return 0<I(t,e).length}}),contains:D(function(t){return t=t.replace(j,d),function(e){return-1<(e.textContent||i(e)).indexOf(t)}}),lang:D(function(n){return ie.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(j,d).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=P.location&&P.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===n},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return le.test(e.nodeName)},input:function(e){return se.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(e=e.getAttribute("type"))||"text"===e.toLowerCase())},first:q(function(){return[0]}),last:q(function(e,t){return[t-1]}),eq:q(function(e,t,n){return[n<0?n+t:n]}),even:q(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:q(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:q(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:q(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=function(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=function(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}(e);function ve(){}function H(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function ye(a,e,t){var s=e.dir,l=e.next,u=l||s,c=t&&"parentNode"===u,d=$++;return e.first?function(e,t,n){for(;e=e[s];)if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,o,i=[k,d];if(n){for(;e=e[s];)if((1===e.nodeType||c)&&a(e,t,n))return!0}else for(;e=e[s];)if(1===e.nodeType||c)if(o=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[s]||e;else{if((r=o[u])&&r[0]===k&&r[1]===d)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}return!1}}function be(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function xe(e,t,n,r,o){for(var i,a=[],s=0,l=e.length,u=null!=t;s<l;s++)!(i=e[s])||n&&!n(i,r,o)||(a.push(i),u&&t.push(s));return a}function we(p,h,m,g,v,e){return g&&!g[S]&&(g=we(g)),v&&!v[S]&&(v=we(v,e)),D(function(e,t,n,r){var o,i,a,s=[],l=[],u=t.length,c=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),d=!p||!e&&h?c:xe(c,s,p,n,r),f=m?v||(e?p:u||g)?[]:t:d;if(m&&m(d,f,n,r),g)for(o=xe(f,l),g(o,[],n,r),i=o.length;i--;)(a=o[i])&&(f[l[i]]=!(d[l[i]]=a));if(e){if(v||p){if(v){for(o=[],i=f.length;i--;)(a=f[i])&&o.push(d[i]=a);v(null,f=[],o,r)}for(i=f.length;i--;)(a=f[i])&&-1<(o=v?y(e,a):s[i])&&(e[o]=!(t[o]=a))}}else f=xe(f===t?f.splice(u,f.length):f),v?v(null,t,f,r):A.apply(t,f)})}function Ce(g,v){function e(e,t,n,r,o){var i,a,s,l=0,u="0",c=e&&[],d=[],f=w,p=e||b&&x.find.TAG("*",o),h=k+=null==f?1:Math.random()||.1,m=p.length;for(o&&(w=t==T||t||o);u!==m&&null!=(i=p[u]);u++){if(b&&i){for(a=0,t||i.ownerDocument==T||(C(i),n=!E);s=g[a++];)if(s(i,t||T,n)){r.push(i);break}o&&(k=h)}y&&((i=!s&&i)&&l--,e)&&c.push(i)}if(l+=u,y&&u!==l){for(a=0;s=v[a++];)s(c,d,t,n);if(e){if(0<l)for(;u--;)c[u]||d[u]||(d[u]=Y.call(r));d=xe(d)}A.apply(r,d),o&&!e&&0<d.length&&1<l+v.length&&I.uniqueSort(r)}return o&&(k=h,w=f),c}var y=0<v.length,b=0<g.length;return y?D(e):e}return ve.prototype=x.filters=x.pseudos,x.setFilters=new ve,p=I.tokenize=function(e,t){var n,r,o,i,a,s,l,u=z[e+" "];if(u)return t?0:u.slice(0);for(a=e,s=[],l=x.preFilter;a;){for(i in n&&!(r=te.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(o=[])),n=!1,(r=ne.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(v," ")}),a=a.slice(n.length)),x.filter)!(r=b[i].exec(a))||l[i]&&!(r=l[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):z(e,s).slice(0)},B=I.compile=function(e,t){var n,r=[],o=[],i=U[e+" "];if(!i){for(n=(t=t||p(e)).length;n--;)((i=function e(t){for(var r,n,o,i=t.length,a=x.relative[t[0].type],s=a||x.relative[" "],l=a?1:0,u=ye(function(e){return e===r},s,!0),c=ye(function(e){return-1<y(r,e)},s,!0),d=[function(e,t,n){return e=!a&&(n||t!==w)||((r=t).nodeType?u:c)(e,t,n),r=null,e}];l<i;l++)if(n=x.relative[t[l].type])d=[ye(be(d),n)];else{if((n=x.filter[t[l].type].apply(null,t[l].matches))[S]){for(o=++l;o<i&&!x.relative[t[o].type];o++);return we(1<l&&be(d),1<l&&H(t.slice(0,l-1).concat({value:" "===t[l-2].type?"*":""})).replace(v,"$1"),n,l<o&&e(t.slice(l,o)),o<i&&e(t=t.slice(o)),o<i&&H(t))}d.push(n)}return be(d)}(t[n]))[S]?r:o).push(i);(i=U(e,Ce(o,r))).selector=e}return i},F=I.select=function(e,t,n,r){var o,i,a,s,l,u="function"==typeof e&&e,c=!r&&p(e=u.selector||e);if(n=n||[],1===c.length){if(2<(i=c[0]=c[0].slice(0)).length&&"ID"===(a=i[0]).type&&9===t.nodeType&&E&&x.relative[i[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(j,d),t)||[])[0]))return n;u&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=b.needsContext.test(e)?0:i.length;o--&&(a=i[o],!x.relative[s=a.type]);)if((l=x.find[s])&&(r=l(a.matches[0].replace(j,d),ce.test(i[0].type)&&ge(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&H(i))break;return A.apply(n,r),n}}return(u||B(e,c))(r,t,!E,n,!t||ce.test(e)&&ge(t.parentNode)||t),n},f.sortStable=S.split("").sort(X).join("")===S,f.detectDuplicates=!!u,C(),f.sortDetached=O(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),O(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||pe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),f.attributes&&O(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||pe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),O(function(e){return null==e.getAttribute("disabled")})||pe(K,function(e,t,n){if(!n)return!0===e[t]?t.toLowerCase():(n=e.getAttributeNode(t))&&n.specified?n.value:null}),I}(w),G=(T.find=e,T.expr=e.selectors,T.expr[":"]=T.expr.pseudos,T.uniqueSort=T.unique=e.uniqueSort,T.text=e.getText,T.isXMLDoc=e.isXML,T.contains=e.contains,T.escapeSelector=e.escape,T.expr.match.needsContext);function l(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var K=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Z(e,n,r){return y(n)?T.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?T.grep(e,function(e){return e===n!==r}):"string"!=typeof n?T.grep(e,function(e){return-1<B.call(n,e)!==r}):T.filter(n,e,r)}T.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?T.find.matchesSelector(r,e)?[r]:[]:T.find.matches(e,T.grep(t,function(e){return 1===e.nodeType}))},T.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(T(e).filter(function(){for(t=0;t<r;t++)if(T.contains(o[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)T.find(e,o[t],n);return 1<r?T.uniqueSort(n):n},filter:function(e){return this.pushStack(Z(this,e||[],!1))},not:function(e){return this.pushStack(Z(this,e||[],!0))},is:function(e){return!!Z(this,"string"==typeof e&&G.test(e)?T(e):e||[],!1).length}});var J,ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,te=((T.fn.init=function(e,t,n){if(e){if(n=n||J,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(T):T.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:ee.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof T?t[0]:t,T.merge(this,T.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),K.test(r[1])&&T.isPlainObject(t))for(var r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r])}else(n=C.getElementById(r[2]))&&(this[0]=n,this.length=1)}return this}).prototype=T.fn,J=T(C),/^(?:parents|prev(?:Until|All))/),ne={children:!0,contents:!0,next:!0,prev:!0};function re(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}T.fn.extend({has:function(e){var t=T(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(T.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,o=this.length,i=[],a="string"!=typeof e&&T(e);if(!G.test(e))for(;r<o;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&T.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(1<i.length?T.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?B.call(T(e),this[0]):B.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(T.uniqueSort(T.merge(this.get(),T(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),T.each({parent:function(e){e=e.parentNode;return e&&11!==e.nodeType?e:null},parents:function(e){return r(e,"parentNode")},parentsUntil:function(e,t,n){return r(e,"parentNode",n)},next:function(e){return re(e,"nextSibling")},prev:function(e){return re(e,"previousSibling")},nextAll:function(e){return r(e,"nextSibling")},prevAll:function(e){return r(e,"previousSibling")},nextUntil:function(e,t,n){return r(e,"nextSibling",n)},prevUntil:function(e,t,n){return r(e,"previousSibling",n)},siblings:function(e){return V((e.parentNode||{}).firstChild,e)},children:function(e){return V(e.firstChild)},contents:function(e){return null!=e.contentDocument&&M(e.contentDocument)?e.contentDocument:(l(e,"template")&&(e=e.content||e),T.merge([],e.childNodes))}},function(r,o){T.fn[r]=function(e,t){var n=T.map(this,o,e);return(t="Until"!==r.slice(-5)?e:t)&&"string"==typeof t&&(n=T.filter(t,n)),1<this.length&&(ne[r]||T.uniqueSort(n),te.test(r))&&n.reverse(),this.pushStack(n)}});var E=/[^\x20\t\r\n\f]+/g;function c(e){return e}function oe(e){throw e}function ie(e,t,n,r){var o;try{e&&y(o=e.promise)?o.call(e).done(t).fail(n):e&&y(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}T.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},T.each(e.match(E)||[],function(e,t){n[t]=!0}),n):T.extend({},r);function o(){for(s=s||r.once,a=i=!0;u.length;c=-1)for(t=u.shift();++c<l.length;)!1===l[c].apply(t[0],t[1])&&r.stopOnFalse&&(c=l.length,t=!1);r.memory||(t=!1),i=!1,s&&(l=t?[]:"")}var i,t,a,s,l=[],u=[],c=-1,d={add:function(){return l&&(t&&!i&&(c=l.length-1,u.push(t)),function n(e){T.each(e,function(e,t){y(t)?r.unique&&d.has(t)||l.push(t):t&&t.length&&"string"!==h(t)&&n(t)})}(arguments),t)&&!i&&o(),this},remove:function(){return T.each(arguments,function(e,t){for(var n;-1<(n=T.inArray(t,l,n));)l.splice(n,1),n<=c&&c--}),this},has:function(e){return e?-1<T.inArray(e,l):0<l.length},empty:function(){return l=l&&[],this},disable:function(){return s=u=[],l=t="",this},disabled:function(){return!l},lock:function(){return s=u=[],t||i||(l=t=""),this},locked:function(){return!!s},fireWith:function(e,t){return s||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i)||o(),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!a}};return d},T.extend({Deferred:function(e){var i=[["notify","progress",T.Callbacks("memory"),T.Callbacks("memory"),2],["resolve","done",T.Callbacks("once memory"),T.Callbacks("once memory"),0,"resolved"],["reject","fail",T.Callbacks("once memory"),T.Callbacks("once memory"),1,"rejected"]],o="pending",a={state:function(){return o},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var o=arguments;return T.Deferred(function(r){T.each(i,function(e,t){var n=y(o[t[4]])&&o[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&y(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),o=null}).promise()},then:function(t,n,r){var l=0;function u(o,i,a,s){return function(){function e(){var e,t;if(!(o<l)){if((e=a.apply(n,r))===i.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,y(t)?s?t.call(e,u(l,i,c,s),u(l,i,oe,s)):(l++,t.call(e,u(l,i,c,s),u(l,i,oe,s),u(l,i,c,i.notifyWith))):(a!==c&&(n=void 0,r=[e]),(s||i.resolveWith)(n,r))}}var n=this,r=arguments,t=s?e:function(){try{e()}catch(e){T.Deferred.exceptionHook&&T.Deferred.exceptionHook(e,t.stackTrace),l<=o+1&&(a!==oe&&(n=void 0,r=[e]),i.rejectWith(n,r))}};o?t():(T.Deferred.getStackHook&&(t.stackTrace=T.Deferred.getStackHook()),w.setTimeout(t))}}return T.Deferred(function(e){i[0][3].add(u(0,e,y(r)?r:c,e.notifyWith)),i[1][3].add(u(0,e,y(t)?t:c)),i[2][3].add(u(0,e,y(n)?n:oe))}).promise()},promise:function(e){return null!=e?T.extend(e,a):a}},s={};return T.each(i,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){o=r},i[3-e][2].disable,i[3-e][3].disable,i[0][2].lock,i[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){function t(t){return function(e){o[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||a.resolveWith(o,i)}}var n=arguments.length,r=n,o=Array(r),i=s.call(arguments),a=T.Deferred();if(n<=1&&(ie(e,a.done(t(r)).resolve,a.reject,!n),"pending"===a.state()||y(i[r]&&i[r].then)))return a.then();for(;r--;)ie(i[r],t(r),a.reject);return a.promise()}});var ae=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/,se=(T.Deferred.exceptionHook=function(e,t){w.console&&w.console.warn&&e&&ae.test(e.name)&&w.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},T.readyException=function(e){w.setTimeout(function(){throw e})},T.Deferred());function le(){C.removeEventListener("DOMContentLoaded",le),w.removeEventListener("load",le),T.ready()}T.fn.ready=function(e){return se.then(e).catch(function(e){T.readyException(e)}),this},T.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--T.readyWait:T.isReady)||(T.isReady=!0)!==e&&0<--T.readyWait||se.resolveWith(C,[T])}}),T.ready.then=se.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?w.setTimeout(T.ready):(C.addEventListener("DOMContentLoaded",le),w.addEventListener("load",le));function d(e,t,n,r,o,i,a){var s=0,l=e.length,u=null==n;if("object"===h(n))for(s in o=!0,n)d(e,t,s,n[s],!0,i,a);else if(void 0!==r&&(o=!0,y(r)||(a=!0),t=u?a?(t.call(e,r),null):(u=t,function(e,t,n){return u.call(T(e),n)}):t))for(;s<l;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return o?e:u?t.call(e):l?t(e[0],n):i}var ue=/^-ms-/,ce=/-([a-z])/g;function de(e,t){return t.toUpperCase()}function b(e){return e.replace(ue,"ms-").replace(ce,de)}function v(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType}function fe(){this.expando=T.expando+fe.uid++}fe.uid=1,fe.prototype={cache:function(e){var t=e[this.expando];return t||(t={},v(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,o=this.cache(e);if("string"==typeof t)o[b(t)]=n;else for(r in t)o[b(r)]=t[r];return o},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][b(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(b):(t=b(t))in r?[t]:t.match(E)||[]).length;for(;n--;)delete r[t[n]]}void 0!==t&&!T.isEmptyObject(r)||(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){e=e[this.expando];return void 0!==e&&!T.isEmptyObject(e)}};var x=new fe,u=new fe,pe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,he=/[A-Z]/g;function me(e,t,n){var r,o;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(he,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(o=n)||"false"!==o&&("null"===o?null:o===+o+""?+o:pe.test(o)?JSON.parse(o):o)}catch(e){}u.set(e,t,n)}else n=void 0;return n}T.extend({hasData:function(e){return u.hasData(e)||x.hasData(e)},data:function(e,t,n){return u.access(e,t,n)},removeData:function(e,t){u.remove(e,t)},_data:function(e,t,n){return x.access(e,t,n)},_removeData:function(e,t){x.remove(e,t)}}),T.fn.extend({data:function(n,e){var t,r,o,i=this[0],a=i&&i.attributes;if(void 0!==n)return"object"==typeof n?this.each(function(){u.set(this,n)}):d(this,function(e){var t;if(i&&void 0===e)return void 0!==(t=u.get(i,n))||void 0!==(t=me(i,n))?t:void 0;this.each(function(){u.set(this,n,e)})},null,e,1<arguments.length,null,!0);if(this.length&&(o=u.get(i),1===i.nodeType)&&!x.get(i,"hasDataAttrs")){for(t=a.length;t--;)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=b(r.slice(5)),me(i,r,o[r]));x.set(i,"hasDataAttrs",!0)}return o},removeData:function(e){return this.each(function(){u.remove(this,e)})}}),T.extend({queue:function(e,t,n){var r;if(e)return r=x.get(e,t=(t||"fx")+"queue"),n&&(!r||Array.isArray(n)?r=x.access(e,t,T.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=T.queue(e,t),r=n.length,o=n.shift(),i=T._queueHooks(e,t);"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,function(){T.dequeue(e,t)},i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x.get(e,n)||x.access(e,n,{empty:T.Callbacks("once memory").add(function(){x.remove(e,[t+"queue",n])})})}}),T.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?T.queue(this[0],t):void 0===n?this:this.each(function(){var e=T.queue(this,t,n);T._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&T.dequeue(this,t)})},dequeue:function(e){return this.each(function(){T.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){function n(){--o||i.resolveWith(a,[a])}var r,o=1,i=T.Deferred(),a=this,s=this.length;for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)(r=x.get(a[s],e+"queueHooks"))&&r.empty&&(o++,r.empty.add(n));return n(),i.promise(t)}});function ge(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&k(e)&&"none"===T.css(e,"display")}var e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ve=new RegExp("^(?:([+-])=|)("+e+")([a-z%]*)$","i"),f=["Top","Right","Bottom","Left"],S=C.documentElement,k=function(e){return T.contains(e.ownerDocument,e)},ye={composed:!0};S.getRootNode&&(k=function(e){return T.contains(e.ownerDocument,e)||e.getRootNode(ye)===e.ownerDocument});function be(e,t,n,r){var o,i,a=20,s=r?function(){return r.cur()}:function(){return T.css(e,t,"")},l=s(),u=n&&n[3]||(T.cssNumber[t]?"":"px"),c=e.nodeType&&(T.cssNumber[t]||"px"!==u&&+l)&&ve.exec(T.css(e,t));if(c&&c[3]!==u){for(u=u||c[3],c=+(l/=2)||1;a--;)T.style(e,t,c+u),(1-i)*(1-(i=s()/l||.5))<=0&&(a=0),c/=i;T.style(e,t,(c*=2)+u),n=n||[]}return n&&(c=+c||+l||0,o=n[1]?c+(n[1]+1)*n[2]:+n[2],r)&&(r.unit=u,r.start=c,r.end=o),o}var xe={};function A(e,t){for(var n,r,o,i,a,s=[],l=0,u=e.length;l<u;l++)(r=e[l]).style&&(n=r.style.display,t?("none"===n&&(s[l]=x.get(r,"display")||null,s[l]||(r.style.display="")),""===r.style.display&&ge(r)&&(s[l]=(a=i=void 0,i=(o=r).ownerDocument,o=o.nodeName,(a=xe[o])||(i=i.body.appendChild(i.createElement(o)),a=T.css(i,"display"),i.parentNode.removeChild(i),xe[o]=a="none"===a?"block":a),a))):"none"!==n&&(s[l]="none",x.set(r,"display",n)));for(l=0;l<u;l++)null!=s[l]&&(e[l].style.display=s[l]);return e}T.fn.extend({show:function(){return A(this,!0)},hide:function(){return A(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ge(this)?T(this).show():T(this).hide()})}});var we=/^(?:checkbox|radio)$/i,Ce=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Te=/^$|^module$|\/(?:java|ecma)script/i,N=(D=C.createDocumentFragment().appendChild(C.createElement("div")),(a=C.createElement("input")).setAttribute("type","radio"),a.setAttribute("checked","checked"),a.setAttribute("name","t"),D.appendChild(a),g.checkClone=D.cloneNode(!0).cloneNode(!0).lastChild.checked,D.innerHTML="<textarea>x</textarea>",g.noCloneChecked=!!D.cloneNode(!0).lastChild.defaultValue,D.innerHTML="<option></option>",g.option=!!D.lastChild,{thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]});function j(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&l(e,t)?T.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)x.set(e[n],"globalEval",!t||x.get(t[n],"globalEval"))}N.tbody=N.tfoot=N.colgroup=N.caption=N.thead,N.th=N.td,g.option||(N.optgroup=N.option=[1,"<select multiple='multiple'>","</select>"]);var Se=/<|&#?\w+;/;function ke(e,t,n,r,o){for(var i,a,s,l,u,c=t.createDocumentFragment(),d=[],f=0,p=e.length;f<p;f++)if((i=e[f])||0===i)if("object"===h(i))T.merge(d,i.nodeType?[i]:i);else if(Se.test(i)){for(a=a||c.appendChild(t.createElement("div")),s=(Ce.exec(i)||["",""])[1].toLowerCase(),s=N[s]||N._default,a.innerHTML=s[1]+T.htmlPrefilter(i)+s[2],u=s[0];u--;)a=a.lastChild;T.merge(d,a.childNodes),(a=c.firstChild).textContent=""}else d.push(t.createTextNode(i));for(c.textContent="",f=0;i=d[f++];)if(r&&-1<T.inArray(i,r))o&&o.push(i);else if(l=k(i),a=j(c.appendChild(i),"script"),l&&Ee(a),n)for(u=0;i=a[u++];)Te.test(i.type||"")&&n.push(i);return c}var Ae=/^([^.]*)(?:\.(.+)|)/;function n(){return!0}function p(){return!1}function Ne(e,t){return e===function(){try{return C.activeElement}catch(e){}}()==("focus"===t)}function je(e,t,n,r,o,i){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)je(e,s,n,r,t[s],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=p;else if(!o)return e;return 1===i&&(a=o,(o=function(e){return T().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=T.guid++)),e.each(function(){T.event.add(this,t,o,r,n)})}function Ie(e,o,i){i?(x.set(e,o,!1),T.event.add(e,o,{namespace:!1,handler:function(e){var t,n,r=x.get(this,o);if(1&e.isTrigger&&this[o]){if(r.length)(T.event.special[o]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),x.set(this,o,r),t=i(this,o),this[o](),r!==(n=x.get(this,o))||t?x.set(this,o,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(x.set(this,o,{value:T.event.trigger(T.extend(r[0],T.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===x.get(e,o)&&T.event.add(e,o,n)}T.event={global:{},add:function(t,e,n,r,o){var i,a,s,l,u,c,d,f,p,h=x.get(t);if(v(t))for(n.handler&&(n=(i=n).handler,o=i.selector),o&&T.find.matchesSelector(S,o),n.guid||(n.guid=T.guid++),s=(s=h.events)||(h.events=Object.create(null)),a=(a=h.handle)||(h.handle=function(e){return void 0!==T&&T.event.triggered!==e.type?T.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(E)||[""]).length;l--;)d=p=(f=Ae.exec(e[l])||[])[1],f=(f[2]||"").split(".").sort(),d&&(u=T.event.special[d]||{},d=(o?u.delegateType:u.bindType)||d,u=T.event.special[d]||{},p=T.extend({type:d,origType:p,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&T.expr.match.needsContext.test(o),namespace:f.join(".")},i),(c=s[d])||((c=s[d]=[]).delegateCount=0,u.setup&&!1!==u.setup.call(t,r,f,a))||t.addEventListener&&t.addEventListener(d,a),u.add&&(u.add.call(t,p),p.handler.guid||(p.handler.guid=n.guid)),o?c.splice(c.delegateCount++,0,p):c.push(p),T.event.global[d]=!0)},remove:function(e,t,n,r,o){var i,a,s,l,u,c,d,f,p,h,m,g=x.hasData(e)&&x.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(E)||[""]).length;u--;)if(p=m=(s=Ae.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p){for(d=T.event.special[p]||{},f=l[p=(r?d.delegateType:d.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=f.length;i--;)c=f[i],!o&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(i,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(e,c));a&&!f.length&&(d.teardown&&!1!==d.teardown.call(e,h,g.handle)||T.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)T.event.remove(e,p+t[u],n,r,!0);T.isEmptyObject(l)&&x.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,a=new Array(arguments.length),s=T.event.fix(e),e=(x.get(this,"events")||Object.create(null))[s.type]||[],l=T.event.special[s.type]||{};for(a[0]=s,t=1;t<arguments.length;t++)a[t]=arguments[t];if(s.delegateTarget=this,!l.preDispatch||!1!==l.preDispatch.call(this,s)){for(i=T.event.handlers.call(this,s,e),t=0;(r=i[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(o=((T.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,a))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,o,i,a,s=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!("click"===e.type&&1<=e.button))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(i=[],a={},n=0;n<l;n++)void 0===a[o=(r=t[n]).selector+" "]&&(a[o]=r.needsContext?-1<T(o,this).index(u):T.find(o,this,null,[u]).length),a[o]&&i.push(r);i.length&&s.push({elem:u,handlers:i})}return u=this,l<t.length&&s.push({elem:u,handlers:t.slice(l)}),s},addProp:function(t,e){Object.defineProperty(T.Event.prototype,t,{enumerable:!0,configurable:!0,get:y(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[T.expando]?e:new T.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){e=this||e;return we.test(e.type)&&e.click&&l(e,"input")&&Ie(e,"click",n),!1},trigger:function(e){e=this||e;return we.test(e.type)&&e.click&&l(e,"input")&&Ie(e,"click"),!0},_default:function(e){e=e.target;return we.test(e.type)&&e.click&&l(e,"input")&&x.get(e,"click")||l(e,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},T.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},T.Event=function(e,t){if(!(this instanceof T.Event))return new T.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?n:p,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&T.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[T.expando]=!0},T.Event.prototype={constructor:T.Event,isDefaultPrevented:p,isPropagationStopped:p,isImmediatePropagationStopped:p,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=n,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=n,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=n,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},T.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},T.event.addProp),T.each({focus:"focusin",blur:"focusout"},function(e,t){T.event.special[e]={setup:function(){return Ie(this,e,Ne),!1},trigger:function(){return Ie(this,e),!0},_default:function(){return!0},delegateType:t}}),T.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,o){T.event.special[e]={delegateType:o,bindType:o,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||T.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=o),t}}}),T.fn.extend({on:function(e,t,n,r){return je(this,e,t,n,r)},one:function(e,t,n,r){return je(this,e,t,n,r,1)},off:function(e,t,n){var r,o;if(e&&e.preventDefault&&e.handleObj)r=e.handleObj,T(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler);else{if("object"!=typeof e)return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=p),this.each(function(){T.event.remove(this,e,n,t)});for(o in e)this.off(o,t,e[o])}return this}});var Le=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,Oe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return l(e,"table")&&l(11!==t.nodeType?t:t.firstChild,"tr")&&T(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,o,i;if(1===t.nodeType){if(x.hasData(e)&&(i=x.get(e).events))for(o in x.remove(t,"handle events"),i)for(n=0,r=i[o].length;n<r;n++)T.event.add(t,o,i[o][n]);u.hasData(e)&&(e=u.access(e),e=T.extend({},e),u.set(t,e))}}function I(n,r,o,i){r=_(r);var e,t,a,s,l,u,c=0,d=n.length,f=d-1,p=r[0],h=y(p);if(h||1<d&&"string"==typeof p&&!g.checkClone&&De.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),I(t,r,o,i)});if(d&&(t=(e=ke(r,n[0].ownerDocument,!1,n,i)).firstChild,1===e.childNodes.length&&(e=t),t||i)){for(s=(a=T.map(j(e,"script"),He)).length;c<d;c++)l=e,c!==f&&(l=T.clone(l,!0,!0),s)&&T.merge(a,j(l,"script")),o.call(n[c],l,c);if(s)for(u=a[a.length-1].ownerDocument,T.map(a,Pe),c=0;c<s;c++)l=a[c],Te.test(l.type||"")&&!x.access(l,"globalEval")&&T.contains(u,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?T._evalUrl&&!l.noModule&&T._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")},u):Q(l.textContent.replace(Oe,""),l,u))}return n}function _e(e,t,n){for(var r,o=t?T.filter(t,e):e,i=0;null!=(r=o[i]);i++)n||1!==r.nodeType||T.cleanData(j(r)),r.parentNode&&(n&&k(r)&&Ee(j(r,"script")),r.parentNode.removeChild(r));return e}T.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,o,i,a,s,l,u,c=e.cloneNode(!0),d=k(e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||T.isXMLDoc(e)))for(a=j(c),r=0,o=(i=j(e)).length;r<o;r++)s=i[r],l=a[r],u=void 0,"input"===(u=l.nodeName.toLowerCase())&&we.test(s.type)?l.checked=s.checked:"input"!==u&&"textarea"!==u||(l.defaultValue=s.defaultValue);if(t)if(n)for(i=i||j(e),a=a||j(c),r=0,o=i.length;r<o;r++)Me(i[r],a[r]);else Me(e,c);return 0<(a=j(c,"script")).length&&Ee(a,!d&&j(e,"script")),c},cleanData:function(e){for(var t,n,r,o=T.event.special,i=0;void 0!==(n=e[i]);i++)if(v(n)){if(t=n[x.expando]){if(t.events)for(r in t.events)o[r]?T.event.remove(n,r):T.removeEvent(n,r,t.handle);n[x.expando]=void 0}n[u.expando]&&(n[u.expando]=void 0)}}}),T.fn.extend({detach:function(e){return _e(this,e,!0)},remove:function(e){return _e(this,e)},text:function(e){return d(this,function(e){return void 0===e?T.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return I(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return I(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=qe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(T.cleanData(j(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return T.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Le.test(e)&&!N[(Ce.exec(e)||["",""])[1].toLowerCase()]){e=T.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(T.cleanData(j(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return I(this,arguments,function(e){var t=this.parentNode;T.inArray(this,n)<0&&(T.cleanData(j(this)),t)&&t.replaceChild(e,this)},n)}}),T.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){T.fn[e]=function(e){for(var t,n=[],r=T(e),o=r.length-1,i=0;i<=o;i++)t=i===o?this:this.clone(!0),T(r[i])[a](t),R.apply(n,t.get());return this.pushStack(n)}});function Re(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:w).getComputedStyle(e)}function Be(e,t,n){var r,o={};for(r in t)o[r]=e.style[r],e.style[r]=t[r];for(r in n=n.call(e),t)e.style[r]=o[r];return n}var Fe,$e,We,ze,Ue,Xe,Qe,o,Ye=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),Ve=new RegExp(f.join("|"),"i");function Ge(){var e;o&&(Qe.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",o.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",S.appendChild(Qe).appendChild(o),e=w.getComputedStyle(o),Fe="1%"!==e.top,Xe=12===Ke(e.marginLeft),o.style.right="60%",ze=36===Ke(e.right),$e=36===Ke(e.width),o.style.position="absolute",We=12===Ke(o.offsetWidth/3),S.removeChild(Qe),o=null)}function Ke(e){return Math.round(parseFloat(e))}function Ze(e,t,n){var r,o,i=e.style;return(n=n||Re(e))&&(""!==(o=n.getPropertyValue(t)||n[t])||k(e)||(o=T.style(e,t)),!g.pixelBoxStyles())&&Ye.test(o)&&Ve.test(t)&&(e=i.width,t=i.minWidth,r=i.maxWidth,i.minWidth=i.maxWidth=i.width=o,o=n.width,i.width=e,i.minWidth=t,i.maxWidth=r),void 0!==o?o+"":o}function Je(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}Qe=C.createElement("div"),(o=C.createElement("div")).style&&(o.style.backgroundClip="content-box",o.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===o.style.backgroundClip,T.extend(g,{boxSizingReliable:function(){return Ge(),$e},pixelBoxStyles:function(){return Ge(),ze},pixelPosition:function(){return Ge(),Fe},reliableMarginLeft:function(){return Ge(),Xe},scrollboxSize:function(){return Ge(),We},reliableTrDimensions:function(){var e,t,n;return null==Ue&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",S.appendChild(e).appendChild(t).appendChild(n),n=w.getComputedStyle(t),Ue=parseInt(n.height,10)+parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10)===t.offsetHeight,S.removeChild(e)),Ue}}));var et=["Webkit","Moz","ms"],tt=C.createElement("div").style,nt={};function rt(e){var t=T.cssProps[e]||nt[e];return t||(e in tt?e:nt[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=et.length;n--;)if((e=et[n]+t)in tt)return e}(e)||e)}var ot=/^(none|table(?!-c[ea]).+)/,it=/^--/,at={position:"absolute",visibility:"hidden",display:"block"},st={letterSpacing:"0",fontWeight:"400"};function lt(e,t,n){var r=ve.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function ut(e,t,n,r,o,i){var a="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=T.css(e,n+f[a],!0,o)),r?("content"===n&&(l-=T.css(e,"padding"+f[a],!0,o)),"margin"!==n&&(l-=T.css(e,"border"+f[a]+"Width",!0,o))):(l+=T.css(e,"padding"+f[a],!0,o),"padding"!==n?l+=T.css(e,"border"+f[a]+"Width",!0,o):s+=T.css(e,"border"+f[a]+"Width",!0,o));return!r&&0<=i&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-l-s-.5))||0),l}function ct(e,t,n){var r=Re(e),o=(!g.boxSizingReliable()||n)&&"border-box"===T.css(e,"boxSizing",!1,r),i=o,a=Ze(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Ye.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&o||!g.reliableTrDimensions()&&l(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===T.css(e,"display",!1,r))&&e.getClientRects().length&&(o="border-box"===T.css(e,"boxSizing",!1,r),i=s in e)&&(a=e[s]),(a=parseFloat(a)||0)+ut(e,t,n||(o?"border":"content"),i,r,a)+"px"}function i(e,t,n,r,o){return new i.prototype.init(e,t,n,r,o)}T.extend({cssHooks:{opacity:{get:function(e,t){if(t)return""===(t=Ze(e,"opacity"))?"1":t}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a,s=b(t),l=it.test(t),u=e.style;if(l||(t=rt(s)),a=T.cssHooks[t]||T.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:u[t];"string"===(i=typeof n)&&(o=ve.exec(n))&&o[1]&&(n=be(e,t,o),i="number"),null==n||n!=n||("number"!==i||l||(n+=o&&o[3]||(T.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r)))||(l?u.setProperty(t,n):u[t]=n)}},css:function(e,t,n,r){var o,i=b(t);return it.test(t)||(t=rt(i)),"normal"===(o=void 0===(o=(i=T.cssHooks[t]||T.cssHooks[i])&&"get"in i?i.get(e,!0,n):o)?Ze(e,t,r):o)&&t in st&&(o=st[t]),(""===n||n)&&(i=parseFloat(o),!0===n||isFinite(i))?i||0:o}}),T.each(["height","width"],function(e,a){T.cssHooks[a]={get:function(e,t,n){if(t)return!ot.test(T.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ct(e,a,n):Be(e,at,function(){return ct(e,a,n)})},set:function(e,t,n){var r=Re(e),o=!g.scrollboxSize()&&"absolute"===r.position,i=(o||n)&&"border-box"===T.css(e,"boxSizing",!1,r),n=n?ut(e,a,n,i,r):0;return i&&o&&(n-=Math.ceil(e["offset"+a[0].toUpperCase()+a.slice(1)]-parseFloat(r[a])-ut(e,a,"border",!1,r)-.5)),n&&(i=ve.exec(t))&&"px"!==(i[3]||"px")&&(e.style[a]=t,t=T.css(e,a)),lt(0,t,n)}}}),T.cssHooks.marginLeft=Je(g.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ze(e,"marginLeft"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),T.each({margin:"",padding:"",border:"Width"},function(o,i){T.cssHooks[o+i]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[o+f[t]+i]=r[t]||r[t-2]||r[0];return n}},"margin"!==o&&(T.cssHooks[o+i].set=lt)}),T.fn.extend({css:function(e,t){return d(this,function(e,t,n){var r,o,i={},a=0;if(Array.isArray(t)){for(r=Re(e),o=t.length;a<o;a++)i[t[a]]=T.css(e,t[a],!1,r);return i}return void 0!==n?T.style(e,t,n):T.css(e,t)},e,t,1<arguments.length)}}),((T.Tween=i).prototype={constructor:i,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||T.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(T.cssNumber[n]?"":"px")},cur:function(){var e=i.propHooks[this.prop];return(e&&e.get?e:i.propHooks._default).get(this)},run:function(e){var t,n=i.propHooks[this.prop];return this.options.duration?this.pos=t=T.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),(n&&n.set?n:i.propHooks._default).set(this),this}}).init.prototype=i.prototype,(i.propHooks={_default:{get:function(e){return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(e=T.css(e.elem,e.prop,""))&&"auto"!==e?e:0},set:function(e){T.fx.step[e.prop]?T.fx.step[e.prop](e):1!==e.elem.nodeType||!T.cssHooks[e.prop]&&null==e.elem.style[rt(e.prop)]?e.elem[e.prop]=e.now:T.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=i.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},T.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},T.fx=i.prototype.init,T.fx.step={};var L,dt,a,D,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function ht(){dt&&(!1===C.hidden&&w.requestAnimationFrame?w.requestAnimationFrame(ht):w.setTimeout(ht,T.fx.interval),T.fx.tick())}function mt(){return w.setTimeout(function(){L=void 0}),L=Date.now()}function gt(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)o["margin"+(n=f[r])]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function vt(e,t,n){for(var r,o=(O.tweeners[t]||[]).concat(O.tweeners["*"]),i=0,a=o.length;i<a;i++)if(r=o[i].call(n,t,e))return r}function O(o,e,t){var n,i,r,a,s,l,u,c=0,d=O.prefilters.length,f=T.Deferred().always(function(){delete p.elem}),p=function(){if(!i){for(var e=L||mt(),e=Math.max(0,h.startTime+h.duration-e),t=1-(e/h.duration||0),n=0,r=h.tweens.length;n<r;n++)h.tweens[n].run(t);if(f.notifyWith(o,[h,t,e]),t<1&&r)return e;r||f.notifyWith(o,[h,1,0]),f.resolveWith(o,[h])}return!1},h=f.promise({elem:o,props:T.extend({},e),opts:T.extend(!0,{specialEasing:{},easing:T.easing._default},t),originalProperties:e,originalOptions:t,startTime:L||mt(),duration:t.duration,tweens:[],createTween:function(e,t){t=T.Tween(o,h.opts,e,t,h.opts.specialEasing[e]||h.opts.easing);return h.tweens.push(t),t},stop:function(e){var t=0,n=e?h.tweens.length:0;if(!i){for(i=!0;t<n;t++)h.tweens[t].run(1);e?(f.notifyWith(o,[h,1,0]),f.resolveWith(o,[h,e])):f.rejectWith(o,[h,e])}return this}}),m=h.props,g=m,v=h.opts.specialEasing;for(r in g)if(s=v[a=b(r)],l=g[r],Array.isArray(l)&&(s=l[1],l=g[r]=l[0]),r!==a&&(g[a]=l,delete g[r]),(u=T.cssHooks[a])&&"expand"in u)for(r in l=u.expand(l),delete g[a],l)r in g||(g[r]=l[r],v[r]=s);else v[a]=s;for(;c<d;c++)if(n=O.prefilters[c].call(h,o,m,h.opts))return y(n.stop)&&(T._queueHooks(h.elem,h.opts.queue).stop=n.stop.bind(n)),n;return T.map(m,vt,h),y(h.opts.start)&&h.opts.start.call(o,h),h.progress(h.opts.progress).done(h.opts.done,h.opts.complete).fail(h.opts.fail).always(h.opts.always),T.fx.timer(T.extend(p,{elem:o,anim:h,queue:h.opts.queue})),h}T.Animation=T.extend(O,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return be(n.elem,e,ve.exec(t),n),n}]},tweener:function(e,t){for(var n,r=0,o=(e=y(e)?(t=e,["*"]):e.match(E)).length;r<o;r++)n=e[r],O.tweeners[n]=O.tweeners[n]||[],O.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,o,i,a,s,l,u,c="width"in t||"height"in t,d=this,f={},p=e.style,h=e.nodeType&&ge(e),m=x.get(e,"fxshow");for(r in n.queue||(null==(a=T._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,T.queue(e,"fx").length||a.empty.fire()})})),t)if(o=t[r],ft.test(o)){if(delete t[r],i=i||"toggle"===o,o===(h?"hide":"show")){if("show"!==o||!m||void 0===m[r])continue;h=!0}f[r]=m&&m[r]||T.style(e,r)}if((l=!T.isEmptyObject(t))||!T.isEmptyObject(f))for(r in c&&1===e.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],null==(u=m&&m.display)&&(u=x.get(e,"display")),"none"===(c=T.css(e,"display"))&&(u?c=u:(A([e],!0),u=e.style.display||u,c=T.css(e,"display"),A([e]))),"inline"===c||"inline-block"===c&&null!=u)&&"none"===T.css(e,"float")&&(l||(d.done(function(){p.display=u}),null==u&&(c=p.display,u="none"===c?"":c)),p.display="inline-block"),n.overflow&&(p.overflow="hidden",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1,f)l||(m?"hidden"in m&&(h=m.hidden):m=x.access(e,"fxshow",{display:u}),i&&(m.hidden=!h),h&&A([e],!0),d.done(function(){for(r in h||A([e]),x.remove(e,"fxshow"),f)T.style(e,r,f[r])})),l=vt(h?m[r]:0,r,d),r in m||(m[r]=l.start,h&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?O.prefilters.unshift(e):O.prefilters.push(e)}}),T.speed=function(e,t,n){var r=e&&"object"==typeof e?T.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return T.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in T.fx.speeds?r.duration=T.fx.speeds[r.duration]:r.duration=T.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){y(r.old)&&r.old.call(this),r.queue&&T.dequeue(this,r.queue)},r},T.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ge).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){function o(){var e=O(this,T.extend({},t),a);(i||x.get(this,"finish"))&&e.stop(!0)}var i=T.isEmptyObject(t),a=T.speed(e,n,r);return o.finish=o,i||!1===a.queue?this.each(o):this.queue(a.queue,o)},stop:function(o,e,i){function a(e){var t=e.stop;delete e.stop,t(i)}return"string"!=typeof o&&(i=e,e=o,o=void 0),e&&this.queue(o||"fx",[]),this.each(function(){var e=!0,t=null!=o&&o+"queueHooks",n=T.timers,r=x.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=o&&n[t].queue!==o||(n[t].anim.stop(i),e=!1,n.splice(t,1));!e&&i||T.dequeue(this,o)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=x.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],o=T.timers,i=n?n.length:0;for(t.finish=!0,T.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===a&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<i;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),T.each(["toggle","show","hide"],function(e,r){var o=T.fn[r];T.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?o.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),T.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){T.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),T.timers=[],T.fx.tick=function(){var e,t=0,n=T.timers;for(L=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||T.fx.stop(),L=void 0},T.fx.timer=function(e){T.timers.push(e),T.fx.start()},T.fx.interval=13,T.fx.start=function(){dt||(dt=!0,ht())},T.fx.stop=function(){dt=null},T.fx.speeds={slow:600,fast:200,_default:400},T.fn.delay=function(r,e){return r=T.fx&&T.fx.speeds[r]||r,this.queue(e=e||"fx",function(e,t){var n=w.setTimeout(e,r);t.stop=function(){w.clearTimeout(n)}})},a=C.createElement("input"),D=C.createElement("select").appendChild(C.createElement("option")),a.type="checkbox",g.checkOn=""!==a.value,g.optSelected=D.selected,(a=C.createElement("input")).value="t",a.type="radio",g.radioValue="t"===a.value;var yt,bt=T.expr.attrHandle,xt=(T.fn.extend({attr:function(e,t){return d(this,T.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){T.removeAttr(this,e)})}}),T.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?T.prop(e,t,n):(1===i&&T.isXMLDoc(e)||(o=T.attrHooks[t.toLowerCase()]||(T.expr.match.bool.test(t)?yt:void 0)),void 0!==n?null===n?void T.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):!(o&&"get"in o&&null!==(r=o.get(e,t)))&&null==(r=T.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){var n;if(!g.radioValue&&"radio"===t&&l(e,"input"))return n=e.value,e.setAttribute("type",t),n&&(e.value=n),t}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(E);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),yt={set:function(e,t,n){return!1===t?T.removeAttr(e,n):e.setAttribute(n,n),n}},T.each(T.expr.match.bool.source.match(/\w+/g),function(e,t){var a=bt[t]||T.find.attr;bt[t]=function(e,t,n){var r,o,i=t.toLowerCase();return n||(o=bt[i],bt[i]=r,r=null!=a(e,t,n)?i:null,bt[i]=o),r}}),/^(?:input|select|textarea|button)$/i),wt=/^(?:a|area)$/i;function q(e){return(e.match(E)||[]).join(" ")}function H(e){return e.getAttribute&&e.getAttribute("class")||""}function Ct(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(E)||[]}T.fn.extend({prop:function(e,t){return d(this,T.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[T.propFix[e]||e]})}}),T.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&T.isXMLDoc(e)||(t=T.propFix[t]||t,o=T.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=T.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(T.propHooks.selected={get:function(e){e=e.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(e){e=e.parentNode;e&&(e.selectedIndex,e.parentNode)&&e.parentNode.selectedIndex}}),T.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){T.propFix[this.toLowerCase()]=this}),T.fn.extend({addClass:function(t){var e,n,r,o,i,a,s=0;if(y(t))return this.each(function(e){T(this).addClass(t.call(this,e,H(this)))});if((e=Ct(t)).length)for(;n=this[s++];)if(a=H(n),r=1===n.nodeType&&" "+q(a)+" "){for(i=0;o=e[i++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");a!==(a=q(r))&&n.setAttribute("class",a)}return this},removeClass:function(t){var e,n,r,o,i,a,s=0;if(y(t))return this.each(function(e){T(this).removeClass(t.call(this,e,H(this)))});if(!arguments.length)return this.attr("class","");if((e=Ct(t)).length)for(;n=this[s++];)if(a=H(n),r=1===n.nodeType&&" "+q(a)+" "){for(i=0;o=e[i++];)for(;-1<r.indexOf(" "+o+" ");)r=r.replace(" "+o+" "," ");a!==(a=q(r))&&n.setAttribute("class",a)}return this},toggleClass:function(o,t){var i=typeof o,a="string"==i||Array.isArray(o);return"boolean"==typeof t&&a?t?this.addClass(o):this.removeClass(o):y(o)?this.each(function(e){T(this).toggleClass(o.call(this,e,H(this),t),t)}):this.each(function(){var e,t,n,r;if(a)for(t=0,n=T(this),r=Ct(o);e=r[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==o&&"boolean"!=i||((e=H(this))&&x.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==o&&x.get(this,"__className__")||""))})},hasClass:function(e){for(var t,n=0,r=" "+e+" ";t=this[n++];)if(1===t.nodeType&&-1<(" "+q(H(t))+" ").indexOf(r))return!0;return!1}});function Tt(e){e.stopPropagation()}var Et=/\r/g,St=(T.fn.extend({val:function(t){var n,e,r,o=this[0];return arguments.length?(r=y(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,T(this).val()):t)?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=T.map(e,function(e){return null==e?"":e+""})),(n=T.valHooks[this.type]||T.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&void 0!==n.set(this,e,"value"))||(this.value=e)})):o?(n=T.valHooks[o.type]||T.valHooks[o.nodeName.toLowerCase()])&&"get"in n&&void 0!==(e=n.get(o,"value"))?e:"string"==typeof(e=o.value)?e.replace(Et,""):null==e?"":e:void 0}}),T.extend({valHooks:{option:{get:function(e){var t=T.find.attr(e,"value");return null!=t?t:q(T.text(e))}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,o="select-one"===e.type,i=o?null:[],a=o?r+1:n.length,s=r<0?a:o?r:0;s<a;s++)if(((t=n[s]).selected||s===r)&&!t.disabled&&(!t.parentNode.disabled||!l(t.parentNode,"optgroup"))){if(t=T(t).val(),o)return t;i.push(t)}return i},set:function(e,t){for(var n,r,o=e.options,i=T.makeArray(t),a=o.length;a--;)((r=o[a]).selected=-1<T.inArray(T.valHooks.option.get(r),i))&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),T.each(["radio","checkbox"],function(){T.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<T.inArray(T(e).val(),t)}},g.checkOn||(T.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),g.focusin="onfocusin"in w,/^(?:focusinfocus|focusoutblur)$/),kt=(T.extend(T.event,{trigger:function(e,t,n,r){var o,i,a,s,l,u,c,d=[n||C],f=W.call(e,"type")?e.type:e,p=W.call(e,"namespace")?e.namespace.split("."):[],h=c=i=n=n||C;if(3!==n.nodeType&&8!==n.nodeType&&!St.test(f+T.event.triggered)&&(-1<f.indexOf(".")&&(f=(p=f.split(".")).shift(),p.sort()),s=f.indexOf(":")<0&&"on"+f,(e=e[T.expando]?e:new T.Event(f,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=p.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:T.makeArray(t,[e]),u=T.event.special[f]||{},r||!u.trigger||!1!==u.trigger.apply(n,t))){if(!r&&!u.noBubble&&!m(n)){for(a=u.delegateType||f,St.test(a+f)||(h=h.parentNode);h;h=h.parentNode)d.push(h),i=h;i===(n.ownerDocument||C)&&d.push(i.defaultView||i.parentWindow||w)}for(o=0;(h=d[o++])&&!e.isPropagationStopped();)c=h,e.type=1<o?a:u.bindType||f,(l=(x.get(h,"events")||Object.create(null))[e.type]&&x.get(h,"handle"))&&l.apply(h,t),(l=s&&h[s])&&l.apply&&v(h)&&(e.result=l.apply(h,t),!1===e.result)&&e.preventDefault();return e.type=f,r||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),t)||!v(n)||s&&y(n[f])&&!m(n)&&((i=n[s])&&(n[s]=null),T.event.triggered=f,e.isPropagationStopped()&&c.addEventListener(f,Tt),n[f](),e.isPropagationStopped()&&c.removeEventListener(f,Tt),T.event.triggered=void 0,i)&&(n[s]=i),e.result}},simulate:function(e,t,n){n=T.extend(new T.Event,n,{type:e,isSimulated:!0});T.event.trigger(n,null,t)}}),T.fn.extend({trigger:function(e,t){return this.each(function(){T.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return T.event.trigger(e,t,n,!0)}}),g.focusin||T.each({focus:"focusin",blur:"focusout"},function(n,r){function o(e){T.event.simulate(r,e.target,T.event.fix(e))}T.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=x.access(e,r);t||e.addEventListener(n,o,!0),x.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=x.access(e,r)-1;t?x.access(e,r,t):(e.removeEventListener(n,o,!0),x.remove(e,r))}}}),w.location),At={guid:Date.now()},Nt=/\?/,jt=(T.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new w.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||T.error("Invalid XML: "+(n?T.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t},/\[\]$/),It=/\r?\n/g,Lt=/^(?:submit|button|image|reset|file)$/i,Dt=/^(?:input|select|textarea|keygen)/i;T.param=function(e,t){function n(e,t){t=y(t)?t():t,o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==t?"":t)}var r,o=[];if(null==e)return"";if(Array.isArray(e)||e.jquery&&!T.isPlainObject(e))T.each(e,function(){n(this.name,this.value)});else for(r in e)!function n(r,e,o,i){if(Array.isArray(e))T.each(e,function(e,t){o||jt.test(r)?i(r,t):n(r+"["+("object"==typeof t&&null!=t?e:"")+"]",t,o,i)});else if(o||"object"!==h(e))i(r,e);else for(var t in e)n(r+"["+t+"]",e[t],o,i)}(r,e[r],t,n);return o.join("&")},T.fn.extend({serialize:function(){return T.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=T.prop(this,"elements");return e?T.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!T(this).is(":disabled")&&Dt.test(this.nodeName)&&!Lt.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=T(this).val();return null==n?null:Array.isArray(n)?T.map(n,function(e){return{name:t.name,value:e.replace(It,"\r\n")}}):{name:t.name,value:n.replace(It,"\r\n")}}).get()}});var Ot=/%20/g,qt=/#.*$/,Ht=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Mt=/^(?:GET|HEAD)$/,_t=/^\/\//,Rt={},Bt={},Ft="*/".concat("*"),$t=C.createElement("a");function Wt(i){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,o=e.toLowerCase().match(E)||[];if(y(t))for(;n=o[r++];)"+"===n[0]?(n=n.slice(1)||"*",(i[n]=i[n]||[]).unshift(t)):(i[n]=i[n]||[]).push(t)}}function zt(t,r,o,i){var a={},s=t===Bt;function l(e){var n;return a[e]=!0,T.each(t[e]||[],function(e,t){t=t(r,o,i);return"string"!=typeof t||s||a[t]?s?!(n=t):void 0:(r.dataTypes.unshift(t),l(t),!1)}),n}return l(r.dataTypes[0])||!a["*"]&&l("*")}function Ut(e,t){var n,r,o=T.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r=r||{})[n]=t[n]);return r&&T.extend(!0,e,r),e}$t.href=kt.href,T.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:kt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(kt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ft,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":T.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ut(Ut(e,T.ajaxSettings),t):Ut(T.ajaxSettings,e)},ajaxPrefilter:Wt(Rt),ajaxTransport:Wt(Bt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0);var l,u,c,n,d,f,p,r,h=T.ajaxSetup({},t=t||{}),m=h.context||h,g=h.context&&(m.nodeType||m.jquery)?T(m):T.event,v=T.Deferred(),y=T.Callbacks("once memory"),b=h.statusCode||{},o={},i={},a="canceled",x={readyState:0,getResponseHeader:function(e){var t;if(f){if(!n)for(n={};t=Pt.exec(c);)n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return f?c:null},setRequestHeader:function(e,t){return null==f&&(e=i[e.toLowerCase()]=i[e.toLowerCase()]||e,o[e]=t),this},overrideMimeType:function(e){return null==f&&(h.mimeType=e),this},statusCode:function(e){if(e)if(f)x.always(e[x.status]);else for(var t in e)b[t]=[b[t],e[t]];return this},abort:function(e){e=e||a;return l&&l.abort(e),s(0,e),this}};if(v.promise(x),h.url=((e||h.url||kt.href)+"").replace(_t,kt.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(E)||[""],null==h.crossDomain){e=C.createElement("a");try{e.href=h.url,e.href=e.href,h.crossDomain=$t.protocol+"//"+$t.host!=e.protocol+"//"+e.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=T.param(h.data,h.traditional)),zt(Rt,h,t,x),!f){for(r in(p=T.event&&h.global)&&0==T.active++&&T.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),u=h.url.replace(qt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Ot,"+")):(e=h.url.slice(u.length),h.data&&(h.processData||"string"==typeof h.data)&&(u+=(Nt.test(u)?"&":"?")+h.data,delete h.data),!1===h.cache&&(u=u.replace(Ht,"$1"),e=(Nt.test(u)?"&":"?")+"_="+At.guid+++e),h.url=u+e),h.ifModified&&(T.lastModified[u]&&x.setRequestHeader("If-Modified-Since",T.lastModified[u]),T.etag[u])&&x.setRequestHeader("If-None-Match",T.etag[u]),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&x.setRequestHeader("Content-Type",h.contentType),x.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ft+"; q=0.01":""):h.accepts["*"]),h.headers)x.setRequestHeader(r,h.headers[r]);if(h.beforeSend&&(!1===h.beforeSend.call(m,x,h)||f))return x.abort();if(a="abort",y.add(h.complete),x.done(h.success),x.fail(h.error),l=zt(Bt,h,t,x)){if(x.readyState=1,p&&g.trigger("ajaxSend",[x,h]),f)return x;h.async&&0<h.timeout&&(d=w.setTimeout(function(){x.abort("timeout")},h.timeout));try{f=!1,l.send(o,s)}catch(e){if(f)throw e;s(-1,e)}}else s(-1,"No Transport")}return x;function s(e,t,n,r){var o,i,a,s=t;f||(f=!0,d&&w.clearTimeout(d),l=void 0,c=r||"",x.readyState=0<e?4:0,r=200<=e&&e<300||304===e,n&&(a=function(e,t,n){for(var r,o,i,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in s)if(s[o]&&s[o].test(r)){l.unshift(o);break}if(l[0]in n)i=l[0];else{for(o in n){if(!l[0]||e.converters[o+" "+l[0]]){i=o;break}a=a||o}i=i||a}if(i)return i!==l[0]&&l.unshift(i),n[i]}(h,x,n)),!r&&-1<T.inArray("script",h.dataTypes)&&T.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),a=function(e,t,n,r){var o,i,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=i,i=c.shift())if("*"===i)i=l;else if("*"!==l&&l!==i){if(!(a=u[l+" "+i]||u["* "+i]))for(o in u)if((s=o.split(" "))[1]===i&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[o]:!0!==u[o]&&(i=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+i}}}return{state:"success",data:t}}(h,a,x,r),r?(h.ifModified&&((n=x.getResponseHeader("Last-Modified"))&&(T.lastModified[u]=n),n=x.getResponseHeader("etag"))&&(T.etag[u]=n),204===e||"HEAD"===h.type?s="nocontent":304===e?s="notmodified":(s=a.state,o=a.data,r=!(i=a.error))):(i=s,!e&&s||(s="error",e<0&&(e=0))),x.status=e,x.statusText=(t||s)+"",r?v.resolveWith(m,[o,s,x]):v.rejectWith(m,[x,s,i]),x.statusCode(b),b=void 0,p&&g.trigger(r?"ajaxSuccess":"ajaxError",[x,h,r?o:i]),y.fireWith(m,[x,s]),p&&(g.trigger("ajaxComplete",[x,h]),--T.active||T.event.trigger("ajaxStop")))}},getJSON:function(e,t,n){return T.get(e,t,n,"json")},getScript:function(e,t){return T.get(e,void 0,t,"script")}}),T.each(["get","post"],function(e,o){T[o]=function(e,t,n,r){return y(t)&&(r=r||n,n=t,t=void 0),T.ajax(T.extend({url:e,type:o,dataType:r,data:t,success:n},T.isPlainObject(e)&&e))}}),T.ajaxPrefilter(function(e){for(var t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),T._evalUrl=function(e,t,n){return T.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){T.globalEval(e,t,n)}})},T.fn.extend({wrapAll:function(e){return this[0]&&(y(e)&&(e=e.call(this[0])),e=T(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return y(n)?this.each(function(e){T(this).wrapInner(n.call(this,e))}):this.each(function(){var e=T(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=y(t);return this.each(function(e){T(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){T(this).replaceWith(this.childNodes)}),this}}),T.expr.pseudos.hidden=function(e){return!T.expr.pseudos.visible(e)},T.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},T.ajaxSettings.xhr=function(){try{return new w.XMLHttpRequest}catch(e){}};var Xt={0:200,1223:204},Qt=T.ajaxSettings.xhr(),Yt=(g.cors=!!Qt&&"withCredentials"in Qt,g.ajax=Qt=!!Qt,T.ajaxTransport(function(o){var i,a;if(g.cors||Qt&&!o.crossDomain)return{send:function(e,t){var n,r=o.xhr();if(r.open(o.type,o.url,o.async,o.username,o.password),o.xhrFields)for(n in o.xhrFields)r[n]=o.xhrFields[n];for(n in o.mimeType&&r.overrideMimeType&&r.overrideMimeType(o.mimeType),o.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);i=function(e){return function(){i&&(i=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Xt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=i(),a=r.onerror=r.ontimeout=i("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&w.setTimeout(function(){i&&a()})},i=i("abort");try{r.send(o.hasContent&&o.data||null)}catch(e){if(i)throw e}},abort:function(){i&&i()}}}),T.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),T.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return T.globalEval(e),e}}}),T.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),T.ajaxTransport("script",function(n){var r,o;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=T("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",o=function(e){r.remove(),o=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){o&&o()}}}),[]),Vt=/(=)\?(?=&|$)|\?\?/,Gt=(T.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||T.expando+"_"+At.guid++;return this[e]=!0,e}}),T.ajaxPrefilter("json jsonp",function(e,t,n){var r,o,i,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Nt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return i||T.error(r+" was not called"),i[0]},e.dataTypes[0]="json",o=w[r],w[r]=function(){i=arguments},n.always(function(){void 0===o?T(w).removeProp(r):w[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,Yt.push(r)),i&&y(o)&&o(i[0]),i=o=void 0}),"script"}),g.createHTMLDocument=((e=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===e.childNodes.length),T.parseHTML=function(e,t,n){var r;return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(g.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),r=!n&&[],(n=K.exec(e))?[t.createElement(n[1])]:(n=ke([e],t,r),r&&r.length&&T(r).remove(),T.merge([],n.childNodes)))},T.fn.load=function(e,t,n){var r,o,i,a=this,s=e.indexOf(" ");return-1<s&&(r=q(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),0<a.length&&T.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(r?T("<div>").append(T.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},T.expr.pseudos.animated=function(t){return T.grep(T.timers,function(e){return t===e.elem}).length},T.offset={setOffset:function(e,t,n){var r,o,i,a,s=T.css(e,"position"),l=T(e),u={};"static"===s&&(e.style.position="relative"),i=l.offset(),r=T.css(e,"top"),a=T.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1<(r+a).indexOf("auto")?(o=(s=l.position()).top,s.left):(o=parseFloat(r)||0,parseFloat(a)||0),null!=(t=y(t)?t.call(e,n,T.extend({},i)):t).top&&(u.top=t.top-i.top+o),null!=t.left&&(u.left=t.left-i.left+s),"using"in t?t.using.call(e,u):l.css(u)}},T.fn.extend({offset:function(t){var e,n;return arguments.length?void 0===t?this:this.each(function(e){T.offset.setOffset(this,t,e)}):(n=this[0])?n.getClientRects().length?(e=n.getBoundingClientRect(),n=n.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],o={top:0,left:0};if("fixed"===T.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===T.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((o=T(e).offset()).top+=T.css(e,"borderTopWidth",!0),o.left+=T.css(e,"borderLeftWidth",!0))}return{top:t.top-o.top-T.css(r,"marginTop",!0),left:t.left-o.left-T.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===T.css(e,"position");)e=e.offsetParent;return e||S})}}),T.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,o){var i="pageYOffset"===o;T.fn[t]=function(e){return d(this,function(e,t,n){var r;if(m(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[o]:e[t];r?r.scrollTo(i?r.pageXOffset:n,i?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),T.each(["top","left"],function(e,n){T.cssHooks[n]=Je(g.pixelPosition,function(e,t){if(t)return t=Ze(e,n),Ye.test(t)?T(e).position()[n]+"px":t})}),T.each({Height:"height",Width:"width"},function(a,s){T.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,i){T.fn[i]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),o=r||(!0===e||!0===t?"margin":"border");return d(this,function(e,t,n){var r;return m(e)?0===i.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?T.css(e,t,o):T.style(e,t,n,o)},s,n?e:void 0,n)}})}),T.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){T.fn[t]=function(e){return this.on(t,e)}}),T.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),T.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){T.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g),Kt=(T.proxy=function(e,t){var n,r;if("string"==typeof t&&(r=e[t],t=e,e=r),y(e))return n=s.call(arguments,2),(r=function(){return e.apply(t||this,n.concat(s.call(arguments)))}).guid=e.guid=e.guid||T.guid++,r},T.holdReady=function(e){e?T.readyWait++:T.ready(!0)},T.isArray=Array.isArray,T.parseJSON=JSON.parse,T.nodeName=l,T.isFunction=y,T.isWindow=m,T.camelCase=b,T.type=h,T.now=Date.now,T.isNumeric=function(e){var t=T.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},T.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return T}),w.jQuery),Zt=w.$;return T.noConflict=function(e){return w.$===T&&(w.$=Zt),e&&w.jQuery===T&&(w.jQuery=Kt),T},void 0===P&&(w.jQuery=w.$=T),T}),function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof exports?module.exports=t(e):e.Gumshoe=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,function(c){"use strict";function d(e){e&&e.sort(function(e,t){return r(e.content)<r(t.content)?-1:1})}function n(){return c.innerHeight+c.pageYOffset>=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)}function f(e,t){var n;e&&(n=e.nav.closest("li"))&&(n.classList.remove(t.navClass),e.content.classList.remove(t.contentClass),o(n,t),h("gumshoeDeactivate",n,{link:e.nav,content:e.content,settings:t}))}var p={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},h=function(e,t,n){n.settings.events&&(e=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n}),t.dispatchEvent(e))},r=function(e){var t=0;if(e.offsetParent)for(;e;)t+=e.offsetTop,e=e.offsetParent;return 0<=t?t:0},m=function(e,t,n){e=e.getBoundingClientRect(),t="function"==typeof(t=t).offset?parseFloat(t.offset()):parseFloat(t.offset);return n?parseInt(e.bottom,10)<(c.innerHeight||document.documentElement.clientHeight):parseInt(e.top,10)<=t},g=function(e,t){return!(!n()||!m(e.content,t,!0))},o=function(e,t){t.nested&&(e=e.parentNode.closest("li"))&&(e.classList.remove(t.nestedClass),o(e,t))},v=function(e,t){t.nested&&(e=e.parentNode.closest("li"))&&(e.classList.add(t.nestedClass),v(e,t))};return function(e,t){function n(e){s&&c.cancelAnimationFrame(s),s=c.requestAnimationFrame(u.detect)}function r(e){s&&c.cancelAnimationFrame(s),s=c.requestAnimationFrame(function(){d(i),u.detect()})}var o,i,a,s,l,u={setup:function(){o=document.querySelectorAll(e),i=[],Array.prototype.forEach.call(o,function(e){var t=document.getElementById(decodeURIComponent(e.hash.substr(1)));t&&i.push({nav:e,content:t})}),d(i)}};u.detect=function(){var e,t,n,r=function(e,t){var n=e[e.length-1];if(g(n,t))return n;for(var r=e.length-1;0<=r;r--)if(m(e[r].content,t))return e[r]}(i,l);r?a&&r.content===a.content||(f(a,l),t=l,(e=r)&&(n=e.nav.closest("li"))&&(n.classList.add(t.navClass),e.content.classList.add(t.contentClass),v(n,t),h("gumshoeActivate",n,{link:e.nav,content:e.content,settings:t})),a=r):a&&(f(a,l),a=null)},u.destroy=function(){a&&f(a,l),c.removeEventListener("scroll",n,!1),l.reflow&&c.removeEventListener("resize",r,!1),l=s=a=o=i=null};return l=function(){var n={};return Array.prototype.forEach.call(arguments,function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}}),n}(p,t||{}),u.setup(),u.detect(),c.addEventListener("scroll",n,!1),l.reflow&&c.addEventListener("resize",r,!1),u}}),function(e,c){var r,t=e.jQuery||e.Cowboy||(e.Cowboy={});t.throttle=r=function(o,i,a,s){var l,u=0;function e(){var e=this,t=+new Date-u,n=arguments;function r(){u=+new Date,a.apply(e,n)}s&&!l&&r(),l&&clearTimeout(l),s===c&&o<t?r():!0!==i&&(l=setTimeout(s?function(){l=c}:r,s===c?o-t:o))}return"boolean"!=typeof i&&(s=a,a=i,i=c),t.guid&&(e.guid=a.guid=a.guid||t.guid++),e},t.debounce=function(e,t,n){return n===c?r(e,t,!1):r(e,n,!1!==t)}}(this),function(i){"use strict";i.fn.fitVids=function(e){var t,n,o={customSelector:null,ignore:null};return document.getElementById("fit-vids-style")||(t=document.head||document.getElementsByTagName("head")[0],(n=document.createElement("div")).innerHTML='<p>x</p><style id="fit-vids-style">.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}</style>',t.appendChild(n.childNodes[1])),e&&i.extend(o,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"],r=(o.customSelector&&e.push(o.customSelector),".fitvidsignore"),e=(o.ignore&&(r=r+", "+o.ignore),i(this).find(e.join(",")));(e=(e=e.not("object object")).not(r)).each(function(e){var t,n=i(this);0<n.parents(r).length||"embed"===this.tagName.toLowerCase()&&n.parent("object").length||n.parent(".fluid-width-video-wrapper").length||(n.css("height")||n.css("width")||!isNaN(n.attr("height"))&&!isNaN(n.attr("width"))||(n.attr("height",9),n.attr("width",16)),t=("object"===this.tagName.toLowerCase()||n.attr("height")&&!isNaN(parseInt(n.attr("height"),10))?parseInt(n.attr("height"),10):n.height())/(isNaN(parseInt(n.attr("width"),10))?n.width():parseInt(n.attr("width"),10)),n.attr("id")||n.attr("id","fitvid"+e),n.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*t+"%"),n.removeAttr("height").removeAttr("width"))})})}}(window.jQuery||window.Zepto),$(function(){var n,r,e,o,t=$("nav.greedy-nav .greedy-nav__toggle"),i=$("nav.greedy-nav .visible-links"),a=$("nav.greedy-nav .hidden-links"),s=$("nav.greedy-nav"),l=$("nav.greedy-nav .site-logo"),u=$("nav.greedy-nav .site-logo img"),c=$("nav.greedy-nav .site-title"),d=$("nav.greedy-nav button.search__toggle");function f(){function t(e,t){r+=t,n+=1,o.push(r)}r=n=0,e=1e3,o=[],i.children().outerWidth(t),a.children().each(function(){var e;(e=(e=$(this)).clone()).css("visibility","hidden"),i.append(e),t(0,e.outerWidth()),e.remove()})}f();var p,h,m,g,v=$(window).width(),y=v<768?0:v<1024?1:v<1280?2:3;function b(){var e=(v=$(window).width())<768?0:v<1024?1:v<1280?2:3;e!==y&&f(),y=e,h=i.children().length,p=s.innerWidth()-(0!==l.length?l.outerWidth(!0):0)-c.outerWidth(!0)-(0!==d.length?d.outerWidth(!0):0)-(h!==o.length?t.outerWidth(!0):0),m=o[h-1],p<m?(i.children().last().prependTo(a),--h,b()):p+(h===o.length-1?t.outerWidth(!0):0)>o[h]&&(a.children().first().appendTo(i),h+=1,b()),t.attr("count",n-h),h===n?t.addClass("hidden"):t.removeClass("hidden")}$(window).resize(function(){b()}),t.on("click",function(){a.toggleClass("hidden"),$(this).toggleClass("close"),clearTimeout(g)}),a.on("click",function(){a.addClass("hidden"),t.removeClass("close")}).on("mouseleave",function(){g=setTimeout(function(){a.addClass("hidden"),$(".greedy-nav__toggle").removeClass("close")},e)}).on("mouseenter",function(){clearTimeout(g)}),0===u.length||u[0].complete||0!==u[0].naturalWidth?b():u.one("load error",b)}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(window.jQuery||window.Zepto)}(function(u){function e(){}function c(e,t){h.ev.on("mfp"+e+T,t)}function d(e,t,n,r){var o=document.createElement("div");return o.className="mfp-"+e,n&&(o.innerHTML=n),r?t&&t.appendChild(o):(o=u(o),t&&o.appendTo(t)),o}function f(e,t){h.ev.triggerHandler("mfp"+e,t),h.st.callbacks&&(e=e.charAt(0).toLowerCase()+e.slice(1),h.st.callbacks[e])&&h.st.callbacks[e].apply(h,u.isArray(t)?t:[t])}function p(e){return e===n&&h.currTemplate.closeBtn||(h.currTemplate.closeBtn=u(h.st.closeMarkup.replace("%title%",h.st.tClose)),n=e),h.currTemplate.closeBtn}function i(){u.magnificPopup.instance||((h=new e).init(),u.magnificPopup.instance=h)}function a(){y&&(v.after(y.addClass(l)).detach(),y=null)}function o(){b&&u(document.body).removeClass(b)}function t(){o(),h.req&&h.req.abort()}var h,r,m,s,g,n,l,v,y,b,x="Close",P="BeforeClose",w="MarkupParse",C="Open",T=".mfp",E="mfp-ready",M="mfp-removing",S="mfp-prevent-close",k=!!window.jQuery,A=u(window),N=(u.magnificPopup={instance:null,proto:e.prototype={constructor:e,init:function(){var e=navigator.appVersion;h.isLowIE=h.isIE8=document.all&&!document.addEventListener,h.isAndroid=/android/gi.test(e),h.isIOS=/iphone|ipad|ipod/gi.test(e),h.supportsTransition=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1}(),h.probablyMobile=h.isAndroid||h.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),m=u(document),h.popupsCache={}},open:function(e){if(!1===e.isObj){h.items=e.items.toArray(),h.index=0;for(var t,n=e.items,r=0;r<n.length;r++)if((t=(t=n[r]).parsed?t.el[0]:t)===e.el[0]){h.index=r;break}}else h.items=u.isArray(e.items)?e.items:[e.items],h.index=e.index||0;if(!h.isOpen){h.types=[],g="",e.mainEl&&e.mainEl.length?h.ev=e.mainEl.eq(0):h.ev=m,e.key?(h.popupsCache[e.key]||(h.popupsCache[e.key]={}),h.currTemplate=h.popupsCache[e.key]):h.currTemplate={},h.st=u.extend(!0,{},u.magnificPopup.defaults,e),h.fixedContentPos="auto"===h.st.fixedContentPos?!h.probablyMobile:h.st.fixedContentPos,h.st.modal&&(h.st.closeOnContentClick=!1,h.st.closeOnBgClick=!1,h.st.showCloseBtn=!1,h.st.enableEscapeKey=!1),h.bgOverlay||(h.bgOverlay=d("bg").on("click"+T,function(){h.close()}),h.wrap=d("wrap").attr("tabindex",-1).on("click"+T,function(e){h._checkIfClose(e.target)&&h.close()}),h.container=d("container",h.wrap)),h.contentContainer=d("content"),h.st.preloader&&(h.preloader=d("preloader",h.container,h.st.tLoading));var o=u.magnificPopup.modules;for(r=0;r<o.length;r++){var i=(i=o[r]).charAt(0).toUpperCase()+i.slice(1);h["init"+i].call(h)}f("BeforeOpen"),h.st.showCloseBtn&&(h.st.closeBtnInside?(c(w,function(e,t,n,r){n.close_replaceWith=p(r.type)}),g+=" mfp-close-btn-in"):h.wrap.append(p())),h.st.alignTop&&(g+=" mfp-align-top"),h.fixedContentPos?h.wrap.css({overflow:h.st.overflowY,overflowX:"hidden",overflowY:h.st.overflowY}):h.wrap.css({top:A.scrollTop(),position:"absolute"}),!1!==h.st.fixedBgPos&&("auto"!==h.st.fixedBgPos||h.fixedContentPos)||h.bgOverlay.css({height:m.height(),position:"absolute"}),h.st.enableEscapeKey&&m.on("keyup"+T,function(e){27===e.keyCode&&h.close()}),A.on("resize"+T,function(){h.updateSize()}),h.st.closeOnContentClick||(g+=" mfp-auto-cursor"),g&&h.wrap.addClass(g);var a=h.wH=A.height(),s={},l=(h.fixedContentPos&&h._hasScrollBar(a)&&(l=h._getScrollbarSize())&&(s.marginRight=l),h.fixedContentPos&&(h.isIE7?u("body, html").css("overflow","hidden"):s.overflow="hidden"),h.st.mainClass);return h.isIE7&&(l+=" mfp-ie7"),l&&h._addClassToMFP(l),h.updateItemHTML(),f("BuildControls"),u("html").css(s),h.bgOverlay.add(h.wrap).prependTo(h.st.prependTo||u(document.body)),h._lastFocusedEl=document.activeElement,setTimeout(function(){h.content?(h._addClassToMFP(E),h._setFocus()):h.bgOverlay.addClass(E),m.on("focusin"+T,h._onFocusIn)},16),h.isOpen=!0,h.updateSize(a),f(C),e}h.updateItemHTML()},close:function(){h.isOpen&&(f(P),h.isOpen=!1,h.st.removalDelay&&!h.isLowIE&&h.supportsTransition?(h._addClassToMFP(M),setTimeout(function(){h._close()},h.st.removalDelay)):h._close())},_close:function(){f(x);var e=M+" "+E+" ";h.bgOverlay.detach(),h.wrap.detach(),h.container.empty(),h.st.mainClass&&(e+=h.st.mainClass+" "),h._removeClassFromMFP(e),h.fixedContentPos&&(e={marginRight:""},h.isIE7?u("body, html").css("overflow",""):e.overflow="",u("html").css(e)),m.off("keyup.mfp focusin"+T),h.ev.off(T),h.wrap.attr("class","mfp-wrap").removeAttr("style"),h.bgOverlay.attr("class","mfp-bg"),h.container.attr("class","mfp-container"),!h.st.showCloseBtn||h.st.closeBtnInside&&!0!==h.currTemplate[h.currItem.type]||h.currTemplate.closeBtn&&h.currTemplate.closeBtn.detach(),h.st.autoFocusLast&&h._lastFocusedEl&&u(h._lastFocusedEl).focus(),h.currItem=null,h.content=null,h.currTemplate=null,h.prevHeight=0,f("AfterClose")},updateSize:function(e){var t;h.isIOS?(t=document.documentElement.clientWidth/window.innerWidth,t=window.innerHeight*t,h.wrap.css("height",t),h.wH=t):h.wH=e||A.height(),h.fixedContentPos||h.wrap.css("height",h.wH),f("Resize")},updateItemHTML:function(){var e=h.items[h.index],t=(h.contentContainer.detach(),h.content&&h.content.detach(),(e=e.parsed?e:h.parseEl(h.index)).type),n=(f("BeforeChange",[h.currItem?h.currItem.type:"",t]),h.currItem=e,h.currTemplate[t]||(n=!!h.st[t]&&h.st[t].markup,f("FirstMarkupParse",n),h.currTemplate[t]=!n||u(n)),s&&s!==e.type&&h.container.removeClass("mfp-"+s+"-holder"),h["get"+t.charAt(0).toUpperCase()+t.slice(1)](e,h.currTemplate[t]));h.appendContent(n,t),e.preloaded=!0,f("Change",e),s=e.type,h.container.prepend(h.contentContainer),f("AfterChange")},appendContent:function(e,t){(h.content=e)?h.st.showCloseBtn&&h.st.closeBtnInside&&!0===h.currTemplate[t]?h.content.find(".mfp-close").length||h.content.append(p()):h.content=e:h.content="",f("BeforeAppend"),h.container.addClass("mfp-"+t+"-holder"),h.contentContainer.append(h.content)},parseEl:function(e){var t,n=h.items[e];if((n=n.tagName?{el:u(n)}:(t=n.type,{data:n,src:n.src})).el){for(var r=h.types,o=0;o<r.length;o++)if(n.el.hasClass("mfp-"+r[o])){t=r[o];break}n.src=n.el.attr("data-mfp-src"),n.src||(n.src=n.el.attr("href"))}return n.type=t||h.st.type||"inline",n.index=e,n.parsed=!0,h.items[e]=n,f("ElementParse",n),h.items[e]},addGroup:function(t,n){function e(e){e.mfpEl=this,h._openClick(e,t,n)}var r="click.magnificPopup";(n=n||{}).mainEl=t,n.items?(n.isObj=!0,t.off(r).on(r,e)):(n.isObj=!1,n.delegate?t.off(r).on(r,n.delegate,e):(n.items=t).off(r).on(r,e))},_openClick:function(e,t,n){var r=(void 0!==n.midClick?n:u.magnificPopup.defaults).midClick;if(r||!(2===e.which||e.ctrlKey||e.metaKey||e.altKey||e.shiftKey)){r=(void 0!==n.disableOn?n:u.magnificPopup.defaults).disableOn;if(r)if(u.isFunction(r)){if(!r.call(h))return!0}else if(A.width()<r)return!0;e.type&&(e.preventDefault(),h.isOpen)&&e.stopPropagation(),n.el=u(e.mfpEl),n.delegate&&(n.items=t.find(n.delegate)),h.open(n)}},updateStatus:function(e,t){var n;h.preloader&&(r!==e&&h.container.removeClass("mfp-s-"+r),n={status:e,text:t=t||"loading"!==e?t:h.st.tLoading},f("UpdateStatus",n),e=n.status,h.preloader.html(t=n.text),h.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),h.container.addClass("mfp-s-"+e),r=e)},_checkIfClose:function(e){if(!u(e).hasClass(S)){var t=h.st.closeOnContentClick,n=h.st.closeOnBgClick;if(t&&n)return!0;if(!h.content||u(e).hasClass("mfp-close")||h.preloader&&e===h.preloader[0])return!0;if(e===h.content[0]||u.contains(h.content[0],e)){if(t)return!0}else if(n&&u.contains(document,e))return!0;return!1}},_addClassToMFP:function(e){h.bgOverlay.addClass(e),h.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),h.wrap.removeClass(e)},_hasScrollBar:function(e){return(h.isIE7?m.height():document.body.scrollHeight)>(e||A.height())},_setFocus:function(){(h.st.focus?h.content.find(h.st.focus).eq(0):h.wrap).focus()},_onFocusIn:function(e){if(e.target!==h.wrap[0]&&!u.contains(h.wrap[0],e.target))return h._setFocus(),!1},_parseMarkup:function(o,e,t){var i;t.data&&(e=u.extend(t.data,e)),f(w,[o,e,t]),u.each(e,function(e,t){if(void 0===t||!1===t)return!0;var n,r;1<(i=e.split("_")).length?0<(n=o.find(T+"-"+i[0])).length&&("replaceWith"===(r=i[1])?n[0]!==t[0]&&n.replaceWith(t):"img"===r?n.is("img")?n.attr("src",t):n.replaceWith(u("<img>").attr("src",t).attr("class",n.attr("class"))):n.attr(i[1],t)):o.find(T+"-"+e).html(t)})},_getScrollbarSize:function(){var e;return void 0===h.scrollbarSize&&((e=document.createElement("div")).style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),h.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),h.scrollbarSize}},modules:[],open:function(e,t){return i(),(e=e?u.extend(!0,{},e):{}).isObj=!0,e.index=t||0,this.instance.open(e)},close:function(){return u.magnificPopup.instance&&u.magnificPopup.instance.close()},registerModule:function(e,t){t.options&&(u.magnificPopup.defaults[e]=t.options),u.extend(this.proto,t.proto),this.modules.push(e)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">×</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},u.fn.magnificPopup=function(e){i();var t,n,r,o=u(this);return"string"==typeof e?"open"===e?(t=k?o.data("magnificPopup"):o[0].magnificPopup,n=parseInt(arguments[1],10)||0,r=t.items?t.items[n]:(r=o,(r=t.delegate?r.find(t.delegate):r).eq(n)),h._openClick({mfpEl:r},o,t)):h.isOpen&&h[e].apply(h,Array.prototype.slice.call(arguments,1)):(e=u.extend(!0,{},e),k?o.data("magnificPopup",e):o[0].magnificPopup=e,h.addGroup(o,e)),o},"inline"),j=(u.magnificPopup.registerModule(N,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){h.types.push(N),c(x+"."+N,function(){a()})},getInline:function(e,t){var n,r,o;return a(),e.src?(n=h.st.inline,(r=u(e.src)).length?((o=r[0].parentNode)&&o.tagName&&(v||(l=n.hiddenClass,v=d(l),l="mfp-"+l),y=r.after(v).detach().removeClass(l)),h.updateStatus("ready")):(h.updateStatus("error",n.tNotFound),r=u("<div>")),e.inlineElement=r):(h.updateStatus("ready"),h._parseMarkup(t,{},e),t)}}}),"ajax");u.magnificPopup.registerModule(j,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){h.types.push(j),b=h.st.ajax.cursor,c(x+"."+j,t),c("BeforeChange."+j,t)},getAjax:function(r){b&&u(document.body).addClass(b),h.updateStatus("loading");var e=u.extend({url:r.src,success:function(e,t,n){e={data:e,xhr:n};f("ParseAjax",e),h.appendContent(u(e.data),j),r.finished=!0,o(),h._setFocus(),setTimeout(function(){h.wrap.addClass(E)},16),h.updateStatus("ready"),f("AjaxContentAdded")},error:function(){o(),r.finished=r.loadError=!0,h.updateStatus("error",h.st.ajax.tError.replace("%url%",r.src))}},h.st.ajax.settings);return h.req=u.ajax(e),""}}});var I;u.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var e=h.st.image,t=".image";h.types.push("image"),c(C+t,function(){"image"===h.currItem.type&&e.cursor&&u(document.body).addClass(e.cursor)}),c(x+t,function(){e.cursor&&u(document.body).removeClass(e.cursor),A.off("resize"+T)}),c("Resize"+t,h.resizeImage),h.isLowIE&&c("AfterChange",h.resizeImage)},resizeImage:function(){var e,t=h.currItem;t&&t.img&&h.st.image.verticalFit&&(e=0,h.isLowIE&&(e=parseInt(t.img.css("padding-top"),10)+parseInt(t.img.css("padding-bottom"),10)),t.img.css("max-height",h.wH-e))},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,I&&clearInterval(I),e.isCheckingImgSize=!1,f("ImageHasSize",e),e.imgHidden)&&(h.content&&h.content.removeClass("mfp-loading"),e.imgHidden=!1)},findImageSize:function(t){function n(e){I&&clearInterval(I),I=setInterval(function(){0<o.naturalWidth?h._onImageHasSize(t):(200<r&&clearInterval(I),3===++r?n(10):40===r?n(50):100===r&&n(500))},e)}var r=0,o=t.img[0];n(1)},getImage:function(e,t){function n(){e&&(e.img[0].complete?(e.img.off(".mfploader"),e===h.currItem&&(h._onImageHasSize(e),h.updateStatus("ready")),e.hasSize=!0,e.loaded=!0,f("ImageLoadComplete")):++i<200?setTimeout(n,100):r())}function r(){e&&(e.img.off(".mfploader"),e===h.currItem&&(h._onImageHasSize(e),h.updateStatus("error",a.tError.replace("%url%",e.src))),e.hasSize=!0,e.loaded=!0,e.loadError=!0)}var o,i=0,a=h.st.image,s=t.find(".mfp-img");return s.length&&((o=document.createElement("img")).className="mfp-img",e.el&&e.el.find("img").length&&(o.alt=e.el.find("img").attr("alt")),e.img=u(o).on("load.mfploader",n).on("error.mfploader",r),o.src=e.src,s.is("img")&&(e.img=e.img.clone()),0<(o=e.img[0]).naturalWidth?e.hasSize=!0:o.width||(e.hasSize=!1)),h._parseMarkup(t,{title:function(e){if(e.data&&void 0!==e.data.title)return e.data.title;var t=h.st.image.titleSrc;if(t){if(u.isFunction(t))return t.call(h,e);if(e.el)return e.el.attr(t)||""}return""}(e),img_replaceWith:e.img},e),h.resizeImage(),e.hasSize?(I&&clearInterval(I),e.loadError?(t.addClass("mfp-loading"),h.updateStatus("error",a.tError.replace("%url%",e.src))):(t.removeClass("mfp-loading"),h.updateStatus("ready"))):(h.updateStatus("loading"),e.loading=!0,e.hasSize||(e.imgHidden=!0,t.addClass("mfp-loading"),h.findImageSize(e))),t}}});function L(e){var t;h.currTemplate[q]&&(t=h.currTemplate[q].find("iframe")).length&&(e||(t[0].src="//about:blank"),h.isIE8)&&t.css("display",e?"block":"none")}function D(e){var t=h.items.length;return t-1<e?e-t:e<0?t+e:e}function _(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)}u.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,t,n,r,o,i,a=h.st.zoom,s=".zoom";a.enabled&&h.supportsTransition&&(t=a.duration,n=function(e){var e=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),t="all "+a.duration/1e3+"s "+a.easing,n={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return n["-webkit-"+r]=n["-moz-"+r]=n["-o-"+r]=n[r]=t,e.css(n),e},r=function(){h.content.css("visibility","visible")},c("BuildControls"+s,function(){h._allowZoom()&&(clearTimeout(o),h.content.css("visibility","hidden"),(e=h._getItemToZoom())?((i=n(e)).css(h._getOffset()),h.wrap.append(i),o=setTimeout(function(){i.css(h._getOffset(!0)),o=setTimeout(function(){r(),setTimeout(function(){i.remove(),e=i=null,f("ZoomAnimationEnded")},16)},t)},16)):r())}),c(P+s,function(){if(h._allowZoom()){if(clearTimeout(o),h.st.removalDelay=t,!e){if(!(e=h._getItemToZoom()))return;i=n(e)}i.css(h._getOffset(!0)),h.wrap.append(i),h.content.css("visibility","hidden"),setTimeout(function(){i.css(h._getOffset())},16)}}),c(x+s,function(){h._allowZoom()&&(r(),i&&i.remove(),e=null)}))},_allowZoom:function(){return"image"===h.currItem.type},_getItemToZoom:function(){return!!h.currItem.hasSize&&h.currItem.img},_getOffset:function(e){var e=e?h.currItem.img:h.st.zoom.opener(h.currItem.el||h.currItem),t=e.offset(),n=parseInt(e.css("padding-top"),10),r=parseInt(e.css("padding-bottom"),10),e=(t.top-=u(window).scrollTop()-n,{width:e.width(),height:(k?e.innerHeight():e[0].offsetHeight)-r-n});return(O=void 0===O?void 0!==document.createElement("p").style.MozTransform:O)?e["-moz-transform"]=e.transform="translate("+t.left+"px,"+t.top+"px)":(e.left=t.left,e.top=t.top),e}}});var O,q="iframe",H=(u.magnificPopup.registerModule(q,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){h.types.push(q),c("BeforeChange",function(e,t,n){t!==n&&(t===q?L():n===q&&L(!0))}),c(x+"."+q,function(){L()})},getIframe:function(e,t){var n=e.src,r=h.st.iframe,o=(u.each(r.patterns,function(){if(-1<n.indexOf(this.index))return this.id&&(n="string"==typeof this.id?n.substr(n.lastIndexOf(this.id)+this.id.length,n.length):this.id.call(this,n)),n=this.src.replace("%id%",n),!1}),{});return r.srcAction&&(o[r.srcAction]=n),h._parseMarkup(t,o,e),h.updateStatus("ready"),t}}}),u.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var i=h.st.gallery,e=".mfp-gallery";if(h.direction=!0,!i||!i.enabled)return!1;g+=" mfp-gallery",c(C+e,function(){i.navigateByImgClick&&h.wrap.on("click"+e,".mfp-img",function(){if(1<h.items.length)return h.next(),!1}),m.on("keydown"+e,function(e){37===e.keyCode?h.prev():39===e.keyCode&&h.next()})}),c("UpdateStatus"+e,function(e,t){t.text&&(t.text=_(t.text,h.currItem.index,h.items.length))}),c(w+e,function(e,t,n,r){var o=h.items.length;n.counter=1<o?_(i.tCounter,r.index,o):""}),c("BuildControls"+e,function(){var e,t;1<h.items.length&&i.arrows&&!h.arrowLeft&&(t=i.arrowMarkup,e=h.arrowLeft=u(t.replace(/%title%/gi,i.tPrev).replace(/%dir%/gi,"left")).addClass(S),t=h.arrowRight=u(t.replace(/%title%/gi,i.tNext).replace(/%dir%/gi,"right")).addClass(S),e.click(function(){h.prev()}),t.click(function(){h.next()}),h.container.append(e.add(t)))}),c("Change"+e,function(){h._preloadTimeout&&clearTimeout(h._preloadTimeout),h._preloadTimeout=setTimeout(function(){h.preloadNearbyImages(),h._preloadTimeout=null},16)}),c(x+e,function(){m.off(e),h.wrap.off("click"+e),h.arrowRight=h.arrowLeft=null})},next:function(){h.direction=!0,h.index=D(h.index+1),h.updateItemHTML()},prev:function(){h.direction=!1,h.index=D(h.index-1),h.updateItemHTML()},goTo:function(e){h.direction=e>=h.index,h.index=e,h.updateItemHTML()},preloadNearbyImages:function(){for(var e=h.st.gallery.preload,t=Math.min(e[0],h.items.length),n=Math.min(e[1],h.items.length),r=1;r<=(h.direction?n:t);r++)h._preloadItem(h.index+r);for(r=1;r<=(h.direction?t:n);r++)h._preloadItem(h.index-r)},_preloadItem:function(e){var t;e=D(e),h.items[e].preloaded||((t=h.items[e]).parsed||(t=h.parseEl(e)),f("LazyLoad",t),"image"===t.type&&(t.img=u('<img class="mfp-img" />').on("load.mfploader",function(){t.hasSize=!0}).on("error.mfploader",function(){t.hasSize=!0,t.loadError=!0,f("LazyLoadError",t)}).attr("src",t.src)),t.preloaded=!0)}}}),"retina");u.magnificPopup.registerModule(H,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){var n,r;1<window.devicePixelRatio&&(n=h.st.retina,r=n.ratio,1<(r=isNaN(r)?r():r))&&(c("ImageHasSize."+H,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/r,width:"100%"})}),c("ElementParse."+H,function(e,t){t.src=n.replaceSrc(t,r)}))}}}),i()}),function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,function(w){"use strict";function C(){var n={};return Array.prototype.forEach.call(arguments,function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}}),n}function i(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),r=n.length,o=-1,i="",a=n.charCodeAt(0);++o<r;){if(0===(t=n.charCodeAt(o)))throw new InvalidCharacterError("Invalid character: the input contains U+0000.");1<=t&&t<=31||127==t||0===o&&48<=t&&t<=57||1===o&&48<=t&&t<=57&&45===a?i+="\\"+t.toString(16)+" ":i+=128<=t||45===t||95===t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122?n.charAt(o):"\\"+n.charAt(o)}return"#"+i}function T(e,t,n,r){t.emitEvents&&"function"==typeof w.CustomEvent&&(t=new CustomEvent(e,{bubbles:!0,detail:{anchor:n,toggle:r}}),document.dispatchEvent(t))}var E={ignore:"[data-scroll-ignore]",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:"easeInOutCubic",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},S=function(e){return parseInt(w.getComputedStyle(e).height,10)},k=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)};return function(r,e){function t(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&"closest"in e.target&&(o=e.target.closest(r))&&"a"===o.tagName.toLowerCase()&&!e.target.closest(v.ignore)&&o.hostname===w.location.hostname&&o.pathname===w.location.pathname&&/#/.test(o.href)){var t,n;try{n=i(decodeURIComponent(o.hash))}catch(e){n=i(o.hash)}if("#"===n){if(!v.topOnEmptyHash)return;t=document.documentElement}else t=document.querySelector(n);(t=t||"#top"!==n?t:document.documentElement)&&(e.preventDefault(),n=v,history.replaceState&&n.updateURL&&!history.state&&(e=(e=w.location.hash)||"",history.replaceState({smoothScroll:JSON.stringify(n),anchor:e||w.pageYOffset},document.title,e||w.location.href)),x.animateScroll(t,o))}}function n(e){var t;null===history.state||!history.state.smoothScroll||history.state.smoothScroll!==JSON.stringify(v)||"string"==typeof(t=history.state.anchor)&&t&&!(t=document.querySelector(i(history.state.anchor)))||x.animateScroll(t,null,{updateURL:!1})}var v,o,y,b,x={cancelScroll:function(e){cancelAnimationFrame(b),b=null,e||T("scrollCancel",v)}};x.animateScroll=function(r,o,e){x.cancelScroll();var i,a,s,l,u,c,d,f,p,h,t,m=C(v||E,e||{}),g="[object Number]"===Object.prototype.toString.call(r),e=g||!r.tagName?null:r;(g||e)&&(i=w.pageYOffset,m.header&&!y&&(y=document.querySelector(m.header)),t=(t=y)?S(t)+t.offsetTop:0,a=g?r:function(e,t,n,r){var o=0;if(e.offsetParent)for(;o+=e.offsetTop,e=e.offsetParent;);return o=Math.max(o-t-n,0),o=r?Math.min(o,k()-w.innerHeight):o}(e,t,parseInt("function"==typeof m.offset?m.offset(r,o):m.offset,10),m.clip),s=a-i,l=k(),u=0,c=function(e,t){e=t.speedAsDuration?t.speed:Math.abs(e/1e3*t.speed);return t.durationMax&&e>t.durationMax?t.durationMax:t.durationMin&&e<t.durationMin?t.durationMin:parseInt(e,10)}(s,m),p=function(e,t){var n=w.pageYOffset;if(e==t||n==t||(i<t&&w.innerHeight+n)>=l)return x.cancelScroll(!0),e=t,n=g,0===(t=r)&&document.body.focus(),n||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),w.scrollTo(0,e)),T("scrollStop",m,r,o),!(b=d=null)},h=function(e){var t,n,r;u+=e-(d=d||e),f=i+s*(n=1<(f=0===c?0:u/c)?1:f,"easeInQuad"===(t=m).easing&&(r=n*n),"easeOutQuad"===t.easing&&(r=n*(2-n)),"easeInOutQuad"===t.easing&&(r=n<.5?2*n*n:(4-2*n)*n-1),"easeInCubic"===t.easing&&(r=n*n*n),"easeOutCubic"===t.easing&&(r=--n*n*n+1),"easeInOutCubic"===t.easing&&(r=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),"easeInQuart"===t.easing&&(r=n*n*n*n),"easeOutQuart"===t.easing&&(r=1- --n*n*n*n),"easeInOutQuart"===t.easing&&(r=n<.5?8*n*n*n*n:1-8*--n*n*n*n),"easeInQuint"===t.easing&&(r=n*n*n*n*n),"easeOutQuint"===t.easing&&(r=1+--n*n*n*n*n),"easeInOutQuint"===t.easing&&(r=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),(r=t.customEasing?t.customEasing(n):r)||n),w.scrollTo(0,Math.floor(f)),p(f,a)||(b=w.requestAnimationFrame(h),d=e)},0===w.pageYOffset&&w.scrollTo(0,0),e=r,t=m,g||history.pushState&&t.updateURL&&history.pushState({smoothScroll:JSON.stringify(t),anchor:e.id},document.title,e===document.documentElement?"#top":"#"+e.id),"matchMedia"in w&&w.matchMedia("(prefers-reduced-motion)").matches?w.scrollTo(0,Math.floor(a)):(T("scrollStart",m,r,o),x.cancelScroll(!0),w.requestAnimationFrame(h)))},x.destroy=function(){v&&(document.removeEventListener("click",t,!1),w.removeEventListener("popstate",n,!1),x.cancelScroll(),b=y=o=v=null)};if("querySelector"in document&&"addEventListener"in w&&"requestAnimationFrame"in w&&"closest"in w.Element.prototype)return x.destroy(),v=C(E,e||{}),y=v.header?document.querySelector(v.header):null,document.addEventListener("click",t,!1),v.updateURL&&v.popstate&&w.addEventListener("popstate",n,!1),x;throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs."}}),$(document).ready(function(){$("#main").fitVids(),$(".author__urls-wrapper button").on("click",function(){$(".author__urls").toggleClass("is--visible"),$(".author__urls-wrapper").find("button").toggleClass("open")}),$(document).keyup(function(e){27===e.keyCode&&$(".initial-content").hasClass("is--hidden")&&($(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"))}),$(".search__toggle").on("click",function(){$(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"),setTimeout(function(){$(".search-content input").focus()},400)});function o(e){for(var t=e.target,n=t.nextElementSibling;n&&"code"!==n.tagName.toLowerCase();)n=n.nextElementSibling;if(n)return e=function(e){if(document.queryCommandEnabled("copy")&&navigator.clipboard)return navigator.clipboard.writeText(e).then(()=>!0,()=>console.error("Failed to copy text to clipboard: "+e)),!0;var t="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea"),t=(n.className="clipboard-helper",n.style[t?"right":"left"]="-9999px",window.pageYOffset||document.documentElement.scrollTop),t=(n.style.top=t+"px",n.setAttribute("readonly",""),n.value=e,document.body.appendChild(n),!0);try{n.select(),t=document.execCommand("copy")}catch(e){t=!1}return n.parentNode.removeChild(n),t}((n=(e=n.querySelector("td.code, td.rouge-code"))?e:n).innerText),t.focus(),e&&(null!==t.interval&&clearInterval(t.interval),t.classList.add("copied"),t.interval=setTimeout(function(){t.classList.remove("copied"),clearInterval(t.interval),t.interval=null},1500)),e;throw console.warn(t),new Error("No code block found for this button.")}var e;new SmoothScroll('a[href*="#"]',{offset:20,speed:400,speedAsDuration:!0,durationMax:500}),0<$("nav.toc").length&&new Gumshoe("nav.toc a",{navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:20,reflow:!0,events:!0}),window.chrome&&document.addEventListener("gumshoeActivate",function(e){var e=e.target,t={behavior:"auto",block:"nearest",inline:"start"},n=document.querySelector("aside.sidebar__right.sticky");n&&"sticky"===window.getComputedStyle(n).position&&(e.parentElement.classList.contains("toc__menu")&&e==e.parentElement.firstElementChild?document.querySelector("nav.toc header"):e).scrollIntoView(t)}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']").has("> img").addClass("image-popup"),$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'<a href="%url%">Image #%curr%</a> could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0}),(e=document.querySelector(".page__content"))&&e.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(function(e){var t,n=e.getAttribute("id");n&&((t=document.createElement("a")).className="header-link",t.href="#"+n,t.innerHTML='<span class="sr-only">Permalink</span><i class="fas fa-link"></i>',t.title="Permalink",e.appendChild(t))});window.enable_copy_code_button&&document.querySelectorAll(".page__content pre.highlight > code").forEach(function(e,t,n){var r,e=e.parentElement;"code"===e.firstElementChild.tagName.toLowerCase()&&((r=document.createElement("button")).title="Copy to clipboard",r.className="clipboard-copy-button",r.innerHTML='<span class="sr-only">Copy code</span><i class="far fa-fw fa-copy"></i><i class="fas fa-fw fa-check copied"></i>',r.addEventListener("click",o),e.prepend(r))})}); \ No newline at end of file diff --git a/assets/js/main.min.js.map b/assets/js/main.min.js.map new file mode 100644 index 000000000000..19426d858742 --- /dev/null +++ b/assets/js/main.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["assets/js/vendor/jquery/jquery-3.6.0.js","assets/js/plugins/gumshoe.js","assets/js/plugins/jquery.ba-throttle-debounce.js","assets/js/plugins/jquery.fitvids.js","assets/js/plugins/jquery.greedy-navigation.js","assets/js/plugins/jquery.magnific-popup.js","assets/js/plugins/smooth-scroll.js","assets/js/_main.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","dir","until","matched","truncate","is","siblings","n","nextSibling","Sizzle","funescape","escape","nonHex","high","String","fromCharCode","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","setDocument","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","rcssescape","inDisabledFieldset","addCombinator","disabled","nodeName","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","filters","parseOnly","soFar","preFilters","cached","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","_name","defaultValue","rneedsContext","unique","isXMLDoc","escapeSelector","rsingleTag","winnow","qualifier","self","rootjQuery","rparentsprev","ready","parseHTML","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","rerrorNames","readyList","stack","console","warn","message","readyException","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","isHiddenWithinTree","style","display","isAttached","css","pnum","source","rcssNum","cssExpand","composed","getRootNode","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","handleObj","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","getStyles","opener","getComputedStyle","swap","old","pixelPositionVal","boxSizingReliableVal","scrollboxSizeVal","pixelBoxStylesVal","reliableTrDimensionsVal","reliableMarginLeftVal","container","rnumnonpx","rboxStyle","computeStyleTests","divStyle","cssText","roundPixelMeasures","marginLeft","right","width","position","offsetWidth","measure","round","parseFloat","curCSS","computed","maxWidth","getPropertyValue","pixelBoxStyles","minWidth","addGetHookIf","conditionFn","hookFn","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trStyle","trChild","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","doAnimation","optall","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","rfocusable","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","clazz","finalValue","curValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","stopPropagationCallback","rreturn","rfocusMorph","valHooks","optionSet","focusin","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","rbracket","parseXML","parserErrorElem","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","param","traditional","valueOrFunction","s","encodeURIComponent","buildParams","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","urlAnchor","host","hasContent","uncached","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","response","isSuccess","ct","finalDataType","firstDataType","conv2","current","conv","dataFilter","throws","modified","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","oldCallbacks","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","_jQuery","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_$","$","noConflict","Gumshoe","sortContents","item1","item2","getOffsetTop","isAtBottom","innerHeight","scrollHeight","clientHeight","deactivate","items","li","nav","classList","navClass","contentClass","deactivateNested","emitEvent","link","defaults","nested","nestedClass","reflow","CustomEvent","dispatchEvent","offsetTop","isInView","bottom","bounds","useLastItem","activateNested","scrollHandler","cancelAnimationFrame","publicAPIs","detect","resizeHandler","navItems","forEach","decodeURIComponent","substr","destroy","merged","jq_throttle","Cowboy","throttle","no_trailing","debounce_mode","timeout_id","last_exec","wrapper","elapsed","debounce","at_begin","fitVids","customSelector","ignore","ignoreList","$allVideos","aspectRatio","$this","tagName","Zepto","numOfItems","totalSpace","closingTime","breakWidths","$btn","$vlinks","$hlinks","$nav","$logo","$logoImg","$title","$search","measureLinks","addWidth","outerWidth","availableSpace","numOfVisibleItems","requiredSpace","winWidth","lastBreakpoint","curBreakpoint","innerWidth","resize","naturalWidth","require","MagnificPopup","_mfpOn","f","mfp","ev","EVENT_NS","_getEl","_mfpTrigger","st","callbacks","charAt","_getCloseBtn","_currPopupType","currTemplate","closeBtn","closeMarkup","tClose","_checkInstance","magnificPopup","instance","_putInlineElementsBack","_lastInlineElement","_inlinePlaceholder","_hiddenClass","_removeAjaxCursor","_ajaxCur","_destroyAjaxRequest","req","_prevStatus","_document","_prevContentType","_wrapClasses","CLOSE_EVENT","BEFORE_CLOSE_EVENT","MARKUP_PARSE_EVENT","OPEN_EVENT","READY_CLASS","REMOVING_CLASS","PREVENT_CLOSE_CLASS","_isJQ","_window","INLINE_NS","appVersion","navigator","isLowIE","isIE8","all","isAndroid","isIOS","supportsTransition","probablyMobile","userAgent","popupsCache","isObj","isOpen","mainEl","fixedContentPos","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","close","_checkIfClose","contentContainer","preloader","tLoading","modules","closeBtnInside","template","close_replaceWith","alignTop","fixedBgPos","updateSize","windowHeight","wH","windowStyles","classesToadd","_hasScrollBar","_getScrollbarSize","marginRight","isIE7","mainClass","_addClassToMFP","updateItemHTML","_lastFocusedEl","_setFocus","_onFocusIn","removalDelay","_close","classesToRemove","_removeClassFromMFP","currItem","autoFocusLast","prevHeight","winHeight","zoomLevel","clientWidth","parseEl","newContent","markup","appendContent","preloaded","addGroup","eHandler","mfpEl","_openClick","eName","midClick","disableOn","updateStatus","closeOnContent","closeOnBg","cName","_parseMarkup","scrollDiv","scrollbarSize","registerModule","itemOpts","jqEl","AJAX_NS","hiddenClass","tNotFound","initInline","getInline","inlineSt","inline","inlineElement","cursor","tError","initAjax","getAjax","textStatus","finished","loadError","_imgInterval","titleSrc","verticalFit","initImage","imgSt","ns","resizeImage","decr","img","_onImageHasSize","hasSize","clearInterval","isCheckingImgSize","imgHidden","findImageSize","mfpSetInterval","setInterval","counter","getImage","onLoadComplete","loaded","guard","onLoadError","alt","title","img_replaceWith","loading","_fixIframeBugs","isShowing","IFRAME_NS","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","element","initZoom","getElToAnimate","showMainContent","openTimeout","animatedImg","zoomSt","newImg","transition","cssObj","-webkit-backface-visibility","_allowZoom","_getItemToZoom","_getOffset","isLarge","paddingTop","paddingBottom","hasMozTransform","MozTransform","RETINA_NS","srcAction","patterns","youtube","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","dataObj","lastIndexOf","arrowMarkup","preload","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","direction","arrowLeft","arrowRight","_preloadTimeout","preloadNearbyImages","goTo","newIndex","preloadBefore","min","preloadAfter","_preloadItem","replaceSrc","ratio","initRetina","devicePixelRatio","retina","max-width","SmoothScroll","escapeCharacters","codeUnit","firstCodeUnit","InvalidCharacterError","anchor","emitEvents","topOnEmptyHash","speedAsDuration","durationMax","durationMin","clip","customEasing","updateURL","popstate","getHeight","getDocumentHeight","clickHandler","hostname","pathname","querySelector","history","replaceState","smoothScroll","stringify","animateScroll","popstateHandler","fixedHeader","animationInterval","cancelScroll","noEvent","startLocation","endLocation","distance","documentHeight","timeLapsed","stopAnimateScroll","loopAnimateScroll","_settings","isNum","anchorElem","headerHeight","abs","currentLocation","outline","timestamp","percentage","floor","pushState","matchMedia","Element","keyup","copyButtonEventListener","thisButton","codeBlock","nextElementSibling","queryCommandEnabled","clipboard","writeText","isRTL","textarea","yPosition","execCommand","realCodeBlock","innerText","pageContentElement","chrome","scrollOptions","behavior","block","tocElement","parentElement","scrollIntoView","beforeOpen","enable_copy_code_button","parentList","copyButton"],"mappings":"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"} \ No newline at end of file diff --git a/assets/js/plugins/jquery.greedy-navigation.js b/assets/js/plugins/jquery.greedy-navigation.js index 3eabccdf5f34..a12ec3ee6394 100644 --- a/assets/js/plugins/jquery.greedy-navigation.js +++ b/assets/js/plugins/jquery.greedy-navigation.js @@ -1,58 +1,95 @@ /* GreedyNav.js - https://github.com/lukejacksonn/GreedyNav Licensed under the MIT license - http://opensource.org/licenses/MIT -Copyright (c) 2015 Luke Jackson +Copyright (c) 2015 Luke Jackson http://lukejacksonn.com */ -$(document).ready(function() { +$(function() { + var $btn = $("nav.greedy-nav .greedy-nav__toggle"); var $vlinks = $("nav.greedy-nav .visible-links"); var $hlinks = $("nav.greedy-nav .hidden-links"); + var $nav = $("nav.greedy-nav"); + var $logo = $('nav.greedy-nav .site-logo'); + var $logoImg = $('nav.greedy-nav .site-logo img'); + var $title = $("nav.greedy-nav .site-title"); + var $search = $('nav.greedy-nav button.search__toggle'); + + var numOfItems, totalSpace, closingTime, breakWidths; - var numOfItems = 0; - var totalSpace = 0; - var closingTime = 1000; - var breakWidths = []; + // This function measures both hidden and visible links and sets the navbar breakpoints + // This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items + // Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar) + function measureLinks(){ + numOfItems = 0; + totalSpace = 0; + closingTime = 1000; + breakWidths = []; + + // Adds the width of a navItem in order to create breakpoints for the navbar + function addWidth(i, w) { + totalSpace += w; + numOfItems += 1; + breakWidths.push(totalSpace); + } + // Measures the width of hidden links by making a temporary clone of them and positioning under visible links + function hiddenWidth(obj){ + var clone = obj.clone(); + clone.css("visibility","hidden"); + $vlinks.append(clone); + addWidth(0, clone.outerWidth()); + clone.remove(); + } + // Measure both visible and hidden links widths + $vlinks.children().outerWidth(addWidth); + $hlinks.children().each(function(){hiddenWidth($(this))}); + } // Get initial state - $vlinks.children().outerWidth(function(i, w) { - totalSpace += w; - numOfItems += 1; - breakWidths.push(totalSpace); - }); + measureLinks(); + + var winWidth = $( window ).width(); + // Set the last measured CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. + var lastBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; var availableSpace, numOfVisibleItems, requiredSpace, timer; function check() { + + winWidth = $( window ).width(); + // Set the current CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. + var curBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; + // If current breakpoint is different from last measured breakpoint, measureLinks again + if(curBreakpoint !== lastBreakpoint) measureLinks(); + // Set the last measured CSS width breakpoint with the current breakpoint + lastBreakpoint = curBreakpoint; + // Get instant state - availableSpace = $vlinks.width() - $btn.width(); numOfVisibleItems = $vlinks.children().length; + // Decrease the width of visible elements from the nav innerWidth to find out the available space for navItems + availableSpace = /* nav */ $nav.innerWidth() + - /* logo */ ($logo.length !== 0 ? $logo.outerWidth(true) : 0) + - /* title */ $title.outerWidth(true) + - /* search */ ($search.length !== 0 ? $search.outerWidth(true) : 0) + - /* toggle */ (numOfVisibleItems !== breakWidths.length ? $btn.outerWidth(true) : 0); requiredSpace = breakWidths[numOfVisibleItems - 1]; - // There is not enough space + // There is not enought space if (requiredSpace > availableSpace) { - $vlinks - .children() - .last() - .prependTo($hlinks); + $vlinks.children().last().prependTo($hlinks); numOfVisibleItems -= 1; check(); - // There is more than enough space - } else if (availableSpace > breakWidths[numOfVisibleItems]) { - $hlinks - .children() - .first() - .appendTo($vlinks); + // There is more than enough space. If only one element is hidden, add the toggle width to the available space + } else if (availableSpace + (numOfVisibleItems === breakWidths.length - 1?$btn.outerWidth(true):0) > breakWidths[numOfVisibleItems]) { + $hlinks.children().first().appendTo($vlinks); numOfVisibleItems += 1; check(); } // Update the button accordingly $btn.attr("count", numOfItems - numOfVisibleItems); if (numOfVisibleItems === numOfItems) { - $btn.addClass("hidden"); - } else { - $btn.removeClass("hidden"); - } + $btn.addClass('hidden'); + } else $btn.removeClass('hidden'); } // Window listeners @@ -60,24 +97,36 @@ $(document).ready(function() { check(); }); - $btn.on("click", function() { - $hlinks.toggleClass("hidden"); - $(this).toggleClass("close"); + $btn.on('click', function() { + $hlinks.toggleClass('hidden'); + $(this).toggleClass('close'); clearTimeout(timer); }); - $hlinks - .on("mouseleave", function() { - // Mouse has left, start the timer - timer = setTimeout(function() { - $hlinks.addClass("hidden"); - $btn.toggleClass("close"); - }, closingTime); - }) - .on("mouseenter", function() { - // Mouse is back, cancel the timer - clearTimeout(timer); - }); - - check(); + $hlinks.on("click", function () { + // Hide the hidden links & remove the overlay when one is clicked. + $hlinks.addClass("hidden"); + $btn.removeClass("close"); + }).on('mouseleave', function() { + // Mouse has left, start the timer + timer = setTimeout(function() { + $hlinks.addClass('hidden'); + $('.greedy-nav__toggle').removeClass('close'); + }, closingTime); + }).on('mouseenter', function() { + // Mouse is back, cancel the timer + clearTimeout(timer); + }) + + // check if page has a logo + if($logoImg.length !== 0){ + // check if logo is not loaded + if(!($logoImg[0].complete || $logoImg[0].naturalWidth !== 0)){ + // if logo is not loaded wait for logo to load or fail to check + $logoImg.one("load error", check); + // if logo is already loaded just check + } else check(); + // if page does not have a logo just check + } else check(); + }); diff --git a/assets/js/plugins/smooth-scroll.js b/assets/js/plugins/smooth-scroll.js index e0cf796c03b0..c4179a731f67 100644 --- a/assets/js/plugins/smooth-scroll.js +++ b/assets/js/plugins/smooth-scroll.js @@ -1,7 +1,7 @@ /*! - * smooth-scroll v15.2.1 + * smooth-scroll v16.1.2 * Animate scrolling to anchor links - * (c) 2019 Chris Ferdinandi + * (c) 2020 Chris Ferdinandi * MIT License * http://github.com/cferdinandi/smooth-scroll */ @@ -90,7 +90,7 @@ * Check to see if user prefers reduced motion * @param {Object} settings Script settings */ - var reduceMotion = function (settings) { + var reduceMotion = function () { if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) { return true; } @@ -486,6 +486,12 @@ // Update the URL updateURL(anchor, isNum, _settings); + // If the user prefers reduced motion, jump to location + if (reduceMotion()) { + window.scrollTo(0, Math.floor(endLocation)); + return; + } + // Emit a custom event emitEvent('scrollStart', _settings, anchor, toggle); @@ -500,15 +506,16 @@ */ var clickHandler = function (event) { - // Don't run if the user prefers reduced motion - if (reduceMotion(settings)) return; + // Don't run if event was canceled but still bubbled up + // By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/ + if (event.defaultPrevented) return; - // Don't run if right-click or command/control + click - if (event.button !== 0 || event.metaKey || event.ctrlKey) return; + // Don't run if right-click or command/control + click or shift + click + if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return; // Check if event.target has closest() method // By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/ - if(!('closest' in event.target))return; + if (!('closest' in event.target)) return; // Check if a smooth scroll link was clicked toggle = event.target.closest(selector); @@ -518,10 +525,21 @@ if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return; // Get an escaped version of the hash - var hash = escapeCharacters(toggle.hash); + var hash; + try { + hash = escapeCharacters(decodeURIComponent(toggle.hash)); + } catch(e) { + hash = escapeCharacters(toggle.hash); + } // Get the anchored element - var anchor = settings.topOnEmptyHash && hash === '#' ? document.documentElement : document.querySelector(hash); + var anchor; + if (hash === '#') { + if (!settings.topOnEmptyHash) return; + anchor = document.documentElement; + } else { + anchor = document.querySelector(hash); + } anchor = !anchor && hash === '#top' ? document.documentElement : anchor; // If anchored element exists, scroll to it @@ -589,7 +607,7 @@ * Initialize Smooth Scroll * @param {Object} options User settings */ - smoothScroll.init = function (options) { + var init = function () { // feature test if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.'; @@ -616,7 +634,7 @@ // Initialize plugin // - smoothScroll.init(options); + init(); // diff --git a/assets/js/vendor/jquery/jquery-3.4.1.js b/assets/js/vendor/jquery/jquery-3.6.0.js similarity index 90% rename from assets/js/vendor/jquery/jquery-3.4.1.js rename to assets/js/vendor/jquery/jquery-3.6.0.js index 773ad95c56f8..fc6c299b73e7 100644 --- a/assets/js/vendor/jquery/jquery-3.4.1.js +++ b/assets/js/vendor/jquery/jquery-3.6.0.js @@ -1,15 +1,15 @@ /*! - * jQuery JavaScript Library v3.4.1 + * jQuery JavaScript Library v3.6.0 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * - * Copyright JS Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * - * Date: 2019-05-01T21:04Z + * Date: 2021-03-02T17:08Z */ ( function( global, factory ) { @@ -47,13 +47,16 @@ var arr = []; -var document = window.document; - var getProto = Object.getPrototypeOf; var slice = arr.slice; -var concat = arr.concat; +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + var push = arr.push; @@ -73,12 +76,16 @@ var support = {}; var isFunction = function isFunction( obj ) { - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML <object> elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML <object> elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; var isWindow = function isWindow( obj ) { @@ -86,6 +93,8 @@ var isWindow = function isWindow( obj ) { }; +var document = window.document; + var preservedScriptAttributes = { @@ -142,7 +151,7 @@ function toType( obj ) { var - version = "3.4.1", + version = "3.6.0", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -150,11 +159,7 @@ var // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + }; jQuery.fn = jQuery.prototype = { @@ -220,6 +225,18 @@ jQuery.fn = jQuery.prototype = { return this.eq( -1 ); }, + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); @@ -353,9 +370,10 @@ jQuery.extend( { return true; }, - // Evaluates a script in a global context - globalEval: function( code, options ) { - DOMEval( code, { nonce: options && options.nonce } ); + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); }, each: function( obj, callback ) { @@ -379,13 +397,6 @@ jQuery.extend( { return obj; }, - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; @@ -394,7 +405,7 @@ jQuery.extend( { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? - [ arr ] : arr + [ arr ] : arr ); } else { push.call( ret, arr ); @@ -472,7 +483,7 @@ jQuery.extend( { } // Flatten any nested arrays - return concat.apply( [], ret ); + return flat( ret ); }, // A global GUID counter for objects @@ -489,9 +500,9 @@ if ( typeof Symbol === "function" ) { // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); function isArrayLike( obj ) { @@ -511,17 +522,16 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.3.4 + * Sizzle CSS Selector Engine v2.3.6 * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://js.foundation/ * - * Date: 2019-04-08 + * Date: 2021-02-16 */ -(function( window ) { - +( function( window ) { var i, support, Expr, @@ -561,59 +571,70 @@ var i, }, // Instance methods - hasOwn = ({}).hasOwnProperty, + hasOwn = ( {} ).hasOwnProperty, arr = [], pop = arr.pop, - push_native = arr.push, + pushNative = arr.push, push = arr.push, slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native // https://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { - if ( list[i] === elem ) { + if ( list[ i ] === elem ) { return i; } } return -1; }, - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), @@ -625,14 +646,16 @@ var i, "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rhtml = /HTML$/i, @@ -648,18 +671,21 @@ var i, // CSS escapes // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair high < 0 ? - // BMP codepoint String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, @@ -675,7 +701,8 @@ var i, } // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped @@ -700,18 +727,20 @@ var i, // Optimize for push.apply( _, NodeList ) try { push.apply( - (arr = slice.call( preferredDoc.childNodes )), + ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); + // Support: Android<4.0 // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { - push_native.apply( target, slice.call(els) ); + pushNative.apply( target, slice.call( els ) ); } : // Support: IE<9 @@ -719,8 +748,9 @@ try { function( target, els ) { var j = target.length, i = 0; + // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} + while ( ( target[ j++ ] = els[ i++ ] ) ) {} target.length = j - 1; } }; @@ -744,24 +774,21 @@ function Sizzle( selector, context, results, seed ) { // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } + setDocument( context ); context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { // ID selector - if ( (m = match[1]) ) { + if ( ( m = match[ 1 ] ) ) { // Document context if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { + if ( ( elem = context.getElementById( m ) ) ) { // Support: IE, Opera, Webkit // TODO: identify versions @@ -780,7 +807,7 @@ function Sizzle( selector, context, results, seed ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && + if ( newContext && ( elem = newContext.getElementById( m ) ) && contains( context, elem ) && elem.id === m ) { @@ -790,12 +817,12 @@ function Sizzle( selector, context, results, seed ) { } // Type selector - } else if ( match[2] ) { + } else if ( match[ 2 ] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); @@ -806,11 +833,11 @@ function Sizzle( selector, context, results, seed ) { // Take advantage of querySelectorAll if ( support.qsa && !nonnativeSelectorCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && // Support: IE 8 only // Exclude object elements - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { newSelector = selector; newContext = context; @@ -819,27 +846,36 @@ function Sizzle( selector, context, results, seed ) { // descendant combinators, which is not what we want. // In such cases, we work around the behavior by prefixing every selector in the // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && rdescend.test( selector ) ) { + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); } newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; } try { @@ -872,12 +908,14 @@ function createCache() { var keys = []; function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries delete cache[ keys.shift() ]; } - return (cache[ key + " " ] = value); + return ( cache[ key + " " ] = value ); } return cache; } @@ -896,17 +934,19 @@ function markFunction( fn ) { * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { - var el = document.createElement("fieldset"); + var el = document.createElement( "fieldset" ); try { return !!fn( el ); - } catch (e) { + } catch ( e ) { return false; } finally { + // Remove from its parent by default if ( el.parentNode ) { el.parentNode.removeChild( el ); } + // release memory in IE el = null; } @@ -918,11 +958,11 @@ function assert( fn ) { * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { - var arr = attrs.split("|"), + var arr = attrs.split( "|" ), i = arr.length; while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; + Expr.attrHandle[ arr[ i ] ] = handler; } } @@ -944,7 +984,7 @@ function siblingCheck( a, b ) { // Check if b follows a if ( cur ) { - while ( (cur = cur.nextSibling) ) { + while ( ( cur = cur.nextSibling ) ) { if ( cur === b ) { return -1; } @@ -972,7 +1012,7 @@ function createInputPseudo( type ) { function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; + return ( name === "input" || name === "button" ) && elem.type === type; }; } @@ -1015,7 +1055,7 @@ function createDisabledPseudo( disabled ) { // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; + inDisabledFieldset( elem ) === disabled; } return elem.disabled === disabled; @@ -1037,21 +1077,21 @@ function createDisabledPseudo( disabled ) { * @param {Function} fn */ function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { + return markFunction( function( argument ) { argument = +argument; - return markFunction(function( seed, matches ) { + return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); } } - }); - }); + } ); + } ); } /** @@ -1072,8 +1112,8 @@ support = Sizzle.support = {}; * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = (elem.ownerDocument || elem).documentElement; + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; // Support: IE <=8 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes @@ -1091,7 +1131,11 @@ setDocument = Sizzle.setDocument = function( node ) { doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } @@ -1100,10 +1144,14 @@ setDocument = Sizzle.setDocument = function( node ) { docElem = document.documentElement; documentIsHTML = !isXML( document ); - // Support: IE 9-11, Edge + // Support: IE 9 - 11+, Edge 12 - 18+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { // Support: IE 11, Edge if ( subWindow.addEventListener ) { @@ -1115,25 +1163,36 @@ setDocument = Sizzle.setDocument = function( node ) { } } + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) - support.attributes = assert(function( el ) { + support.attributes = assert( function( el ) { el.className = "i"; - return !el.getAttribute("className"); - }); + return !el.getAttribute( "className" ); + } ); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); @@ -1142,38 +1201,38 @@ setDocument = Sizzle.setDocument = function( node ) { // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { + support.getById = assert( function( el ) { docElem.appendChild( el ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); + } ); // ID filter and find if ( support.getById ) { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { - return elem.getAttribute("id") === attrId; + return elem.getAttribute( "id" ) === attrId; }; }; - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var elem = context.getElementById( id ); return elem ? [ elem ] : []; } }; } else { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); + elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; // Support: IE 6 - 7 only // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var node, i, elems, elem = context.getElementById( id ); @@ -1181,7 +1240,7 @@ setDocument = Sizzle.setDocument = function( node ) { if ( elem ) { // Verify the id attribute - node = elem.getAttributeNode("id"); + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1189,8 +1248,8 @@ setDocument = Sizzle.setDocument = function( node ) { // Fall back on getElementsByName elems = context.getElementsByName( id ); i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1203,7 +1262,7 @@ setDocument = Sizzle.setDocument = function( node ) { } // Tag - Expr.find["TAG"] = support.getElementsByTagName ? + Expr.find[ "TAG" ] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); @@ -1218,12 +1277,13 @@ setDocument = Sizzle.setDocument = function( node ) { var elem, tmp = [], i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } @@ -1235,7 +1295,7 @@ setDocument = Sizzle.setDocument = function( node ) { }; // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } @@ -1256,10 +1316,14 @@ setDocument = Sizzle.setDocument = function( node ) { // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + // Build QSA regex // Regex strategy adopted from Diego Perini - assert(function( el ) { + assert( function( el ) { + + var input; + // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, @@ -1273,78 +1337,98 @@ setDocument = Sizzle.setDocument = function( node ) { // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { + if ( !el.querySelectorAll( "[selected]" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibling-combinator selector` fails if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); + rbuggyQSA.push( ".#.+[+~]" ); } - }); - assert(function( el ) { + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { el.innerHTML = "<a href='' disabled='disabled'></a>" + "<select disabled='disabled'><option/></select>"; // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); + var input = document.createElement( "input" ); input.setAttribute( "type", "hidden" ); el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { + if ( el.querySelectorAll( "[name=d]" ).length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: IE9-11+ // IE's :disabled selector does not pick up the children of disabled fieldsets docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } + // Support: Opera 10 - 11 only // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); } - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { - assert(function( el ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( el, "*" ); @@ -1353,11 +1437,11 @@ setDocument = Sizzle.setDocument = function( node ) { // Gecko does not error, returns false instead matches.call( el, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); - }); + } ); } - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); /* Contains ---------------------------------------------------------------------- */ @@ -1374,11 +1458,11 @@ setDocument = Sizzle.setDocument = function( node ) { adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); + ) ); } : function( a, b ) { if ( b ) { - while ( (b = b.parentNode) ) { + while ( ( b = b.parentNode ) ) { if ( b === a ) { return true; } @@ -1407,7 +1491,11 @@ setDocument = Sizzle.setDocument = function( node ) { } // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected @@ -1415,13 +1503,24 @@ setDocument = Sizzle.setDocument = function( node ) { // Disconnected nodes if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { return -1; } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { return 1; } @@ -1434,6 +1533,7 @@ setDocument = Sizzle.setDocument = function( node ) { return compare & 4 ? -1 : 1; } : function( a, b ) { + // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; @@ -1449,8 +1549,14 @@ setDocument = Sizzle.setDocument = function( node ) { // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ aup ? -1 : bup ? 1 : sortInput ? @@ -1464,26 +1570,32 @@ setDocument = Sizzle.setDocument = function( node ) { // Otherwise we need full lists of their ancestors for comparison cur = a; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { ap.unshift( cur ); } cur = b; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { + while ( ap[ i ] === bp[ i ] ) { i++; } return i ? + // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : + siblingCheck( ap[ i ], bp[ i ] ) : // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ 0; }; @@ -1495,10 +1607,7 @@ Sizzle.matches = function( expr, elements ) { }; Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } + setDocument( elem ); if ( support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[ expr + " " ] && @@ -1510,12 +1619,13 @@ Sizzle.matchesSelector = function( elem, expr ) { // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { return ret; } - } catch (e) { + } catch ( e ) { nonnativeSelectorCache( expr, true ); } } @@ -1524,20 +1634,31 @@ Sizzle.matchesSelector = function( elem, expr ) { }; Sizzle.contains = function( context, elem ) { + // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { + // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : @@ -1547,13 +1668,13 @@ Sizzle.attr = function( elem, name ) { val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : null; }; Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); + return ( sel + "" ).replace( rcssescape, fcssescape ); }; Sizzle.error = function( msg ) { @@ -1576,7 +1697,7 @@ Sizzle.uniqueSort = function( results ) { results.sort( sortOrder ); if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } @@ -1604,17 +1725,21 @@ getText = Sizzle.getText = function( elem ) { nodeType = elem.nodeType; if ( !nodeType ) { + // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { + while ( ( node = elem[ i++ ] ) ) { + // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { + // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); @@ -1623,6 +1748,7 @@ getText = Sizzle.getText = function( elem ) { } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } + // Do not include comment or processing instruction nodes return ret; @@ -1650,19 +1776,21 @@ Expr = Sizzle.selectors = { preFilter: { "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) @@ -1673,22 +1801,25 @@ Expr = Sizzle.selectors = { 7 sign of y-component 8 y of y-component */ - match[1] = match[1].toLowerCase(); + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } return match; @@ -1696,26 +1827,28 @@ Expr = Sizzle.selectors = { "PSEUDO": function( match ) { var excess, - unquoted = !match[6] && match[2]; + unquoted = !match[ 6 ] && match[ 2 ]; - if ( matchExpr["CHILD"].test( match[0] ) ) { + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && + ( excess = tokenize( unquoted, true ) ) && + // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) @@ -1728,7 +1861,9 @@ Expr = Sizzle.selectors = { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? - function() { return true; } : + function() { + return true; + } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; @@ -1738,10 +1873,16 @@ Expr = Sizzle.selectors = { var pattern = classCache[ className + " " ]; return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); }, "ATTR": function( name, operator, check ) { @@ -1757,6 +1898,8 @@ Expr = Sizzle.selectors = { result += ""; + /* eslint-disable max-len */ + return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : @@ -1765,10 +1908,12 @@ Expr = Sizzle.selectors = { operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; + /* eslint-enable max-len */ + }; }, - "CHILD": function( type, what, argument, first, last ) { + "CHILD": function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; @@ -1780,7 +1925,7 @@ Expr = Sizzle.selectors = { return !!elem.parentNode; } : - function( elem, context, xml ) { + function( elem, _context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, @@ -1794,7 +1939,7 @@ Expr = Sizzle.selectors = { if ( simple ) { while ( dir ) { node = elem; - while ( (node = node[ dir ]) ) { + while ( ( node = node[ dir ] ) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { @@ -1802,6 +1947,7 @@ Expr = Sizzle.selectors = { return false; } } + // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } @@ -1817,22 +1963,22 @@ Expr = Sizzle.selectors = { // ...in a gzip-friendly way node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; - while ( (node = ++nodeIndex && node && node[ dir ] || + while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { + ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { @@ -1842,16 +1988,18 @@ Expr = Sizzle.selectors = { } } else { + // Use previously-cached element index if available if ( useCache ) { + // ...in a gzip-friendly way node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; @@ -1861,9 +2009,10 @@ Expr = Sizzle.selectors = { // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : @@ -1872,12 +2021,13 @@ Expr = Sizzle.selectors = { // Cache the index of each encountered element if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || + ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); uniqueCache[ type ] = [ dirruns, diff ]; } @@ -1898,6 +2048,7 @@ Expr = Sizzle.selectors = { }, "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters @@ -1917,15 +2068,15 @@ Expr = Sizzle.selectors = { if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { + markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } - }) : + } ) : function( elem ) { return fn( elem, 0, args ); }; @@ -1936,8 +2087,10 @@ Expr = Sizzle.selectors = { }, pseudos: { + // Potentially complex pseudos - "not": markFunction(function( selector ) { + "not": markFunction( function( selector ) { + // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators @@ -1946,39 +2099,40 @@ Expr = Sizzle.selectors = { matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { + markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); } } - }) : - function( elem, context, xml ) { - input[0] = elem; + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; matcher( input, null, xml, results ); + // Don't keep the element (issue #299) - input[0] = null; + input[ 0 ] = null; return !results.pop(); }; - }), + } ), - "has": markFunction(function( selector ) { + "has": markFunction( function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; - }), + } ), - "contains": markFunction(function( text ) { + "contains": markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; }; - }), + } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value @@ -1988,25 +2142,26 @@ Expr = Sizzle.selectors = { // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { + // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { + if ( !ridentifier.test( lang || "" ) ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { - if ( (elemLang = documentIsHTML ? + if ( ( elemLang = documentIsHTML ? elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; - }), + } ), // Miscellaneous "target": function( elem ) { @@ -2019,7 +2174,9 @@ Expr = Sizzle.selectors = { }, "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties @@ -2027,16 +2184,20 @@ Expr = Sizzle.selectors = { "disabled": createDisabledPseudo( true ), "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); }, "selected": function( elem ) { + // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } @@ -2045,6 +2206,7 @@ Expr = Sizzle.selectors = { // Contents "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) @@ -2058,7 +2220,7 @@ Expr = Sizzle.selectors = { }, "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); + return !Expr.pseudos[ "empty" ]( elem ); }, // Element/input types @@ -2082,39 +2244,40 @@ Expr = Sizzle.selectors = { // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); }, // Position-in-collection - "first": createPositionalPseudo(function() { + "first": createPositionalPseudo( function() { return [ 0 ]; - }), + } ), - "last": createPositionalPseudo(function( matchIndexes, length ) { + "last": createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; - }), + } ), - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; - }), + } ), - "even": createPositionalPseudo(function( matchIndexes, length ) { + "even": createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "odd": createPositionalPseudo(function( matchIndexes, length ) { + "odd": createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument > length ? @@ -2124,19 +2287,19 @@ Expr = Sizzle.selectors = { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; - }) + } ) } }; -Expr.pseudos["nth"] = Expr.pseudos["eq"]; +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { @@ -2167,37 +2330,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { while ( soFar ) { // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { + // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; + soFar = soFar.slice( match[ 0 ].length ) || soFar; } - groups.push( (tokens = []) ); + groups.push( ( tokens = [] ) ); } matched = false; // Combinators - if ( (match = rcombinators.exec( soFar )) ) { + if ( ( match = rcombinators.exec( soFar ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, + // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); + type: match[ 0 ].replace( rtrim, " " ) + } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, type: type, matches: match - }); + } ); soFar = soFar.slice( matched.length ); } } @@ -2214,6 +2379,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { soFar.length : soFar ? Sizzle.error( selector ) : + // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; @@ -2223,7 +2389,7 @@ function toSelector( tokens ) { len = tokens.length, selector = ""; for ( ; i < len; i++ ) { - selector += tokens[i].value; + selector += tokens[ i ].value; } return selector; } @@ -2236,9 +2402,10 @@ function addCombinator( matcher, combinator, base ) { doneName = done++; return combinator.first ? + // Check against closest ancestor/preceding element function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } @@ -2253,7 +2420,7 @@ function addCombinator( matcher, combinator, base ) { // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; @@ -2261,27 +2428,29 @@ function addCombinator( matcher, combinator, base ) { } } } else { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); if ( skip && skip === elem.nodeName.toLowerCase() ) { elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && + } else if ( ( oldCache = uniqueCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); + return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { + // Reuse newcache so results back-propagate to previous elements uniqueCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } @@ -2297,20 +2466,20 @@ function elementMatcher( matchers ) { function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { + if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : - matchers[0]; + matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); + Sizzle( selector, contexts[ i ], results ); } return results; } @@ -2323,7 +2492,7 @@ function condense( unmatched, map, filter, context, xml ) { mapped = map != null; for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { + if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { @@ -2343,14 +2512,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } - return markFunction(function( seed, results, context, xml ) { + return markFunction( function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? @@ -2358,6 +2531,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS elems, matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? @@ -2381,8 +2555,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } @@ -2390,25 +2564,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) ) { + if ( ( elem = matcherOut[ i ] ) ) { + // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); + temp.push( ( matcherIn[ i ] = elem ) ); } } - postFinder( null, (matcherOut = []), temp, xml ); + postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - seed[temp] = !(results[temp] = elem); + seed[ temp ] = !( results[ temp ] = elem ); } } } @@ -2426,14 +2602,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS push.apply( results, matcherOut ); } } - }); + } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) @@ -2445,38 +2621,43 @@ function matcherFromTokens( tokens ) { }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? + ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { + if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } @@ -2497,28 +2678,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { unmatched = seed && [], setMatched = [], contextBackup = outermostContext, + // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { - outermostContext = context === document || context || outermost; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; - if ( !context && elem.ownerDocument !== document ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { setDocument( elem ); xml = !documentIsHTML; } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { results.push( elem ); break; } @@ -2530,8 +2723,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // Track unmatched elements for set filters if ( bySet ) { + // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { + if ( ( elem = !matcher && elem ) ) { matchedCount--; } @@ -2555,16 +2749,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; - while ( (matcher = setMatchers[j++]) ) { + while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); } } } @@ -2605,13 +2800,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { cached = compilerCache[ selector + " " ]; if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { - cached = matcherFromTokens( match[i] ); + cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { @@ -2620,7 +2816,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { } // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); // Save selector and tokenization cached.selector = selector; @@ -2640,7 +2839,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; @@ -2649,11 +2848,12 @@ select = Sizzle.select = function( selector, context, results, seed ) { if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; if ( !context ) { return results; @@ -2666,20 +2866,22 @@ select = Sizzle.select = function( selector, context, results, seed ) { } // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; while ( i-- ) { - token = tokens[i]; + token = tokens[ i ]; // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { + if ( Expr.relative[ ( type = token.type ) ] ) { break; } - if ( (find = Expr.find[ type ]) ) { + if ( ( find = Expr.find[ type ] ) ) { + // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); @@ -2710,7 +2912,7 @@ select = Sizzle.select = function( selector, context, results, seed ) { // One-time assignments // Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function @@ -2721,58 +2923,59 @@ setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { +support.sortDetached = assert( function( el ) { + // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); // Support: IE<8 // Prevent attribute/property "interpolation" // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { +if ( !assert( function( el ) { el.innerHTML = "<a href='#'></a>"; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } - }); + } ); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { +if ( !support.attributes || !assert( function( el ) { el.innerHTML = "<input/>"; el.firstChild.setAttribute( "value", "" ); return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } - }); + } ); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : - null; + null; } - }); + } ); } return Sizzle; -})( window ); +} )( window ); @@ -2825,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext; function nodeName( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); -}; +} var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); @@ -3141,7 +3344,7 @@ jQuery.each( { parents: function( elem ) { return dir( elem, "parentNode" ); }, - parentsUntil: function( elem, i, until ) { + parentsUntil: function( elem, _i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { @@ -3156,10 +3359,10 @@ jQuery.each( { prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, - nextUntil: function( elem, i, until ) { + nextUntil: function( elem, _i, until ) { return dir( elem, "nextSibling", until ); }, - prevUntil: function( elem, i, until ) { + prevUntil: function( elem, _i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { @@ -3169,7 +3372,13 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - if ( typeof elem.contentDocument !== "undefined" ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // <object> elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + return elem.contentDocument; } @@ -3512,7 +3721,7 @@ jQuery.extend( { var fns = arguments; return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { + jQuery.each( tuples, function( _i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; @@ -3792,8 +4001,8 @@ jQuery.extend( { resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - // the master Deferred - master = jQuery.Deferred(), + // the primary Deferred + primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { @@ -3801,30 +4010,30 @@ jQuery.extend( { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); + primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || + if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - return master.then(); + return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } - return master.promise(); + return primary.promise(); } } ); @@ -3965,7 +4174,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { // ...except when executing function values } else { bulk = fn; - fn = function( elem, key, value ) { + fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } @@ -3975,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } @@ -4000,7 +4209,7 @@ var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { +function fcamelCase( _all, letter ) { return letter.toUpperCase(); } @@ -4528,27 +4737,6 @@ var isHiddenWithinTree = function( elem, el ) { jQuery.css( elem, "display" ) === "none"; }; -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - function adjustCSS( elem, prop, valueParts, tween ) { @@ -4719,11 +4907,40 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); -// We have to close these tags to support XHTML (#13200) -var wrapMap = { +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = "<textarea>x</textarea>"; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // Support: IE <=9 only - option: [ 1, "<select multiple='multiple'>", "</select>" ], + // IE <=9 replaces <option> tags with their contents when inserted outside of + // the select element. + div.innerHTML = "<option></option>"; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten @@ -4736,12 +4953,14 @@ var wrapMap = { _default: [ 0, "", "" ] }; -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; +} + function getAll( context, tag ) { @@ -4874,36 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { } -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; @@ -5008,8 +5198,8 @@ jQuery.event = { special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { return; } @@ -5033,7 +5223,7 @@ jQuery.event = { // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { - events = elemData.events = {}; + events = elemData.events = Object.create( null ); } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { @@ -5191,12 +5381,15 @@ jQuery.event = { dispatch: function( nativeEvent ) { - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event @@ -5320,12 +5513,12 @@ jQuery.event = { get: isFunction( hook ) ? function() { if ( this.originalEvent ) { - return hook( this.originalEvent ); + return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { - return this.originalEvent[ name ]; + return this.originalEvent[ name ]; } }, @@ -5464,7 +5657,13 @@ function leverageNative( el, type, expectSync ) { // Cancel the outer synthetic event event.stopImmediatePropagation(); event.preventDefault(); - return result.value; + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; } // If this is an inner synthetic event for an event with a bubbling surrogate @@ -5629,34 +5828,7 @@ jQuery.each( { targetTouches: true, toElement: true, touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } + which: true }, jQuery.event.addProp ); jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { @@ -5682,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp return true; }, + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + delegateType: delegateType }; } ); @@ -5771,13 +5949,6 @@ jQuery.fn.extend( { var - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ @@ -5814,7 +5985,7 @@ function restoreScript( elem ) { } function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; @@ -5822,13 +5993,11 @@ function cloneCopyEvent( src, dest ) { // 1. Copy private data: events, handlers, etc. if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); + pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; + dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { @@ -5864,7 +6033,7 @@ function fixInput( src, dest ) { function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays - args = concat.apply( [], args ); + args = flat( args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, @@ -5939,7 +6108,7 @@ function domManip( collection, args, callback, ignored ) { if ( jQuery._evalUrl && !node.noModule ) { jQuery._evalUrl( node.src, { nonce: node.nonce || node.getAttribute( "nonce" ) - } ); + }, doc ); } } else { DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); @@ -5976,7 +6145,7 @@ function remove( elem, selector, keepData ) { jQuery.extend( { htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1></$2>" ); + return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { @@ -6238,6 +6407,27 @@ var getStyles = function( elem ) { return view.getComputedStyle( elem ); }; +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); @@ -6295,7 +6485,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); } var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, + reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); @@ -6330,6 +6520,54 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); scrollboxSize: function() { computeStyleTests(); return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; } } ); } )(); @@ -6454,7 +6692,7 @@ var fontWeight: "400" }; -function setPositiveNumber( elem, value, subtract ) { +function setPositiveNumber( _elem, value, subtract ) { // Any relative (+/-) values have already been // normalized at this point @@ -6559,17 +6797,26 @@ function getWidthOrHeight( elem, dimension, extra ) { } - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - // Support: IE 9-11 only - // Also use offsetWidth/offsetHeight for when box sizing is unreliable - // We use getClientRects() to check for hidden/disconnected. - // In those cases, the computed value can be trusted to be border-box + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected elem.getClientRects().length ) { isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; @@ -6764,7 +7011,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "height", "width" ], function( i, dimension ) { +jQuery.each( [ "height", "width" ], function( _i, dimension ) { jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { @@ -6780,10 +7027,10 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) { // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); } }, @@ -6842,7 +7089,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) - ) + "px"; + ) + "px"; } } ); @@ -6981,7 +7228,7 @@ Tween.propHooks = { if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || + jQuery.cssHooks[ tween.prop ] || tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { @@ -7226,7 +7473,7 @@ function defaultPrefilter( elem, props, opts ) { anim.done( function() { - /* eslint-enable no-loop-func */ + /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { @@ -7346,7 +7593,7 @@ function Animation( elem, properties, options ) { tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, @@ -7519,7 +7766,8 @@ jQuery.fn.extend( { anim.stop( true ); } }; - doAnimation.finish = doAnimation; + + doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : @@ -7537,7 +7785,7 @@ jQuery.fn.extend( { clearQueue = type; type = undefined; } - if ( clearQueue && type !== false ) { + if ( clearQueue ) { this.queue( type || "fx", [] ); } @@ -7620,7 +7868,7 @@ jQuery.fn.extend( { } } ); -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? @@ -7841,7 +8089,7 @@ boolHook = { } }; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { var getter = attrHandle[ name ] || jQuery.find.attr; attrHandle[ name ] = function( elem, name, isXML ) { @@ -8159,8 +8407,8 @@ jQuery.fn.extend( { if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" + "" : + dataPriv.get( this, "__className__" ) || "" ); } } @@ -8175,7 +8423,7 @@ jQuery.fn.extend( { while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; + return true; } } @@ -8465,7 +8713,7 @@ jQuery.extend( jQuery.event, { special.bindType || type; // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); @@ -8576,7 +8824,10 @@ if ( !support.focusin ) { jQuery.event.special[ fix ] = { setup: function() { - var doc = this.ownerDocument || this, + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ); if ( !attaches ) { @@ -8585,7 +8836,7 @@ if ( !support.focusin ) { dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { - var doc = this.ownerDocument || this, + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ) - 1; if ( !attaches ) { @@ -8601,7 +8852,7 @@ if ( !support.focusin ) { } var location = window.location; -var nonce = Date.now(); +var nonce = { guid: Date.now() }; var rquery = ( /\?/ ); @@ -8609,7 +8860,7 @@ var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { - var xml; + var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } @@ -8618,12 +8869,17 @@ jQuery.parseXML = function( data ) { // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } + } catch ( e ) {} - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); } return xml; }; @@ -8724,16 +8980,14 @@ jQuery.fn.extend( { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { + } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { + } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { @@ -8786,7 +9040,8 @@ var // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; + +originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -9167,8 +9422,8 @@ jQuery.extend( { // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, + jQuery( callbackContext ) : + jQuery.event, // Deferreds deferred = jQuery.Deferred(), @@ -9346,7 +9601,8 @@ jQuery.extend( { // Add or update anti-cache param if needed if ( s.cache === false ) { cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; } // Put hash and anti-cache on the URL that will be requested (gh-1732) @@ -9479,6 +9735,13 @@ jQuery.extend( { response = ajaxHandleResponses( s, jqXHR, responses ); } + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + // Convert no matter what (that way responseXXX fields are always set) response = ajaxConvert( s, response, jqXHR, isSuccess ); @@ -9569,7 +9832,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "get", "post" ], function( i, method ) { +jQuery.each( [ "get", "post" ], function( _i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted @@ -9590,8 +9853,17 @@ jQuery.each( [ "get", "post" ], function( i, method ) { }; } ); +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + -jQuery._evalUrl = function( url, options ) { +jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, @@ -9609,7 +9881,7 @@ jQuery._evalUrl = function( url, options ) { "text script": function() {} }, dataFilter: function( response ) { - jQuery.globalEval( response, options ); + jQuery.globalEval( response, options, doc ); } } ); }; @@ -9931,7 +10203,7 @@ var oldCallbacks = [], jQuery.ajaxSetup( { jsonp: "callback", jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); this[ callback ] = true; return callback; } @@ -10148,23 +10420,6 @@ jQuery.fn.load = function( url, params, callback ) { -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - jQuery.expr.pseudos.animated = function( elem ) { return jQuery.grep( jQuery.timers, function( fn ) { return elem === fn.elem; @@ -10371,7 +10626,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 // getComputedStyle returns percent when specified for top/left/bottom/right; // rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { +jQuery.each( [ "top", "left" ], function( _i, prop ) { jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, function( elem, computed ) { if ( computed ) { @@ -10389,8 +10644,11 @@ jQuery.each( [ "top", "left" ], function( i, prop ) { // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { + jQuery.each( { + padding: "inner" + name, + content: type, + "": "outer" + name + }, function( defaultExtra, funcName ) { // Margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { @@ -10434,25 +10692,19 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { } ); -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); +jQuery.each( [ + "ajaxStart", + "ajaxStop", + "ajaxComplete", + "ajaxError", + "ajaxSuccess", + "ajaxSend" +], function( _i, type ) { + jQuery.fn[ type ] = function( fn ) { + return this.on( type, fn ); }; } ); -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - @@ -10474,9 +10726,35 @@ jQuery.fn.extend( { return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); } } ); +jQuery.each( + ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( _i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + } +); + + + + +// Support: Android <=4.0 only +// Make sure we trim BOM and NBSP +var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + // Bind a function to a context, optionally partially applying any // arguments. // jQuery.proxy is deprecated to promote standards (specifically Function#bind) @@ -10539,6 +10817,11 @@ jQuery.isNumeric = function( obj ) { !isNaN( obj - parseFloat( obj ) ); }; +jQuery.trim = function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); +}; @@ -10587,7 +10870,7 @@ jQuery.noConflict = function( deep ) { // Expose jQuery and $ identifiers, even in AMD // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) // and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { +if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } diff --git a/banner.js b/banner.js deleted file mode 100644 index db3974c0c122..000000000000 --- a/banner.js +++ /dev/null @@ -1,19 +0,0 @@ -const fs = require("fs"); -const pkg = require("./package.json"); -const filename = "assets/js/main.min.js"; -const script = fs.readFileSync(filename); -const padStart = str => ("0" + str).slice(-2); -const dateObj = new Date(); -const date = `${dateObj.getFullYear()}-${padStart( - dateObj.getMonth() + 1 -)}-${padStart(dateObj.getDate())}`; -const banner = `/*! - * Minimal Mistakes Jekyll Theme ${pkg.version} by ${pkg.author} - * Copyright 2013-${dateObj.getFullYear()} Michael Rose - mademistakes.com | @mmistakes - * Licensed under ${pkg.license} - */ -`; - -if (script.slice(0, 3) != "/**") { - fs.writeFileSync(filename, banner + script); -} diff --git a/docs/Gemfile b/docs/Gemfile index 5c41b36a2465..bd95289ce62f 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -1,6 +1,8 @@ source "https://rubygems.org" gem "github-pages", group: :jekyll_plugins +gem "minimal-mistakes-jekyll", path: ".." +gem "rake" gem "tzinfo-data" gem "wdm", "~> 0.1.0" if Gem.win_platform? diff --git a/docs/Rakefile b/docs/Rakefile new file mode 100644 index 000000000000..1236de9f6c3e --- /dev/null +++ b/docs/Rakefile @@ -0,0 +1,5 @@ +task :default => %i[build] + +task :build do + sh 'jekyll build --profile --trace --config _config.yml,_config.dev.yml' +end diff --git a/docs/_config.dev.yml b/docs/_config.dev.yml index 45df3dfe29a0..deceee89b697 100644 --- a/docs/_config.dev.yml +++ b/docs/_config.dev.yml @@ -1,5 +1,7 @@ # Develop override settings +theme: minimal-mistakes-jekyll +remote_theme: null url: http://localhost:4000 analytics: @@ -10,4 +12,4 @@ comments: shortname : "mmistakes-dev" sass: - style: expanded \ No newline at end of file + style: expanded diff --git a/docs/_config.yml b/docs/_config.yml index 1e8c387362c3..2266a9047012 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -5,7 +5,7 @@ # For technical reasons, this file is *NOT* reloaded automatically when you use # `jekyll serve`. If you change this file, please restart the server process. -remote_theme : "mmistakes/minimal-mistakes" +remote_theme : "mmistakes/minimal-mistakes@master" minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" @@ -13,6 +13,7 @@ minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt" locale : "en-US" title : "Minimal Mistakes" title_separator : "-" +subtitle : "A Jekyll theme" name : &name "Michael Rose" # &name is a YAML anchor which can be *referenced later description : &description "A flexible Jekyll theme for your blog or site with a minimalist aesthetic." url : https://mmistakes.github.io # the base hostname & protocol for your site e.g. "https://mmistakes.github.io" @@ -23,8 +24,9 @@ logo : # path of logo image to display in the masthead, e.g. masthead_title : # overrides the website title displayed in the masthead, use " " for no title # breadcrumbs : false # true, false (default) words_per_minute : 200 +enable_copy_code_button : true comments: - provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "custom" + provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "giscus", "custom" disqus: shortname : discourse: @@ -37,23 +39,13 @@ comments: utterances: theme : # "github-light" (default), "github-dark" issue_term : # "pathname" (default) -staticman: - allowedFields : # ['name', 'email', 'url', 'message'] - branch : # "master" - commitMessage : # "New comment by {fields.name}" - filename : # comment-{@timestamp} - format : # "yml" - moderation : # true - path : # "_data/comments/{options.slug}" - requiredFields : # ['name', 'email', 'message'] - transforms: - email : # "md5" - generatedFields: - date: - type : # "date" - options: - format : # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds" - endpoint : # URL of your own deployment with trailing slash, will fallback to the public instance + giscus: + repo_id : # Shown during giscus setup at https://giscus.app + category_name : # Full text name of the category + category_id : # Shown during giscus setup at https://giscus.app + discussion_term : # "pathname" (default), "url", "title", "og:title" + reactions_enabled : # '1' for enabled (default), '0' for disabled + theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme" reCaptcha: siteKey : # "6LdRBykTAAAAAFB46MnIu6ixuxwu9W1ihFF8G60Q" secret : # "PznnZGu3P6eTHRPLORniSq+J61YEf+A9zmColXDM5icqF49gbunH51B8+h+i2IvewpuxtA9TFoK68TuhUp/X3YKmmqhXasegHYabY50fqF9nJh9npWNhvITdkQHeaOqnFXUIwxfiEeUt49Yoa2waRR7a5LdRAP3SVM8hz0KIBT4=" @@ -75,8 +67,9 @@ algolia: # SEO Related google_site_verification : "UQj93ERU9zgECodaaXgVpkjrFn9UrDMEzVamacSoQ8Y" # Replace this with your ID, or delete bing_site_verification : -yandex_site_verification : naver_site_verification : +yandex_site_verification : +baidu_site_verification : # Social Sharing twitter: @@ -93,11 +86,11 @@ social: name : # If the user or organization name differs from the site's name links: # An array of links to social media profiles - "https://twitter.com/mmistakes" - - "https://facebook.com/michaelrose" + - "https://www.facebook.com/michaelrose" # Analytics analytics: - provider : "google-universal" # false (default), "google", "google-universal", "custom" + provider : "google-universal" # false (default), "google", "google-universal", "google-gtag", "custom" google: tracking_id : "UA-2011187-3" # Replace this with your ID, or delete anonymize_ip : true @@ -107,7 +100,7 @@ analytics: author: name : *name # *name is a YAML reference pointing to the &anchor earlier avatar : "/assets/images/michael-rose.jpg" - bio : "Just another boring, tattooed, time traveling, designer." + bio : "Just another *boring*, *tattooed*, *time traveling*, *designer*." location : "Buffalo, NY" links: - label: "Made Mistakes" @@ -239,6 +232,7 @@ defaults: author_profile: false share: false comments: false + toc_sticky: true sidebar: nav: "docs" # _recipes @@ -309,8 +303,8 @@ whitelist: # - Archive page should exist at path when using Liquid method or you can # expect broken links (especially with breadcrumbs enabled) # - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/ -# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/ -# - <base_path/my-awesome-category/index.html ~> path: / +# - <base_path>/categories/my-awesome-category/index.html ~> path: /categories/ +# - <base_path>/my-awesome-category/index.html ~> path: / category_archive: type: liquid path: /categories/ diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index 5398e4742279..6893b59c8f10 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -78,6 +78,8 @@ docs: url: /docs/javascript/ - title: Meta children: + - title: "FAQ" + url: /docs/faq/ - title: "History" url: /docs/history/ - title: "Contributing" diff --git a/docs/_data/theme.yml b/docs/_data/theme.yml new file mode 100644 index 000000000000..1fa7ff01ebdd --- /dev/null +++ b/docs/_data/theme.yml @@ -0,0 +1,3 @@ +# for use with in-page templates +--- +version: 4.26.2 diff --git a/docs/_data/ui-text.yml b/docs/_data/ui-text.yml deleted file mode 100644 index bf01d31ef3bb..000000000000 --- a/docs/_data/ui-text.yml +++ /dev/null @@ -1,1401 +0,0 @@ -# User interface text and labels - -# English (default) -# ----------------- -en: &DEFAULT_EN - page : "Page" - pagination_previous : "Previous" - pagination_next : "Next" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : "Toggle menu" - search_label : "Toggle search" - toc_label : "On this page" - ext_link_label : "Direct link" - less_than : "less than" - minute_read : "minute read" - share_on_label : "Share on" - meta_label : - tags_label : "Tags:" - categories_label : "Categories:" - date_label : "Updated:" - comments_label : "Leave a comment" - comments_title : "Comments" - more_label : "Learn more" - related_label : "You may also enjoy" - follow_label : "Follow:" - feed_label : "Feed" - powered_by : "Powered by" - website_label : "Website" - email_label : "Email" - recent_posts : "Recent posts" - undefined_wpm : "Undefined parameter words_per_minute at _config.yml" - comment_form_info : "Your email address will not be published. Required fields are marked" - comment_form_comment_label : "Comment" - comment_form_md_info : "Markdown is supported." - comment_form_name_label : "Name" - comment_form_email_label : "Email address" - comment_form_website_label : "Website (optional)" - comment_btn_submit : "Submit comment" - comment_btn_submitted : "Submitted" - comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved." - comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." - loading_label : "Loading..." - search_placeholder_text : "Enter your search term..." - results_found : "Result(s) found" - back_to_top : "Back to top" -en-US: - <<: *DEFAULT_EN -en-CA: - <<: *DEFAULT_EN -en-GB: - <<: *DEFAULT_EN -en-AU: - <<: *DEFAULT_EN - -# Spanish -# ------- -es: &DEFAULT_ES - page : "Página" - pagination_previous : "Anterior" - pagination_next : "Siguiente" - breadcrumb_home_label : "Inicio" - breadcrumb_separator : "/" - menu_label : - search_label : - toc_label : "Contenidos" - ext_link_label : "Enlace" - less_than : "menos de" - minute_read : "minuto de lectura" - share_on_label : "Compartir" - meta_label : - tags_label : "Etiquetas:" - categories_label : "Categorías:" - date_label : "Actualizado:" - comments_label : "Dejar un comentario" - comments_title : "Comentar" - more_label : "Ver más" - related_label : "Podrías ver también" - follow_label : "Seguir:" - feed_label : "Feed" - powered_by : "Powered by" - website_label : "Sitio web" - email_label : "Email" - recent_posts : "Entradas recientes" - undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml" - comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos" - comment_form_comment_label : "Comentario" - comment_form_md_info : "Markdown está soportado." - comment_form_name_label : "Nombre" - comment_form_email_label : "Dirección de E-mail" - comment_form_website_label : "Sitio web (opcional)" - comment_btn_submit : "Enviar Commentario" - comment_btn_submitted : "Enviado" - comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado" - comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo" - loading_label : "Cargando..." -es-ES: - <<: *DEFAULT_ES -es-CO: - <<: *DEFAULT_ES - -# French -# ------ -fr: &DEFAULT_FR - page : "Page" - pagination_previous : "Précédent" - pagination_next : "Suivant" - breadcrumb_home_label : "Accueil" - breadcrumb_separator : "/" - menu_label : "Menu" - search_label : - toc_label : "Sur cette page" - ext_link_label : "Lien direct" - less_than : "moins de" - minute_read : "minute(s) de lecture" - share_on_label : "Partager sur" - meta_label : - tags_label : "Tags :" - categories_label : "Catégories :" - date_label : "Mis à jour :" - comments_label : "Laisser un commentaire" - comments_title : "Commentaires" - more_label : "Lire plus" - related_label : "Vous pourriez aimer aussi" - follow_label : "Contact" - feed_label : "Flux" - powered_by : "Propulsé par" - website_label : "Site" - email_label : "Email" - recent_posts : "Posts récents" - undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml" - comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués" - comment_form_comment_label : "Commentaire" - comment_form_md_info : "Markdown est supporté." - comment_form_name_label : "Nom" - comment_form_email_label : "Adresse mail" - comment_form_website_label : "Site web (optionnel)" - comment_btn_submit : "Envoyer" - comment_btn_submitted : "Envoyé" - comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé." - comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez." - loading_label : "Chargement..." - search_placeholder_text : "Entrez votre recherche..." - results_found : "Résultat(s) trouvé(s)" - back_to_top : "Retour en haut" -fr-FR: - <<: *DEFAULT_FR -fr-BE: - <<: *DEFAULT_FR -fr-CH: - <<: *DEFAULT_FR - -# Turkish -# ------- -tr: &DEFAULT_TR - page : "Sayfa" - pagination_previous : "Önceki" - pagination_next : "Sonraki" - breadcrumb_home_label : "Ana Sayfa" - breadcrumb_separator : "/" - menu_label : - search_label : - toc_label : "İçindekiler" - ext_link_label : "Doğrudan Bağlantı" - less_than : "Şu süreden az: " - minute_read : "dakika tahmini okuma süresi" - share_on_label : "Paylaş" - meta_label : - tags_label : "Etiketler:" - categories_label : "Kategoriler:" - date_label : "Güncelleme tarihi:" - comments_label : "Yorum yapın" - comments_title : "Yorumlar" - more_label : "Daha fazlasını öğrenin" - related_label : "Bunlar ilginizi çekebilir:" - follow_label : "Takip et:" - feed_label : "RSS" - powered_by : "Emeği geçenler: " - website_label : "Web sayfası" - email_label : "E-posta" - recent_posts : "Son yazılar" - undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi" - comment_form_info : "Email adresiniz gösterilmeyecektir. Zorunlu alanlar işaretlenmiştir" - comment_form_comment_label : "Yorumunuz" - comment_form_md_info : "Markdown desteklenmektedir." - comment_form_name_label : "Adınız" - comment_form_email_label : "Email adresiniz" - comment_form_website_label : "Websiteniz (opsiyonel)" - comment_btn_submit : "Yorum Yap" - comment_btn_submitted : "Gönderildi" - comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir." - comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin." - loading_label : "Yükleniyor..." -tr-TR: - <<: *DEFAULT_TR - -# Portuguese -# ---------- -pt: &DEFAULT_PT - page : "Página" - pagination_previous : "Anterior" - pagination_next : "Seguinte" - breadcrumb_home_label : "Início" - breadcrumb_separator : "/" - menu_label : - search_label : - toc_label : "Nesta Página" - ext_link_label : "Link Direto" - less_than : "menos de" - minute_read : "minutos de leitura" - share_on_label : "Partilhar no" - meta_label : - tags_label : "Etiquetas:" - categories_label : "Categorias:" - date_label : "Atualizado:" - comments_label : "Deixe um Comentário" - comments_title : "Comentários" - more_label : "Saber mais" - related_label : "Também pode gostar de" - follow_label : "Siga:" - feed_label : "Feed" - powered_by : "Feito com" - website_label : "Site" - email_label : "Email" - recent_posts : "Artigos Recentes" - undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml" - comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados" - comment_form_comment_label : "Comentário" - comment_form_md_info : "Markdown é suportado." - comment_form_name_label : "Nome" - comment_form_email_label : "Endereço Email" - comment_form_website_label : "Site (opcional)" - comment_btn_submit : "Sumbeter Comentário" - comment_btn_submitted : "Submetido" - comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado." - comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente." - loading_label : "A carregar..." -pt-PT: - <<: *DEFAULT_PT -# Brazilian Portuguese -pt-BR: - page : "Página" - pagination_previous : "Anterior" - pagination_next : "Próxima" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : - search_label : "Buscar" - toc_label : "Nesta página" - ext_link_label : "Link direto" - less_than : "menos que" - minute_read : "minuto(s) de leitura" - share_on_label : "Compartilhe: " - meta_label : - tags_label : "Tags:" - categories_label : "Categorias:" - date_label : "Atualizado em:" - comments_label : "Deixe um comentário" - comments_title : "Comentários" - more_label : "Aprenda mais" - related_label : "Talvez você também goste" - follow_label : "Acompanhe no" - feed_label : "Feed" - powered_by : "Desenvolvido com" - website_label : "Site" - email_label : "Email" - recent_posts : "Postagens recentes" - undefined_wpm : "Parâmetro indefinido em words_per_minute no _config.yml" - comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados" - comment_form_comment_label : "Comentário" - comment_form_md_info : "Markdown é suportado." - comment_form_name_label : "Nome" - comment_form_email_label : "Email" - comment_form_website_label : "Site (opcional)" - comment_btn_submit : "Enviar Comentário" - comment_btn_submitted : "Enviado" - comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado." - comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente." - loading_label : "Carregando..." - back_to_top : "Voltar para o topo" - search_placeholder_text : "Pesquisar..." - -# Italian -# ------- -it: &DEFAULT_IT - page : "Pagina" - pagination_previous : "Precedente" - pagination_next : "Prossima" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : - search_label : - toc_label : "Indice della pagina" - ext_link_label : "Link" - less_than : "meno di" - minute_read : "minuto/i di lettura" - share_on_label : "Condividi" - meta_label : - tags_label : "Tags:" - categories_label : "Categorie:" - date_label : "Aggiornato:" - comments_label : "Scrivi un commento" - comments_title : - more_label : "Scopri di più" - related_label : "Potrebbe Piacerti Anche" - follow_label : "Segui:" - feed_label : "Feed" - powered_by : "Powered by" - website_label : "Website" - email_label : "Email" - recent_posts : "Articoli Recenti" - undefined_wpm : "Parametro words_per_minute non definito in _config.yml" - comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori" - comment_form_comment_label : "Commenta" - comment_form_md_info : "Il linguaggio Markdown è supportato" - comment_form_name_label : "Nome" - comment_form_email_label : "Indirizzo email" - comment_form_website_label : "Sito Web (opzionale)" - comment_btn_submit : "Invia commento" - comment_btn_submitted : "Inviato" - comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato." - comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova." - loading_label : "Caricamento..." - search_placeholder_text : "Inserisci termini di ricerca..." - results_found : "Risultati" - back_to_top : "Vai su" -it-IT: - <<: *DEFAULT_IT - -# Chinese (zh-CN Chinese - China) -# -------------------------------- -zh: &DEFAULT_ZH_HANS - page : "页面" - pagination_previous : "向前" - pagination_next : "向后" - breadcrumb_home_label : "首页" - breadcrumb_separator : "/" - menu_label : "切换菜单" - search_label : - toc_label : "在本页上" - ext_link_label : "直接链接" - less_than : "少于" - minute_read : "分钟读完" - share_on_label : "分享" - meta_label : - tags_label : "标签:" - categories_label : "分类:" - date_label : "更新时间:" - comments_label : "留下评论" - comments_title : "评论" - more_label : "了解更多" - related_label : "猜您还喜欢" - follow_label : "关注:" - feed_label : "Feed" - powered_by : "技术来自于" - website_label : "网站" - email_label : "电子邮箱" - recent_posts : "最新文章" - undefined_wpm : "_config.yml配置中words_per_minute字段未定义" - comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。" - comment_form_comment_label : "评论" - comment_form_md_info : "Markdown语法已支持。" - comment_form_name_label : "姓名" - comment_form_email_label : "电子邮箱" - comment_form_website_label : "网站(可选)" - comment_btn_submit : "提交评论" - comment_btn_submitted : "已提交" - comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。" - comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。" - loading_label : "正在加载..." - search_placeholder_text : "输入您要搜索的关键词..." - results_found : "条记录匹配" - back_to_top : "返回顶部" -zh-CN: - <<: *DEFAULT_ZH_HANS -zh-SG: - <<: *DEFAULT_ZH_HANS -# Taiwan (Traditional Chinese) -zh-TW: &DEFAULT_ZH_HANT - page : "頁面" - pagination_previous : "較舊" - pagination_next : "較新" - breadcrumb_home_label : "首頁" - breadcrumb_separator : "/" - menu_label : "切換選單" - search_label : - toc_label : "本頁" - ext_link_label : "外部連結" - less_than : "少於" - minute_read : "分鐘閱讀" - share_on_label : "分享到" - meta_label : - tags_label : "標籤:" - categories_label : "分類:" - date_label : "更新時間:" - comments_label : "留言" - comments_title : "留言內容" - more_label : "了解更多" - related_label : "猜您有與趣" - follow_label : "追蹤:" - feed_label : "RSS Feed" - powered_by : "Powered by" - website_label : "網站" - email_label : "電子信箱" - recent_posts : "最新文章" - undefined_wpm : "_config.yml 中未定義 words_per_minute" - comment_form_info : "您的電子信箱不會被公開. 必填部份已標記" - comment_form_comment_label : "留言內容" - comment_form_md_info : "支援Markdown語法。" - comment_form_name_label : "名字" - comment_form_email_label : "電子信箱帳號" - comment_form_website_label : "網頁 (可選填)" - comment_btn_submit : "送出留言" - comment_btn_submitted : "已送出" - comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。" - comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。" - loading_label : "載入中..." -zh-HK: - <<: *DEFAULT_ZH_HANT - -# German / Deutsch -# ---------------- -de: &DEFAULT_DE - page : "Seite" - pagination_previous : "Vorherige" - pagination_next : "Nächste" - breadcrumb_home_label : "Start" - breadcrumb_separator : "/" - menu_label : "Menü ein-/ausschalten" - search_label : - toc_label : "Auf dieser Seite" - ext_link_label : "Direkter Link" - less_than : "weniger als" - minute_read : "Minuten zum lesen" - share_on_label : "Teilen auf" - meta_label : - tags_label : "Tags:" - categories_label : "Kategorien:" - date_label : "Aktualisiert:" - comments_label : "Hinterlassen Sie einen Kommentar" - comments_title : "Kommentare" - more_label : "Mehr anzeigen" - related_label : "Ihnen gefällt vielleicht auch" - follow_label : "Folgen:" - feed_label : "Feed" - powered_by : "Möglich durch" - website_label : "Webseite" - email_label : "E-Mail" - recent_posts : "Aktuelle Beiträge" - undefined_wpm : "Undefinierter Parameter words_per_minute in _config.yml" - comment_form_info : "Ihre E-Mail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert" - comment_form_comment_label : "Kommentar" - comment_form_md_info : "Markdown wird unterstützt." - comment_form_name_label : "Name" - comment_form_email_label : "E-Mail-Addresse" - comment_form_website_label : "Webseite (optional)" - comment_btn_submit : "Kommentar absenden" - comment_btn_submitted : "Versendet" - comment_success_msg : "Danke für Ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde." - comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen Sie alle benötigten Felder aus und versuchen Sie es erneut." - loading_label : "Lade..." - search_placeholder_text : "Suchbegriff eingeben..." - results_found : "Ergebnis(se) gefunden" -de-DE: - <<: *DEFAULT_DE -de-AT: - <<: *DEFAULT_DE -de-CH: - <<: *DEFAULT_DE -de-BE: - <<: *DEFAULT_DE -de-LI: - <<: *DEFAULT_DE -de-LU: - <<: *DEFAULT_DE - -# Nepali (Nepal) -# -------------- -ne: &DEFAULT_NE - page : "पृष्ठ" - pagination_previous : "अघिल्लो" - pagination_next : "अर्को" - breadcrumb_home_label : "गृह" - breadcrumb_separator : "/" - menu_label : "टगल मेनु" - search_label : - toc_label : "यो पृष्ठमा" - ext_link_label : "सिधा सम्पर्क" - less_than : "कम्तिमा" - minute_read : "मिनेट पढ्नुहोस्" - share_on_label : "शेयर गर्नुहोस्" - meta_label : - tags_label : "ट्यागहरू:" - categories_label : "वर्गहरु:" - date_label : "अद्यावधिक:" - comments_label : "टिप्पणी दिनुहोस्" - comments_title : "टिप्पणीहरू" - more_label : "अझै सिक्नुहोस्" - related_label : "तपाईं रुचाउन सक्नुहुन्छ " - follow_label : "पछ्याउनुहोस्:" - feed_label : "फिड" - powered_by : "Powered by" - website_label : "वेबसाइट" - email_label : "इमेल" - recent_posts : "ताजा लेखहरु" - undefined_wpm : "अपरिभाषित प्यारामिटर शब्दहरू_प्रति_मिनेट at _config.yml" - comment_form_info : "तपाइँको इमेल ठेगाना प्रकाशित गरिने छैन।आवश्यक जानकारीहरुमा चिन्ह लगाइको छ" - comment_form_comment_label : "टिप्पणी" - comment_form_md_info : "मार्कडाउन समर्थित छ।" - comment_form_name_label : "नाम" - comment_form_email_label : "इमेल ठेगाना" - comment_form_website_label : "वेबसाइट (वैकल्पिक)" - comment_btn_submit : "टिप्पणी दिनुहोस् " - comment_btn_submitted : "टिप्पणी भयो" - comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।" - comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।" - loading_label : "लोड हुँदैछ ..." -ne-NP: - <<: *DEFAULT_NE - -# Korean -# ------ -ko: &DEFAULT_KO - page : "페이지" - pagination_previous : "이전" - pagination_next : "다음" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : "토글 메뉴" - search_label : - toc_label : "On This Page" - ext_link_label : "직접 링크" - less_than : "최대" - minute_read : "분 소요" - share_on_label : "공유하기" - meta_label : - tags_label : "태그:" - categories_label : "카테고리:" - date_label : "업데이트:" - comments_label : "댓글남기기" - comments_title : "댓글" - more_label : "더 보기" - related_label : "참고" - follow_label : "팔로우:" - feed_label : "피드" - powered_by : "Powered by" - website_label : "웹사이트" - email_label : "이메일" - recent_posts : "최근 포스트" - undefined_wpm : "Undefined parameter words_per_minute at _config.yml" - comment_form_info : "이메일은 공개되지 않습니다. 작성 필요 필드:" - comment_form_comment_label : "댓글" - comment_form_md_info : "마크다운을 지원합니다." - comment_form_name_label : "이름" - comment_form_email_label : "이메일" - comment_form_website_label : "웹사이트(선택사항)" - comment_btn_submit : "댓글 등록" - comment_btn_submitted : "등록됨" - comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다." - comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요." - loading_label : "로딩중..." -ko-KR: - <<: *DEFAULT_KO - -# Russian / Русский -# ----------------- -ru: &DEFAULT_RU - page : "Страница" - pagination_previous : "Предыдущая" - pagination_next : "Следующая" - breadcrumb_home_label : "Главная" - breadcrumb_separator : "/" - menu_label : "Выпадающее меню" - search_label : - toc_label : "Содержание" - ext_link_label : "Прямая ссылка" - less_than : "менее" - minute_read : "мин на чтение" - share_on_label : "Поделиться" - meta_label : - tags_label : "Метки:" - categories_label : "Разделы:" - date_label : "Дата изменения:" - comments_label : "Оставить комментарий" - comments_title : "Комментарии" - more_label : "Читать далее" - related_label : "Вам также может понравиться" - follow_label : "Связаться со мной:" - feed_label : "RSS-лента" - powered_by : "Сайт работает на" - website_label : "Сайт" - email_label : "Электронная почта" - recent_posts : "Свежие записи" - undefined_wpm : "Не определён параметр words_per_minute в _config.yml" - comment_form_info : "Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены" - comment_form_comment_label : "Комментарий" - comment_form_md_info : "Поддерживается синтаксис Markdown." - comment_form_name_label : "Имя" - comment_form_email_label : "Электронная почта" - comment_form_website_label : "Ссылка на сайт (необязательно)" - comment_btn_submit : "Оставить комментарий" - comment_btn_submitted : "Отправлено" - comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки." - comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова." - loading_label : "Отправка..." - search_placeholder_text : "Введите поисковый запрос..." - results_found : "Найдено" -ru-RU: - <<: *DEFAULT_RU - -# Lithuanian / Lietuviškai -# ------------------------ -lt: &DEFAULT_LT - page : "Puslapis" - pagination_previous : "Ankstesnis" - pagination_next : "Sekantis" - breadcrumb_home_label : "Pagrindinis" - breadcrumb_separator : "/" - menu_label : "Meniu rodymas" - search_label : - toc_label : "Turinys" - ext_link_label : "Tiesioginė nuoroda" - less_than : "mažiau nei" - minute_read : "min. skaitymo" - share_on_label : "Pasidalinti" - meta_label : - tags_label : "Žymės:" - categories_label : "Kategorijos:" - date_label : "Atnaujinta:" - comments_label : "Palikti komentarą" - comments_title : "Komentaras" - more_label : "Skaityti daugiau" - related_label : "Taip pat turėtų patikti" - follow_label : "Sekti:" - feed_label : "Šaltinis" - powered_by : "Sukurta su" - website_label : "Tinklapis" - email_label : "El. paštas" - recent_posts : "Naujausi įrašai" - undefined_wpm : "Nedeklaruotas parametras words_per_minute faile _config.yml" - comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti." - comment_form_comment_label : "Komentaras" - comment_form_md_info : "Markdown palaikomas." - comment_form_name_label : "Vardas" - comment_form_email_label : "El. paštas" - comment_form_website_label : "Tinklapis (nebūtina)" - comment_btn_submit : "Komentuoti" - comment_btn_submitted : "Įrašytas" - comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas." - comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą." - loading_label : "Kraunama..." -lt-LT: - <<: *DEFAULT_LT - -# Greek -# ----- -gr: &DEFAULT_GR - page : "Σελίδα" - pagination_previous : "Προηγούμενo" - pagination_next : "Επόμενo" - breadcrumb_home_label : "Αρχική" - breadcrumb_separator : "/" - menu_label : "Μενού" - search_label : - toc_label : "Περιεχόμενα" - ext_link_label : "Εξωτερικός Σύνδεσμος" - less_than : "Λιγότερο από" - minute_read : "λεπτά ανάγνωσης" - share_on_label : "Μοιραστείτε το" - meta_label : - tags_label : "Ετικέτες:" - categories_label : "Κατηγορίες:" - date_label : "Ενημερώθηκε:" - comments_label : "Αφήστε ένα σχόλιο" - comments_title : "Σχόλια" - more_label : "Διάβαστε περισσότερα" - related_label : "Σχετικές αναρτήσεις" - follow_label : "Ακολουθήστε:" - feed_label : "RSS Feed" - powered_by : "Δημιουργήθηκε με" - website_label : "Ιστοσελίδα" - email_label : "Email" - recent_posts : "Τελευταίες αναρτήσεις" - undefined_wpm : "Δεν έχει οριστεί η παράμετρος words_per_minute στο αρχείο _config.yml" - comment_form_info : "Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα απαιτούμενα πεδία εμφανίζονται με αστερίσκο" - comment_form_comment_label : "Σχόλιο" - comment_form_md_info : "Το πεδίο υποστηρίζει Markdown." - comment_form_name_label : "Όνομα" - comment_form_email_label : "Διεύθυνση email" - comment_form_website_label : "Ιστοσελίδα (προαιρετικό)" - comment_btn_submit : "Υπόβαλε ένα σχόλιο" - comment_btn_submitted : "Έχει υποβληθεί" - comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί." - comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά." - loading_label : "Φόρτωση..." - search_placeholder_text : "Εισάγετε όρο αναζήτησης..." - results_found : "Αποτελέσματα" -gr-GR: - <<: *DEFAULT_GR - -# Swedish -# ------- -sv: &DEFAULT_SV - page : "Sidan" - pagination_previous : "Föregående" - pagination_next : "Nästa" - breadcrumb_home_label : "Hem" - breadcrumb_separator : "/" - menu_label : "Växla menyläge" - search_label : "Växla sökläge" - toc_label : "På denna sida" - ext_link_label : "Direkt länk" - less_than : "mindre än" - minute_read : "minut läsning" - share_on_label : "Dela på" - meta_label : - tags_label : "Taggar:" - categories_label : "Kategorier:" - date_label : "Uppdaterades:" - comments_label : "Lämna en kommentar" - comments_title : "Kommentarer" - more_label : "Lär dig mer" - related_label : "Du kanske vill även läsa:" - follow_label : "Följ:" - feed_label : "Flöde" - powered_by : "Framställd med" - website_label : "Webbsida" - email_label : "E-post" - recent_posts : "Senaste inlägg" - undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml" - comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade." - comment_form_comment_label : "Kommentar" - comment_form_md_info : "Stöd för Markdown finns." - comment_form_name_label : "Namn" - comment_form_email_label : "E-post adress" - comment_form_website_label : "Webdsida (valfritt)" - comment_btn_submit : "Skicka en kommentar" - comment_btn_submitted : "Kommentaren har tagits emot" - comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts." - comment_error_msg : "Tyvärr det har blivit något fel i ett av fälten, se till att du fyllt i alla obligatoriska fält och försök igen." - loading_label : "Laddar..." - search_placeholder_text : "Fyll i sökterm..." - results_found : "Resultat funna" - back_to_top : "Tillbaka till toppen" -sv-SE: - <<: *DEFAULT_SV -sv-FI: - <<: *DEFAULT_SV - -# Dutch -# ----- -nl: &DEFAULT_NL - page : "Pagina" - pagination_previous : "Vorige" - pagination_next : "Volgende" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : "Wissel Menu" - search_label : - toc_label : "Op deze pagina" - ext_link_label : "Directe Link" - less_than : "minder dan" - minute_read : "minuut gelezen" - share_on_label : "Deel op" - meta_label : - tags_label : "Labels:" - categories_label : "Categorieën:" - date_label : "Bijgewerkt:" - comments_label : "Laat een reactie achter" - comments_title : "Commentaren" - more_label : "Meer informatie" - related_label : "Bekijk ook eens" - follow_label : "Volg:" - feed_label : "Feed" - powered_by : "Aangedreven door" - website_label : "Website" - email_label : "Email" - recent_posts : "Recente berichten" - undefined_wpm : "Niet gedefinieerde parameter words_per_minute bij _config.yml" - comment_form_info : "Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd" - comment_form_comment_label : "Commentaar" - comment_form_md_info : "Markdown wordt ondersteund." - comment_form_name_label : "Naam" - comment_form_email_label : "E-mailadres" - comment_form_website_label : "Website (optioneel)" - comment_btn_submit : "Commentaar toevoegen" - comment_btn_submitted : "Toegevoegd" - comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd." - comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw." - loading_label : "Laden..." -nl-BE: - <<: *DEFAULT_NL -nl-NL: - <<: *DEFAULT_NL - -# Indonesian -# ---------- -id: &DEFAULT_ID - page : "Halaman" - pagination_previous : "Kembali" - pagination_next : "Maju" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : "Menu Toggle" - search_label : - toc_label : "Pada Halaman Ini" - ext_link_label : "Link langsung" - less_than : "Kurang dari" - minute_read : "Waktu baca" - share_on_label : "Berbagi di" - meta_label : - tags_label : "Golongan:" - categories_label : "Kategori:" - date_label : "Diupdate:" - comments_label : "Tinggalkan komentar" - comments_title : "Komentar" - more_label : "Pelajari lagi" - related_label : "Anda juga akan suka" - follow_label : "Ikuti:" - feed_label : "Feed" - powered_by : "Didukung oleh" - website_label : "Website" - email_label : "Email" - recent_posts : "Posting terbaru" - undefined_wpm : "Parameter terdeskripsi words_per_minute di _config.yml" - comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai" - comment_form_comment_label : "Komentar" - comment_form_md_info : "Markdown disupport." - comment_form_name_label : "Nama" - comment_form_email_label : "Alamat email" - comment_form_website_label : "Website (opsional)" - comment_btn_submit : "Submit Komentar" - comment_btn_submitted : "Telah disubmit" - comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui." - comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." - loading_label : "Sedang meload..." -id-ID: - <<: *DEFAULT_ID - -# Vietnamese -# ---------- -vi: &DEFAULT_VI - page : "Trang" - pagination_previous : "Trước" - pagination_next : "Sau" - breadcrumb_home_label : "Trang chủ" - breadcrumb_separator : "/" - menu_label : "Menu" - search_label : - toc_label : "Tại trang này" - ext_link_label : "Đường dẫn trực tiếp" - less_than : "nhỏ hơn" - minute_read : "phút đọc" - share_on_label : "Chia sẻ tại" - meta_label : - tags_label : "Nhãn:" - categories_label : "Chủ đề:" - date_label : "Cập nhật:" - comments_label : "Để lại bình luận" - comments_title : "Bình luận" - more_label : "Mở rộng" - related_label : "Có thể bạn cũng thích" - follow_label : "Theo dõi:" - feed_label : "Feed" - powered_by : "Được hỗ trợ bởi" - website_label : "Website" - email_label : "Email" - recent_posts : "Bài viết mới" - undefined_wpm : "Chưa định nghĩa thông số words_per_minute tại _config.yml" - comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu." - comment_form_comment_label : "Bình luận" - comment_form_md_info : "Hỗ trợ Markdown." - comment_form_name_label : "Tên" - comment_form_email_label : "Địa chỉ email" - comment_form_website_label : "Website (không bắt buộc)" - comment_btn_submit : "Gửi bình luận" - comment_btn_submitted : "Đã được gửi" - comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt." - comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại." - loading_label : "Đang tải..." - search_placeholder_text : "Nhập từ khóa cần tìm..." - results_found : "Kết quả tìm được" - back_to_top : "Lên đầu trang" -vi-VN: - <<: *DEFAULT_VI - -# Danish -# ------ -da: &DEFAULT_DA - page : "Side" - pagination_previous : "Forrige" - pagination_next : "Næste" - breadcrumb_home_label : "Home" - breadcrumb_separator : "/" - menu_label : "Vis/skjul menu" - search_label : - toc_label : "På denne side" - ext_link_label : "Direkte link" - less_than : "mindre end" - minute_read : "minutters læsning" - share_on_label : "Del på" - meta_label : - tags_label : "Nøgleord:" - categories_label : "Kategorier:" - date_label : "Opdateret:" - comments_label : "Skriv en kommentar" - comments_title : "Kommentarer" - more_label : "Lær mere" - related_label : "Måske kan du også lide" - follow_label : "Følg:" - feed_label : "Feed" - powered_by : "Drives af" - website_label : "Website" - email_label : "E-mail" - recent_posts : "Seneste indlæg" - undefined_wpm : "Parameteren words_per_minute er ikke defineret i _config.yml" - comment_form_info : "Din e-mail bliver ikke offentliggjort. Obligatoriske felter er markeret" - comment_form_comment_label : "Kommentar" - comment_form_md_info : "Markdown er understøttet." - comment_form_name_label : "Navn" - comment_form_email_label : "E-mail" - comment_form_website_label : "Website (frivillig)" - comment_btn_submit : "Send kommentar" - comment_btn_submitted : "Sendt" - comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt." - comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt." - loading_label : "Indlæser..." - search_placeholder_text : "Hvad leder du efter..." - results_found : "Resultat(er) fundet" - back_to_top : "Tilbage til toppen" -da-DK: - <<: *DEFAULT_DA - -# Polish -# ------ -pl: &DEFAULT_PL - page : "Strona" - pagination_previous : "Poprzednia" - pagination_next : "Następna" - breadcrumb_home_label : "Strona główna" - breadcrumb_separator : "/" - menu_label : "Przełącz menu" - search_label : - toc_label : "Spis treści" - ext_link_label : "Link bezpośredni" - less_than : "mniej niż" - minute_read : "minut(y)" - share_on_label : "Udostępnij" - meta_label : - tags_label : "Tagi:" - categories_label : "Kategorie:" - date_label : "Ostatnia aktualizacja:" - comments_label : "Zostaw komentarz" - comments_title : "Komentarze" - more_label : "Dowiedz się więcej" - related_label : "Także może Ci się spodobać" - follow_label : "Śledź:" - feed_label : "Feed" - powered_by : "Powstało dzięki" - website_label : "Strona" - email_label : "Email" - recent_posts : "Najnowsze wpisy" - undefined_wpm : "Parametr words_per_minute nie został zdefiniowany w _config.yml." - comment_form_info : "Twój adres email nie będzie udostępiony. Wymagane pola są oznaczone." - comment_form_comment_label : "Skomentuj" - comment_form_md_info : "Markdown jest wspierany" - comment_form_name_label : "Imię" - comment_form_email_label : "Adres email" - comment_form_website_label : "Strona www (opcjonalna)" - comment_btn_submit : "Skomentuj" - comment_btn_submitted : "Komentarz dodany" - comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji." - comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie." - loading_label : "Trwa ładowanie strony..." -pl-PL: - <<: *DEFAULT_PL - -# Japanese -# -------- -ja: &DEFAULT_JA - page : "ページ" - pagination_previous : "前へ" - pagination_next : "次へ" - breadcrumb_home_label : "ホーム" - breadcrumb_separator : "/" - menu_label : "メニュー" - search_label : - toc_label : "目次" - ext_link_label : "リンク" - less_than : - minute_read : - share_on_label : "共有" - meta_label : - tags_label : "タグ:" - categories_label : "カテゴリー:" - date_label : "更新日時:" - comments_label : "コメントする" - comments_title : "コメント" - more_label : "さらに詳しく" - related_label : "関連記事" - follow_label : "フォロー" - feed_label : - powered_by : - website_label : - email_label : - recent_posts : "最近の投稿" - undefined_wpm : "パラメータ words_per_minute が _config.yml で定義されていません" - comment_form_info : "メールアドレスが公開されることはありません。次の印のある項目は必ず入力してください:" - comment_form_comment_label : "コメント" - comment_form_md_info : "Markdown を使用できます" - comment_form_name_label : "名前" - comment_form_email_label : "メールアドレス" - comment_form_website_label : "URL (任意)" - comment_btn_submit : "コメントを送信する" - comment_btn_submitted : "送信しました" - comment_success_msg : "コメントありがとうございます! コメントは承認されるとページに表示されます。" - comment_error_msg : "送信エラーです。必須項目がすべて入力されていることを確認して再送信してください。" - loading_label : "読み込み中..." - search_placeholder_text : "検索キーワードを入力してください..." - results_found : "件" -ja-JP: - <<: *DEFAULT_JA - -# Slovak -# ----------------- -sk: &DEFAULT_SK - page : "Stránka" - pagination_previous : "Predošlá" - pagination_next : "Ďalšia" - breadcrumb_home_label : "Domov" - breadcrumb_separator : "/" - menu_label : "Menu" - search_label : - toc_label : "Obsah" - ext_link_label : "Priamy odkaz" - less_than : "menej ako" - minute_read : "minút" - share_on_label : "Zdieľaj na" - meta_label : - tags_label : "Tagy:" - categories_label : "Kategórie:" - date_label : "Aktualizované:" - comments_label : "Zanechaj odkaz" - comments_title : "Komentáre" - more_label : "Dozvedieť sa viac" - related_label : "Podobné články" - follow_label : "Sleduj:" - feed_label : "Zoznam" - powered_by : "Stránka vytvorená pomocou" - website_label : "Web stránka" - email_label : "Email" - recent_posts : "Najnovšie príspevky" - undefined_wpm : "Nedefinovaný parameter words_per_minute v _config.yml" - comment_form_info : "Tvoja emailová adresa nebude publikovaná. Požadované polia sú označené" - comment_form_comment_label : "Komentár" - comment_form_md_info : "Markdown je podporovaný." - comment_form_name_label : "Meno" - comment_form_email_label : "Emailová adresa" - comment_form_website_label : "Webstránka (voliteľné)" - comment_btn_submit : "Vlož komentár" - comment_btn_submitted : "Vložený" - comment_success_msg : "Ďakujem za tvoj komentár! Po schválení bude zobrazený na stránke." - comment_error_msg : "Prepáč, pri ukladaní nastala chyba. Ubezpeč sa prosím, že si vyplnil všetky požadované polia a skús znova." - loading_label : "Načítava sa..." - search_placeholder_text : "Zadaj hľadaný výraz..." - results_found : "Nájdených výsledkov" - back_to_top : "Na začiatok stránky" -sk-SK: - <<: *DEFAULT_SK - -# Hungarian -# ----------------- -hu: &DEFAULT_HU - page : "Oldal" - pagination_previous : "Előző" - pagination_next : "Következő" - breadcrumb_home_label : "Kezdőlap" - breadcrumb_separator : "/" - menu_label : "Menü nyit/zár" - search_label : - toc_label : "Ezen az oldalon" - ext_link_label : "Közvetlen Link" - less_than : "kevesebb mint" - minute_read : "eltöltött percek" - share_on_label : "Megosztás" - meta_label : - tags_label : "Tagek:" - categories_label : "Kategóriák:" - date_label : "Frissítve:" - comments_label : "Szólj hozzá!" - comments_title : "Hozzászólások" - more_label : "Tovább" - related_label : "Ajánlások" - follow_label : "Követés:" - feed_label : "Folyam" - powered_by : "Powered by" - website_label : "Honlap" - email_label : "Email" - recent_posts : "Friss cikkek" - undefined_wpm : "Ismeretlen paraméter words_per_minute : _config.yml" - comment_form_info : "Az e-mail címed nem lesz publikus. A csillagozott mezők kitöltése kötelező." - comment_form_comment_label : "Hozzászólás" - comment_form_md_info : "Támogatott formázási mód: Markdown" - comment_form_name_label : "Név" - comment_form_email_label : "Email cím" - comment_form_website_label : "Honlap (nem kötelező):" - comment_btn_submit : "Hozzászólás elküldése" - comment_btn_submitted : "Hozzászólás elküldve" - comment_success_msg : "Köszönjük a Hozzászólást! A Hozzászólások csak előzetes moderáció után lesznek publikusak." - comment_error_msg : "Hoppá, hiba történt a beküldés közben. Kérlek ellenőrizd hogy minden kötelező mező ki van-e töltve." - loading_label : "Betöltés..." - search_placeholder_text : "Keresendő szöveg..." - results_found : "Találatok:" - back_to_top : "Oldal tetejére" -hu-HU: - <<: *DEFAULT_HU - -# Romanian -# ----------------- -ro: &DEFAULT_RO - page : "Pagina" - pagination_previous : "Anterior" - pagination_next : "Următor" - breadcrumb_home_label : "Acasă" - breadcrumb_separator : "/" - menu_label : "Comută meniul" - search_label : - toc_label : "Pe această pagină" - ext_link_label : "Link direct" - less_than : "mai puțin de" - minute_read : "minute de citit" - share_on_label : "Distribuie pe" - meta_label : - tags_label : "Etichete:" - categories_label : "Categorii:" - date_label : "Actualizat:" - comments_label : "Lasă un comentariu" - comments_title : "Comentarii" - more_label : "Citește mai departe" - related_label : "S-ar putea să-ți placă" - follow_label : "Urmărește:" - feed_label : "Feed RSS" - powered_by : "Cu sprijinul" - website_label : "Site" - email_label : "Email" - recent_posts : "Articole recente" - undefined_wpm : "Parametru words_per_minute nedefinit în _config.yml" - comment_form_info : "Adresa ta de email nu va fi făcută publică. Câmpurile marcate sunt obligatorii" - comment_form_comment_label : "Comentariu" - comment_form_md_info : "Markdown este suportat." - comment_form_name_label : "Nume" - comment_form_email_label : "Adresă de email" - comment_form_website_label : "Site (opțional)" - comment_btn_submit : "Trimite comentariul" - comment_btn_submitted : "Trimis" - comment_success_msg : "Mulțumesc pentru comentariu! Va apărea pe site în momentul în care va fi aprobat." - comment_error_msg : "Scuze, este o problemă cu comentariul tău. Asigură-te că toate câmpurile obligatorii au fost completate și încearcă din nou." - loading_label : "Se încarcă..." - search_placeholder_text : "Caută ceva..." - results_found : "Rezultate găsite" - back_to_top : "Înapoi în susul paginii" -ro-RO: - <<: *DEFAULT_RO - -# Punjabi -# ----------------- -pa: &DEFAULT_PA - page : "ਸਫ਼ਾ" - pagination_previous : "ਪਿਛਲਾ" - pagination_next : "ਅਗਲਾ " - breadcrumb_home_label : "ਘਰ" - breadcrumb_separator : "/" - menu_label : "ਟੌਗਲ ਮੀਨੂ" - search_label : - toc_label : "ਇਸ ਸਫ਼ੇ 'ਤੇ" - ext_link_label : "ਸਿੱਧਾ ਸੰਪਰਕ" - less_than : "ਤੋਂ ਘੱਟ" - minute_read : "ਮਿੰਟ ਵਿੱਚ ਪੜਿਆ ਜਾ ਸਕਦਾ ਹੈ" - share_on_label : "ਸਾਂਝਾ ਕਰੋ" - meta_label : - tags_label : "ਟੈਗ" - categories_label : "ਵਰਗ" - date_label : "ਅਪਡੇਟ ਕੀਤਾ:" - comments_label : "ਇੱਕ ਟਿੱਪਣੀ ਛੱਡੋ" - comments_title : "ਟਿੱਪਣੀਆਂ" - more_label : "ਹੋਰ ਜਾਣੋ" - related_label : "ਤੁਸੀਂ ਇਸਦਾ ਆਨੰਦ ਵੀ ਲੈ ਸਕਦੇ ਹੋ" - follow_label : "ਫਾਲੋ ਅੱਪ ਕਰੋ:" - feed_label : "ਫੀਡ" - powered_by : "ਦੁਆਰਾ ਸੰਚਾਲਿਤ" - website_label : "ਵੈੱਬਸਾਇਟ" - email_label : "ਈਮੇਲ" - recent_posts : "ਹਾਲ ਹੀ ਦੇ ਪੋਸਟ" - undefined_wpm : "_config.yml ਤੇ ਅਣ-ਪ੍ਰਭਾਸ਼ਿਤ ਪੈਰਾਮੀਟਰ words_per_minute" - comment_form_info : "ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਅਨੁਮਾਨਿਤ ਸਥਾਨਾਂ ਨੂੰ ਅੰਡਰਲਾਈਨ ਕੀਤਾ ਗਿਆ ਹੈ" - comment_form_comment_label : "ਟਿੱਪਣੀ" - comment_form_md_info : "ਮਾਰਕਡਾਊਨ ਵਰਤ ਸਕਦੇ ਹੋ।" - comment_form_name_label : "ਨਾਮ" - comment_form_email_label : "ਈਮੇਲ ਪਤਾ" - comment_form_website_label : "ਵੈਬਸਾਈਟ (ਵਿਕਲਪਿਕ)" - comment_btn_submit : "ਕੋਈ ਟਿੱਪਣੀ ਭੇਜੋ" - comment_btn_submitted : "ਪੇਸ਼ ਕੀਤਾ" - comment_success_msg : "ਤੁਹਾਡੀਆਂ ਟਿੱਪਣੀਆਂ ਲਈ ਧੰਨਵਾਦ! ਇਹ ਮਨਜ਼ੂਰੀ ਮਿਲਣ ਦੇ ਬਾਅਦ ਸਾਈਟ 'ਤੇ ਦਿਖਾਇਆ ਜਾਵੇਗਾ।" - comment_error_msg : "ਮੁਆਫ ਕਰਨਾ, ਤੁਹਾਡੀ ਅਧੀਨਗੀ ਵਿੱਚ ਕੋਈ ਗਲਤੀ ਹੋਈ ਸੀ ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਖੇਤਰ ਪੂਰੇ ਹੋ ਗਏ ਹਨ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" - loading_label : "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..." - search_placeholder_text : "ਆਪਣੀ ਖੋਜ ਦੇ ਸ਼ਬਦ ਨੂੰ ਦਰਜ ਕਰੋ..." - results_found : "ਨਤੀਜਾ ਮਿਲਿਆ/ਮਿਲੇ" - back_to_top : "ਵਾਪਸ ਚੋਟੀ 'ਤੇ ਜਾਓ" -pa-IN: - <<: *DEFAULT_PA - -# Persian (Farsi) -# -------------- -fa: &DEFAULT_FA - page : "صفحه" - pagination_previous : "قبلی" - pagination_next : "بعدی" - breadcrumb_home_label : "صفحه اصلی" - breadcrumb_separator : "/" - menu_label : "فهرست" - toc_label : "در این صفحه" - ext_link_label : "لینک مستقیم" - less_than : " " - minute_read : "(طول مطالعه (دقیقه" - share_on_label : "اشتراک گذاری در" - meta_label : - tags_label : "تگ ها: " - categories_label : "دسته بندی ها: " - date_label : "به روز شده در: " - comments_label : "ارسال نظر" - comments_title : "نظرات" - more_label : "ادامه مطلب" - related_label : "ممکن است از این مطالب نیز لذت ببرید" - follow_label : "دنبال کنید: " - feed_label : "خوراک" - powered_by : "طراحی شده توسط" - website_label : "سایت اینترنتی" - email_label : "پست الکترونیک" - recent_posts : "آخرین مطالب" - undefined_wpm : ".(words_per_minute) _config.yml متغیر اشتباه در" - comment_form_info : ".آدرس ایمیل شما منتشر نخواهد شد. فیلدهای اجباری مشخص شده اند" - comment_form_comment_label : "دیدگاه" - comment_form_md_info : ".پشتیبانی می شود Markdown" - comment_form_name_label : "نام" - comment_form_email_label : "پست الکترونیک" - comment_form_website_label : "سایت اینترنتی (اختیاری)" - comment_btn_submit : "ارسال نظر" - comment_btn_submitted : "ارسال شد" - comment_success_msg : ".باتشکر از ارسال دیدگاه! پس از تأیید، این دیدگاه در سایت نشان داده خواهد شد" - comment_error_msg : ".متاسفانه در ارسال شما خطایی بود. لطفا مطمئن شوید تمام فیلدهای مورد نیاز تکمیل شده و دوباره امتحان کنید" - loading_label : "...بارگذاری" - search_placeholder_text : "...عبارت جستجوی خود را وارد کنید" - results_found : "نتایج" - back_to_top : "بازگشت به بالا" -fa-IR: - <<: *DEFAULT_FA - - -# Malayalam -# ----------------- -ml: &DEFAULT_ML - page : "പേജ്" - pagination_previous : "തിരികെ" - pagination_next : "മുന്നോട്ട്" - breadcrumb_home_label : "ഹോം" - breadcrumb_separator : "/" - menu_label : "ടോഗിൾ മെനു" - search_label : "ടോഗിൾ സെർച്ച്" - toc_label : "ഈ പേജിൽ" - ext_link_label : "ലിങ്കിലേക് പോകാൻ" - less_than : "ഏതാണ്ട്" - minute_read : "മിനിറ്റ് ദൈർഖ്യം" - share_on_label : "ഷെയർ ചെയ്യുവാൻ " - meta_label : - tags_label : "ടാഗുകൾ:" - categories_label : "വിഭാഗങ്ങൾ:" - date_label : "അവസാന മാറ്റം:" - comments_label : "അഭിപ്രായം രേഖപ്പെടുത്തുക" - comments_title : "അഭിപ്രായങ്ങൾ" - more_label : "കൂടുതൽ അറിയുവാൻ" - related_label : "നിങ്ങൾക് ഇതും ഇഷ്ടപ്പെട്ടേക്കാം" - follow_label : "പിന്തുടരുക:" - feed_label : "ഫീഡ്" - powered_by : "പവേർഡ് ബൈ" - website_label : "വെബ്സൈറ്റ്" - email_label : "ഇ-മെയിൽ" - recent_posts : "സമീപകാല പോസ്റ്റുകൾ" - undefined_wpm : "Config.yml ലെ words_per_minute പരാമീറ്റർ നിർവചിച്ചിട്ടില്ല." - comment_form_info : "നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ അടയാളപ്പെടുത്തി." - comment_form_comment_label : "കമന്റ്" - comment_form_md_info : "Markdown സപ്പോർട്ട് ചെയ്യുന്നതാണ്." - comment_form_name_label : "പേര്" - comment_form_email_label : "ഇ-മെയിൽ" - comment_form_website_label : "വെബ്സൈറ് (ഓപ്ഷണൽ)" - comment_btn_submit : "അഭിപ്രായം രേഖപ്പെടുത്തുക" - comment_btn_submitted : "രേഖപ്പെടുത്തി" - comment_success_msg : "നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി! ഇത് അംഗീകരിച്ചുകഴിഞ്ഞാൽ ഇത് സൈറ്റിൽ പ്രദർശിപ്പിക്കും." - comment_error_msg : "ക്ഷമിക്കണം, നിങ്ങളുടെ സമർപ്പണവുമായി ബന്ധപ്പെട്ട് ഒരു പിശകുണ്ടായിരുന്നു. ആവശ്യമായ എല്ലാ ഫീൽഡുകളും പൂർത്തിയായിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, വീണ്ടും ശ്രമിക്കുക." - loading_label : "ലോഡിംഗ്..." - search_placeholder_text : "നിങ്ങളുടെ തിരയൽ പദം നൽകുക..." - results_found : "ഫലം (കൾ) കണ്ടെത്തി" - back_to_top : "മുകളിലേയ്ക്ക്" -ml-IN: - <<: *DEFAULT_ML - -# Thailand -# -------------- -th: &DEFAULT_TH - page : "หน้า" - pagination_previous : "ก่อนหน้า" - pagination_next : "ถัดไป" - breadcrumb_home_label : "หน้าแรก" - breadcrumb_separator : "/" - menu_label : "พับเมนู" - search_label : "พับการค้นหา" - toc_label : "บนหน้านี้" - ext_link_label : "ลิงก์โดยตรง" - less_than : "น้อยกว่า" - minute_read : "นาที ในการอ่าน" - share_on_label : "แชร์ไปที่" - meta_label : - tags_label : "แท็ก:" - categories_label : "หมวดหมู่:" - date_label : "อัพเดตล่าสุด:" - comments_label : "แสดงความคิดเห็น" - comments_title : "ความคิดเห็น" - more_label : "อ่านต่อ" - related_label : "คุณอาจจะชอบสิ่งนี้" - follow_label : "ติดตาม:" - feed_label : "ฟืดข่าว" - powered_by : "ขับเคลื่อนโดย" - website_label : "เว็บไซต์" - email_label : "อีเมล" - recent_posts : "โพสล่าสุด" - undefined_wpm : "ไม่สามารถระบุพารามิเตอร์ words_per_minute ได้ใน _config.yml" - comment_form_info : "อีเมลของคุณไม่สามารถโพสสาธารณะได้ กรุณากรอกช่องที่ระบุด้วยเครื่องหมายดอกจันไว้" - comment_form_comment_label : "แสดงความคิดเห็น" - comment_form_md_info : "มาร์กดาวน์ได้รับการสนับสนุน" - comment_form_name_label : "ชื่อ" - comment_form_email_label : "ที่อยู่อีเมล" - comment_form_website_label : "เว็บไซต์ (ตัวเลือก)" - comment_btn_submit : "ส่งความคิดเห็น" - comment_btn_submitted : "ส่งเรียบร้อยแล้ว" - comment_success_msg : "ขอบคุณสำหรับการแสดงความคิดเห็น! ความคิดเห็นจะได้รับการแสดงหลังจากได้รับการยืนยัน" - comment_error_msg : "ขออภัย, มีบางอย่างผิดพลาดจากการส่งแบบฟอร์ม กรุณาตรวจทานทุกช่อง และลองส่งใหม่อีกครั้ง" - loading_label : "กำลังโหลด..." - search_placeholder_text : "ใส่คำค้นหาของคุณ..." - results_found : "ผลการค้นหา พบ" - back_to_top : "กลับด้านบน" -th-TH: - <<: *DEFAULT_TH - -# Hindi -# ----------------- -hi: &DEFAULT_HI - page : "पृष्ठ" - pagination_previous : "पिछला" - pagination_next : "अगला" - breadcrumb_home_label : "घर" - breadcrumb_separator : "/" - menu_label : "टॉगल मेनू" - toc_label : "इस पृष्ठ पर" - ext_link_label : "सीधा संपर्क" - less_than : "से कम" - minute_read : "मिनट में पढ़ सकते हैं" - share_on_label : "साझा करें" - meta_label : - tags_label : "अंकितक:" - categories_label : "श्रेणियाँ:" - date_label : "अपडेट किया गया:" - comments_label : "एक टिप्पणी छोड़ें" - comments_title : "टिप्पणियाँ" - more_label : "और अधिक जानें" - related_label : "आप इसका भी आनंद ले सकते हैं" - follow_label : "अनुसरण करे:" - feed_label : "फ़ीड" - powered_by : "द्वारा संचालित" - website_label : "वेबसाइट" - email_label : "ईमेल" - recent_posts : "हाल के पोस्ट" - undefined_wpm : "_config.yml पर अपरिभाषित पैरामीटर words_per_minute" - comment_form_info : "आपका ईमेल पता प्रकाशित नहीं किया जाएगा। अपेक्षित स्थानों को रेखांकित कर दिया गया है" - comment_form_comment_label : "टिप्पणी" - comment_form_md_info : "मार्कडाउन की अनुमति है।" - comment_form_name_label : "नाम" - comment_form_email_label : "ईमेल पता" - comment_form_website_label : "वेबसाइट (ऐच्छिक)" - comment_btn_submit : "टिप्पणी भेजें" - comment_btn_submitted : "प्रस्तुत" - comment_success_msg : "आपके कमेंट के लिए धन्यवाद! इसे स्वीकृति मिलने के बाद साइट पर दिखाया जाएगा।" - comment_error_msg : "क्षमा करें, आपके सबमिशन के साथ एक त्रुटि हुई थी। कृपया सुनिश्चित करें कि सभी आवश्यक फ़ील्ड पूरा हो गए हैं और पुनः प्रयास करें।" - loading_label : "लोड हो रहा है..." - search_placeholder_text : "अपना खोज शब्द दर्ज करें..." - results_found : "परिणाम मिला/मिले" - back_to_top : "शीर्ष पर वापस" -hi-IN: - <<: *DEFAULT_HI - -# Another locale -# -------------- -# diff --git a/docs/_docs/01-quick-start-guide.md b/docs/_docs/01-quick-start-guide.md index 709944526f3c..0691f1d4ce4e 100644 --- a/docs/_docs/01-quick-start-guide.md +++ b/docs/_docs/01-quick-start-guide.md @@ -2,7 +2,7 @@ title: "Quick-Start Guide" permalink: /docs/quick-start-guide/ excerpt: "How to quickly install and setup Minimal Mistakes for use with GitHub Pages." -last_modified_at: 2019-04-18T15:53:52-04:00 +last_modified_at: 2021-06-07T08:48:05-04:00 redirect_from: - /theme-setup/ toc: true @@ -10,13 +10,16 @@ toc: true Minimal Mistakes has been developed as a [Gem-based theme](http://jekyllrb.com/docs/themes/) for easier use, and 100% compatible with GitHub Pages when used as a remote theme. -**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) for developing and maintaining it.** +**If you enjoy this theme, please consider [sponsoring me](https://github.com/sponsors/mmistakes) to continue developing and maintaining it.** -[](https://www.paypal.me/mmistakes) +[](https://www.buymeacoffee.com/mmistakes) + +[](https://www.paypal.me/mmistakes) +{: style="margin-top: 0.5em;"} ## Installing the theme -If you're running Jekyll v3.5+ and self-hosting you can quickly install the theme as a Ruby gem. +If you're running Jekyll v3.7+ and self-hosting you can quickly install the theme as a Ruby gem. [^structure]: See [**Structure** page]({{ "/docs/structure/" | relative_url }}) for a list of theme files and what they do. @@ -38,7 +41,7 @@ To install as a Gem-based theme: gem "minimal-mistakes-jekyll" ``` -2. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: +2. Fetch and update bundled gems by running the following [Bundler](https://bundler.io/) command: ```bash bundle @@ -64,21 +67,22 @@ To install as a remote theme: source "https://rubygems.org" gem "github-pages", group: :jekyll_plugins + gem "jekyll-include-cache", group: :jekyll_plugins ``` 2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`. -3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: +3. Fetch and update bundled gems by running the following [Bundler](https://bundler.io/) command: ```bash bundle ``` -4. Add `remote_theme: "mmistakes/minimal-mistakes@4.16.3"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. +4. Add `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. You may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref (e.g., `mmistakes/minimal-mistakes@4.9.0` or `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). This is useful when rolling back to older versions of the theme. If you don't specify a Git ref, the latest on `master` will be used. -**Looking for an example?** Fork the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter) for the quickest method of getting a GitHub Pages hosted site up and running. Replace sample content with your own and configure as needed. +**Looking for an example?** Use the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter/generate) for the quickest method of getting a GitHub Pages hosted site up and running. Generate a new repository from the starter, replace sample content with your own, and configure as needed. {: .notice--info} --- @@ -105,7 +109,7 @@ To do so fork the [Minimal Mistakes theme](https://github.com/mmistakes/minimal- [netlify-jekyll]: https://www.netlify.com/blog/2015/10/28/a-step-by-step-guide-jekyll-3.0-on-netlify/ [gitlab-jekyll]: https://about.gitlab.com/2016/04/07/gitlab-pages-setup/ -[ci-jekyll]: https://jekyllrb.com/docs/continuous-integration/ +[ci-jekyll]: https://jekyllrb.com/docs/deployment/automated/#continuous-integration-service ### Remove the Unnecessary @@ -136,13 +140,17 @@ Depending on the path you took installing Minimal Mistakes you'll setup things a Starting with an empty folder and `Gemfile` you'll need to copy or re-create this [default `_config.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_config.yml) file. For a full explanation of every setting be sure to read the [**Configuration**]({{ "/docs/configuration/" | relative_url }}) section. -From `v4.5.0` onwards, Minimal Mistakes theme-gem comes bundled with the necessary data files and will automatically use them via the [`jekyll-data`](https://github.com/ashmaroli/jekyll-data) plugin. So you no longer need to maintain a copy of these data files at your project directory. +From `v4.5.0` onwards, Minimal Mistakes theme-gem comes bundled with the necessary data files for localization. +They will be picked up automatically if you have the [`jekyll-data`](https://github.com/ashmaroli/jekyll-data) plugin installed. +If you're hosting on GitHub Pages, you can copy the [`_data/ui-text.yml`][ui-text.yml] file into your repository for the localization feature to work. + +You'll need to create and edit these data files to customize them: -However like all other bundled files, you'll need to create and edit these data files to customize them. -The bundled data files are: +- [`_data/ui-text.yml`][ui-text.yml] - UI text [documentation]({{ "/docs/ui-text/" | relative_url }}) +- [`_data/navigation.yml`][navigation.yml] - navigation [documentation]({{ "/docs/navigation/" | relative_url }}) -- [`_data/ui-text.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_data/ui-text.yml) - UI text [documentation]({{ "/docs/ui-text/" | relative_url }}) -- [`_data/navigation.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_data/navigation.yml) - navigation [documentation]({{ "/docs/navigation/" | relative_url }}) + [ui-text.yml]: https://github.com/mmistakes/minimal-mistakes/blob/master/_data/ui-text.yml + [navigation.yml]: https://github.com/mmistakes/minimal-mistakes/blob/master/_data/navigation.yml ### Starting from `jekyll new` @@ -170,15 +178,14 @@ Start by removing the following folders and any files within them: | └── js ``` -You won't need these anymore as they're bundled with the theme gem --- unless you intend to [override them](http://jekyllrb.com/docs/themes/#overriding-theme-defaults). +You won't need these anymore as they're bundled with the theme gem --- unless you intend to [override them](https://jekyllrb.com/docs/themes/#overriding-theme-defaults). **Note:** When clearing out the `assets` folder be sure to leave any files you've added and need. This includes images, CSS, or JavaScript that aren't already [bundled in the theme](https://github.com/mmistakes/minimal-mistakes/tree/master/assets). {: .notice--warning} -From `v4.5.0` onwards, you don't have to maintain a copy of the default data files viz. `_data/ui-text.yml` and `_data/navigation.yml` either. -The default files are read-in automatically via the [`jekyll-data`](https://github.com/ashmaroli/jekyll-data) plugin. +From `v4.5.0` onwards, the default language files are read-in automatically via the [`jekyll-data`](https://github.com/ashmaroli/jekyll-data) plugin if it's installed. For sites hosted with GitHub Pages, you still need to copy the [`_data/ui-text.yml`][ui-text.yml] file because the `jekyll-data` plugin [is unsupported on GitHub Pages](https://docs.github.com/en/github/working-with-github-pages/about-github-pages-and-jekyll#plugins). -If you customized any of these files leave them alone, and only remove the untouched ones. If done correctly your modified versions should [override](http://jekyllrb.com/docs/themes/#overriding-theme-defaults) the versions bundled with the theme and be used by Jekyll instead. +If you customized any of these files leave them alone, and only remove the untouched ones. If done correctly your modified versions should [override](https://jekyllrb.com/docs/themes/#overriding-theme-defaults) the versions bundled with the theme and be used by Jekyll instead. #### Update Gemfile @@ -197,7 +204,7 @@ When finished your `Gemfile` should look something like this: ```ruby source "https://rubygems.org" -gem "jekyll", "~> 3.5" +gem "jekyll", "~> 3.7" gem "minimal-mistakes-jekyll" ``` diff --git a/docs/_docs/02-structure.md b/docs/_docs/02-structure.md index 5c7016364d8d..18562ad34abf 100644 --- a/docs/_docs/02-structure.md +++ b/docs/_docs/02-structure.md @@ -7,7 +7,7 @@ last_modified_at: 2018-03-20T15:19:22-04:00 Nothing clever here :wink:. Layouts, data files, and includes are all placed in their default locations. Stylesheets and scripts in `assets`, and a few development related files in the project's root directory. -**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem. +**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem. If you would like to make changes, create the files and Jekyll will prefer your local copy. {: .notice--info} ```bash @@ -18,8 +18,10 @@ minimal-mistakes ├── _includes | ├── analytics-providers # snippets for analytics (Google and custom) | ├── comments-providers # snippets for comments -| ├── footer # custom snippets to add to site footer -| ├── head # custom snippets to add to site head +| ├── footer +| | └── custom.html # custom snippets to add to site footer +| ├── head +| | └── custom.html # custom snippets to add to site head | ├── feature_row # feature row helper | ├── gallery # image gallery helper | ├── group-by-array # group by array helper for archives diff --git a/docs/_docs/03-installation.md b/docs/_docs/03-installation.md index d04b5e56f974..9bd73655a671 100644 --- a/docs/_docs/03-installation.md +++ b/docs/_docs/03-installation.md @@ -2,7 +2,7 @@ title: "Installation" permalink: /docs/installation/ excerpt: "Instructions for installing the theme for new and existing Jekyll based sites." -last_modified_at: 2018-11-25T19:32:34-05:00 +last_modified_at: 2019-08-20T21:36:18-04:00 toc: true --- @@ -18,7 +18,7 @@ If you plan to host with GitHub Pages be sure to properly setup [**jekyll-remote [<i class="fas fa-download"></i> Download Minimal Mistakes Theme](https://github.com/mmistakes/minimal-mistakes/archive/master.zip){: .btn .btn--success} -**ProTip:** Be sure to remove `/docs` and `/test` if you forked or downloaded Minimal Mistakes. These folders contain documentation and test pages for the theme and you probably don't littering up in your repo. +**ProTip:** Be sure to remove `/docs` and `/test` if you forked or downloaded Minimal Mistakes. These folders contain documentation and test pages for the theme and you probably don't want them littering up in your repo. {: .notice--info} **Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll throw `Unknown tag 'include_cached'` errors at build. @@ -81,11 +81,10 @@ gem "minimal-mistakes-jekyll" # gem "jekyll-sitemap" # gem "jekyll-gist" # gem "jekyll-feed" -# gem "jemoji" -# gem "jekyll-data" # gem "jekyll-include-cache" # # If you have any other plugins, put them here! +# Cf. https://jekyllrb.com/docs/plugins/installation/ group :jekyll_plugins do end ``` @@ -110,4 +109,4 @@ Depending on what gems you already have installed you may have to run `bundle up When using Bundler to manage gems you'll want to run Jekyll using `bundle exec jekyll serve` and `bundle exec jekyll build`. -Doing so executes the gem versions specified in `Gemfile.lock`. Sure you can test your luck with a naked `jekyll serve`, but I wouldn't suggest it. A lot of Jekyll errors originate from outdated or conflicting gems fighting with each other. So do yourself a favor and just use Bundler. \ No newline at end of file +Doing so executes the gem versions specified in `Gemfile.lock`. Sure you can test your luck with a naked `jekyll serve`, but I wouldn't suggest it. A lot of Jekyll errors originate from outdated or conflicting gems fighting with each other. So do yourself a favor and just use Bundler. diff --git a/docs/_docs/04-upgrading.md b/docs/_docs/04-upgrading.md index 907710aa6339..0f81e0365236 100644 --- a/docs/_docs/04-upgrading.md +++ b/docs/_docs/04-upgrading.md @@ -2,21 +2,16 @@ title: "Upgrading" permalink: /docs/upgrading/ excerpt: "Instructions and suggestions for upgrading the theme." -last_modified_at: 2018-11-25T19:38:20-05:00 +last_modified_at: 2024-04-23T00:43:19+08:00 toc: true --- -If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#ruby-gem-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#github-pages-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless. +If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#gem-based-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#remote-theme-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless. To check which version you are currently using, view the source of your built site and you should see something similar to: -``` -<!-- - Minimal Mistakes Jekyll Theme 4.16.3 by Michael Rose - Copyright 2013-2018 Michael Rose - mademistakes.com | @mmistakes - Free for personal and commercial use under the MIT license - https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE ---> +```text +{% include copyright.html %} ``` At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.min.js`. @@ -25,19 +20,21 @@ At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.m Simply run `bundle update` if you're using Bundler (have a `Gemfile`) or `gem update minimal-mistakes-jekyll` if you're not. -When using Bundler you can downgrade or lock the theme to a specific release ([tag](https://github.com/mmistakes/minimal-mistakes/tags)), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`: +When using Bundler you can downgrade or lock the theme to a specific release ([tag][tag]), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`: ```ruby -gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "4.16.3" +gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "{{ site.data.theme.version }}" ``` -For more information on [installing gems from git repositories](http://bundler.io/v1.16/guides/git.html) consult Bundler's documentation. + [tag]: https://github.com/mmistakes/minimal-mistakes/tags + +For more information on [installing gems from Git repositories](https://bundler.io/guides/git.html) consult Bundler's documentation. ## Remote theme -When setting `remote_theme: "mmistakes/minimal-mistakes@4.16.3"` in your `_config.yml` you may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref. +When setting `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` in your `_config.yml` you may also optionally specify a branch, [tag][tag], or commit to use by appending an @ and the Git ref. -For example you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases). +For example, you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases). To update the theme on GitHub Pages you'll need to push up a commit to force a rebuild. An empty commit works well if you don't have anything to push at the moment: diff --git a/docs/_docs/05-configuration.md b/docs/_docs/05-configuration.md index 3e4055dc81b4..09272ec6f554 100644 --- a/docs/_docs/05-configuration.md +++ b/docs/_docs/05-configuration.md @@ -2,8 +2,28 @@ title: "Configuration" permalink: /docs/configuration/ excerpt: "Settings for configuring and customizing the theme." -last_modified_at: 2019-01-15T08:31:44-05:00 +last_modified_at: 2021-05-11T10:40:42-04:00 toc: true + +skins: + - name: air + description: Calm and blue. + - name: aqua + description: Just like water. + - name: contrast + description: Retro feel with bold blue links and inverted footer. + - name: dark + description: Inverted palette, white text on a dark background. + - name: dirt + description: Earthy tones. + - name: mint + description: Minty fresh green. + - name: neon + description: Inverted palette, white text on a dark background. + - name: plum + description: Purple reigns supreme. + - name: sunrise + description: Oranges and red. --- Settings that affect your entire site can be changed in [Jekyll's configuration file](https://jekyllrb.com/docs/configuration/): `_config.yml`, found in the root of your project. If you don't have this file you'll need to copy or create one using the theme's [default `_config.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_config.yml) as a base. @@ -28,93 +48,38 @@ theme: minimal-mistakes-jekyll Easily change the color scheme of the theme using one of the provided "skins": ```yaml -minimal_mistakes_skin: "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum" "sunrise" +minimal_mistakes_skin: "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" ``` -**Note:** If you have made edits to the theme's CSS files be sure to update [`/assets/css/main.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) to include `@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin` before the `minimal-mistakes` import. +**Note:** If you have made edits to the theme's CSS files be sure to update [`/assets/css/main.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) to include {% raw %}`@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin`{% endraw %} before the `minimal-mistakes` import. {: .notice--warning} -#### Air skin: `air` - +{% for skin in page.skins %} +#### {{ skin.name | capitalize }} skin: `{{ skin.name }}` {:.no_toc} <figure class="half"> - <a href="{{ site.baseurl }}/assets/images/air-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/air-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/air-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/air-skin-post.png"></a> - <figcaption>Calm and blue.</figcaption> -</figure> - -#### Aqua skin: `aqua` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/aqua-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/aqua-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/aqua-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/aqua-skin-post.png"></a> - <figcaption>Just like water.</figcaption> -</figure> - -#### Contrast skin: `contrast` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/contrast-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/contrast-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/contrast-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/contrast-skin-post.png"></a> - <figcaption>Retro feel with bold blue links and inverted footer.</figcaption> -</figure> - -#### Dark skin: `dark` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/dark-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/dark-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/dark-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/dark-skin-post.png"></a> - <figcaption>Inverted palette, white text on a dark background.</figcaption> -</figure> - -#### Dirt skin: `dirt` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/dirt-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/dirt-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/dirt-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/dirt-skin-post.png"></a> - <figcaption>Earthy tones.</figcaption> -</figure> - -#### Mint skin: `mint` - -{:.no_toc} - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/mint-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/mint-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/mint-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/mint-skin-post.png"></a> - <figcaption>Minty fresh green.</figcaption> -</figure> - -#### Neon skin: `neon` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/neon-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/neon-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/neon-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/neon-skin-post.png"></a> - <figcaption>Inverted palette, white text on a dark background.</figcaption> -</figure> - -#### Neon skin: `plum` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/plum-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/plum-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/plum-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/plum-skin-post.png"></a> - <figcaption>Purple reigns supreme.</figcaption> -</figure> - -#### Sunrise skin: `sunrise` - -<figure class="half"> - <a href="{{ site.baseurl }}/assets/images/sunrise-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/sunrise-skin-archive.png"></a> - <a href="{{ site.baseurl }}/assets/images/sunrise-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/sunrise-skin-post.png"></a> - <figcaption>Oranges and red.</figcaption> + <a href="{{ skin.name | prepend: "/assets/images/" | append: "-skin-archive-large.png" | relative_url }}"> + <img + src="{{ skin.name | prepend: "/assets/images/" | append: "-skin-archive.png" | relative_url }}" + alt="Archive page of {{ skin.name | capitalize }} skin" + /> + </a> + <a href="{{ skin.name | prepend: "/assets/images/" | append: "-skin-post-large.png" | relative_url }}"> + <img + src="{{ skin.name | prepend: "/assets/images/" | append: "-skin-post.png" | relative_url }}" + alt="Posts page of {{ skin.name | capitalize }} skin" + /> + </a> + <figcaption>{{ skin.description }}</figcaption> </figure> +{% endfor %} ### Site locale `site.locale` is used to declare the primary language for each web page within the site. -_Example:_ `locale: "en-US"` sets the `lang` attribute for the site to the _United States_ flavor of English, while `en-GB` would be for the `United Kingdom` style of English. Country codes are optional and the shorter variation `locale: "en"` is also acceptable. To find your language and country codes check this [reference table](<https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx>). +_Example:_ `locale: "en-US"` sets the `lang` attribute for the site to the _United States_ flavor of English, while `en-GB` would be for the _United Kingdom_ style of English. Country codes are optional and the shorter variation `locale: "en"` is also acceptable. To find your language and country codes check this [reference table](<https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx>). Properly setting the locale is important for associating localized text found in the [**UI Text**]({{ "/docs/ui-text/" | relative_url }}) data file. An improper match will cause parts of the UI to disappear (eg. button labels, section headings, etc). @@ -131,9 +96,15 @@ You also have the option of customizing the separation character used in SEO-fri _Example:_ `title_separator: "|"` would produce page titles like `Sample Page | My Awesome Site`. -**Note:** Long site titles have been known to break the masthead layout. Avoid adding a long "tagline" to the title prevent this from happening eg. `My Awesome Site is the Best Because I Say So". +**Note:** Long site titles have been known to break the masthead layout. Avoid adding a long "tagline" to the title to prevent this from happening, e.g. `My Awesome Site is the Best Because I Say So`. {: .notice--warning} +### Site subtitle + +A short tagline that appears below the title in site masthead. + +_Example:_ `subtitle: "Version 2.0"` + ### Site name Used to assign a site author. Don't worry, you can override the site author with different ones on specific posts, pages, or collection documents. @@ -151,11 +122,11 @@ _Example:_ `description: "A flexible Jekyll theme for your blog or site with a m ### Site URL -The base hostname and protocol for your site. If you're hosting with GitHub Pages this will be something like `url: "https://github.io.mmistakes"` or `url: "https://mademistakes.com"` if you have a custom domain name. +The base hostname and protocol for your site. If you're hosting on GitHub Pages this will be something like `url: "https://mmistakes.github.io"` or `url: "https://mademistakes.com"` if you have a custom domain name. GitHub Pages now [forces `https://` for new sites](https://help.github.com/articles/securing-your-github-pages-site-with-https/) so be mindful of that when setting your URL to avoid mixed-content warnings. -**Note:** Jekyll 3.3 overrides this value with `url: http://localhost:4000` when running `jekyll serve` locally in development. If you want to avoid this behavior set `JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production. +**Note:** Jekyll 3.3 overrides this value with `url: http://localhost:4000` when running `jekyll serve` locally in development. If you want to avoid this behavior set `JEKYLL_ENV=production` to [force the environment](https://jekyllrb.com/docs/configuration/environments/) to production. {: .notice--warning} ### Site base URL @@ -177,9 +148,9 @@ Add your repository name with organization to your site's configuration file, `_ repository: "username/repo-name" ``` -"NWO" stands for "name with owner." It is GitHub lingo for the username of the owner of the repository plus a forward slash plus the name of the repository, e.g. `mmistakes/minimal-mistakes`, where **mmistakes** is the owner and **minimal-mistakes** is the repository name. +"NWO" stands for "**n**ame **w**ith **o**wner." It is GitHub lingo for the username of the owner of the repository plus a forward slash plus the name of the repository, e.g. `mmistakes/minimal-mistakes`, where **mmistakes** is the owner and **minimal-mistakes** is the repository name. -Your `site.github.*` fields should fill in like normal. If you run Jekyll with the --verbose flag, you should be able to see all the API calls made. +Your `site.github.*` fields should be filled in like normal. If you run Jekyll with the `--verbose` flag, you should be able to see all the API calls made. If you don't set `repository` correctly you may see the following error when trying to `serve` or `build` your Jekyll site: @@ -244,6 +215,12 @@ By default your site title is used in the masthead. You can override this text b masthead_title: "My Custom Title" ``` +### Site RTL direction + +`site.rtl` is used to turn the direction of the page into right to left. This option can be used for RTL languages (like Arabic, Persian, etc) + +_Example:_ `rtl: true` sets the direction of the page to right to left. By default this option is `rtl: false`. + ### Breadcrumb navigation (beta) Enable breadcrumb links to help visitors better navigate deep sites. Because of the fragile method of implementing them they don't always produce accurate links reliably. For best results: @@ -259,6 +236,32 @@ breadcrumbs: true # disabled by default Breadcrumb start link text and separator character can both be changed in the [UI Text data file]({{ "/docs/ui-text/" | relative_url }}). +### Post dates + +Enable post date snippets with `show_date: true` in YAML Front Matter. + + + +Instead of adding `show_date: true` to each post, apply as a default in `_config.yml` like so: + +```yaml +defaults: + # _posts + - scope: + path: "" + type: posts + values: + show_date: true +``` + +To disable post date for a post, add `show_date: false` to its YAML Front Matter, overriding what was set in `_config.yml`. + +When dates are shown on blog posts or pages, a date format will be chosen to format the date string. The default format is `"%B %-d, %Y"`, which will be displayed like "February 24, 2016". You can choose your date format by referencing this [cheat sheet](https://www.shortcutfoo.com/app/dojos/ruby-date-format-strftime/cheatsheet). For example, use your date format in `_config.yml`. + +```yaml +date_format: "%Y-%m-%d" +``` + ### Reading time Enable estimated reading time snippets with `read_time: true` in YAML Front Matter. `200` has been set as the default words per minute value --- which can be changed by adjusting `words_per_minute:` in `_config.yml`. @@ -277,20 +280,67 @@ defaults: read_time: true ``` -To disable reading time for a post, add `read_time: false` its YAML Front Matter to override what was set in `_config.yml`. +To disable reading time for a post, add `read_time: false` to its YAML Front Matter to override what was set in `_config.yml`. + +`words_per_minute` can also be adjusted on a per-page basis by adding to its YAML Front Matter. This is useful for sites with multi-lingual content where you'd like specify a different value from the site config. + +```yaml +words_per_minute: 250 +``` + +### Page meta separator + +To customise the separator between the page date and reading time (if both are enabled), edit `.page__meta-sep::before` in a [custom stylesheet]({{ "/docs/stylesheets/" | relative_url }}). + +For example, + +```css +.page__meta-sep::before { + content: "\2022"; + padding-left: 0.5em; + padding-right: 0.5em; +} +``` + +### Code block copy button + +*New in v4.26.0* + +To enable a copy button on code blocks, add the following to `_config.yml`: + +```yaml +enable_copy_code_button: true +``` + +When enabled site-wide, the button can be disabled on individual code blocks by adding `no-copy` to the code block's class list. + +````markdown +``` +Hey, I have a "copy to clipboard" button! +``` +```` + +````markdown +``` +But I don't have one. +``` +{: .no-copy} +```` +{: .no-copy} ### Comments -[**Disqus**](https://disqus.com/), [**Discourse**](https://www.discourse.org/), [**Facebook**](https://developers.facebook.com/docs/plugins/comments), [**utterances**](https://utteranc.es/), and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use: +[**Disqus**](https://disqus.com/), [**Discourse**](https://www.discourse.org/), [**Facebook**](https://developers.facebook.com/docs/plugins/comments), [**utterances**](https://utteranc.es/), [**giscus**](https://giscus.app/) and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use: | Name | Comment Provider | | ---------------- | ------------------------- | | **disqus** | Disqus | | **discourse** | Discourse | | **facebook** | Facebook Comments | -| **staticman_v2** | Staticman v2 | +| **staticman_v2** | Staticman v2 / v3 | | **staticman** | Staticman v1 (deprecated) | | **utterances** | utterances | +| **giscus** | giscus | | **custom** | Other | Then add `comments: true` to each document you want comments visible on. @@ -309,7 +359,7 @@ defaults: If you add `comments: false` to a post's YAML Front Matter it will override the default and disable comments for just that post. -**Note:** Comments are disabled by default in `development`. To enable when testing/building locally be sure to set +**Note:** Comments are disabled in `development`. To enable when testing/building locally be sure to set `JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production. {: .notice--info} @@ -362,7 +412,7 @@ repository: # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes" **Note:** Make sure the repo is public, otherwise your readers will not be able to view the issues/comments. The [issues feature](https://guides.github.com/features/issues/) also needs to be active on your repo. {: .notice--warning} -To enable utterances on the front end set `comments.provider` and the color theme of the widget. +To enable utterances on the front end set `comments.provider` and the color theme of the widget. ```yaml comments: @@ -370,6 +420,36 @@ comments: utterances: theme: "github-light" # "github-dark" issue_term: "pathname" + label: "comment" # Optional - must be existing label. +``` + +#### giscus comments + +To use giscus you will need to [install the app](https://github.com/apps/giscus) to your GitHub repository. + +The next step is to go to <https://giscus.app> and fill out the desired settings. This will generate JavaScript that will provide you with the settings you will need to configure things below. + +You'll need to ensure you've added the following to `_config.yml`: + +```yaml +repository: # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes" +``` + +**Note:** Make sure the repo is public, otherwise your readers will not be able to view the issues/comments. The [discussions feature](https://docs.github.com/en/discussions) also needs to be active on your repo. +{: .notice--warning} + +To enable giscus on the front end set `comments.provider` and the other additional options. + +```yaml +comments: + provider: "giscus" + giscus: + repo_id : # Shown during giscus setup at https://giscus.app + category_name : # Full text name of the category + category_id : # Shown during giscus setup at https://giscus.app + discussion_term : # "pathname" (default), "url", "title", "og:title" + reactions_enabled : # '1' for enabled (default), '0' for disabled + theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme" ``` #### Static-based comments via Staticman @@ -379,13 +459,16 @@ Transform user comments into `_data` files that live inside of your GitHub repos **Note:** Looking to migrate comments from a WordPress based site? Give [this tool](https://github.com/arthurlacoste/wordpress-comments-jekyll-staticman) a try. {: .notice--info} -**Note:** Please note that as of September 2018, Staticman is reaching GitHub API limits due to its popularity, and it is recommended by its maintainer that users deploy their own instances for production (use `site.staticman.endpoint`). +**Note:** Please note that as of September 2018, Staticman is reaching GitHub API limits due to its popularity, and it is recommended by its maintainer that users deploy their own instances for production (use `site.staticman.endpoint`). Consult the Staticman "[Get Started](https://staticman.net/docs/index.html)" guide for more info. {: .notice--warning} -##### Add Staticman as a collaborator +##### Add Staticman as a collaborator on GitHub (legacy) -1. Allow Staticman push access to your GitHub repository by clicking on **Settings**, then the **Collaborators** tab and adding `staticmanapp` as a collaborator. -2. To accept the pending invitation visit: `https://api.staticman.net/v2/connect/{your GitHub username}/{your repository name}`. Consult the Staticman "[Get Started](https://staticman.net/docs/index.html)" guide for more info. +1. Allow Staticman push access to your GitHub repository by clicking on **Settings**, then the **Collaborators** tab and adding your GitHub bot as a collaborator. +2. To accept the pending invitation visit: `https://{your Staticman v2/3 API}/v[2|3]/connect/{your GitHub username}/{your repository name}`. + +**Note:** The new GitHub App authentication method is recommended for GitHub repositories to avoid the API rate limit. +{: .notice--info} ##### Configure Staticman @@ -478,7 +561,7 @@ By default comment moderation is enabled in `staticman.yml`. As new comments are To skip this moderation step simply set `moderation: false`. -**ProTip:** Create a GitHub webhook that sends a `POST` request to the following payload URL `https://api.staticman.net/v2/webhook` and triggers a "Pull request" event to delete Staticman branches on merge. +**ProTip:** Create a GitHub webhook that sends a `POST` request to the following payload URL `https://{your Staticman API URL}/v2/webhook` and triggers a "Pull request" event to delete Staticman branches on merge. {: .notice--info}  @@ -513,6 +596,15 @@ atom_feed: **Note:** By default the site feed is linked in two locations: inside the [`<head>` element](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/head.html) and at the bottom of every page in the [site footer](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/footer.html). {: .notice--info} +### Disable Feed Icons + +By default the theme links to `feed.xml` generated in the root of your site by the **jekyll-feed** plugin. To remove the RSS icon in the header and footer, update `atom_feed` in `_config.yml` like so: + +```yaml +atom_feed: + hide: true +``` + ### Site search To enable site-wide search add `search: true` to your `_config.yml`. @@ -521,7 +613,14 @@ To enable site-wide search add `search: true` to your `_config.yml`. #### Lunr (default) -The default search uses [**Lunr**](https://lunrjs.com/) to build a search index of all your documents. This method is 100% compatible with sites hosted on GitHub Pages. +The default search uses [**Lunr**](https://lunrjs.com/) to build a search index of all post and your documents in collections. This method is 100% compatible with sites hosted on GitHub Pages. + +To have it index all pages, update `lunr` in `_config.yml` like so: + +```yaml +lunr: + search_within_pages: true +``` **Note:** Only the first 50 words of a post or page's body content is added to the Lunr search index. Setting `search_full_content` to `true` in your `_config.yml` will override this and could impact page load performance. {: .notice--warning} @@ -588,13 +687,13 @@ Add a Google search box to your site. 1. Create a **New search engine** in [Google Custom Search Engine](https://cse.google.com/cse/all), give it an appropriate name and setup "Sites to search" to your liking. 2. Under **Look and feel** choose the "Results only" layout and a theme (*Minimalist* is a good choice to match the default look of the Minimal Mistakes). - +  3. Select "Save & Get Code" and grab your search engine ID from the line that begins with `var cx = 'YOUR_SEARCH_ENGINE_ID'`. 4. Add your search engine ID to `_config.yml` like so: - + ```yaml google: search_engine_id: YOUR_SEARCH_ENGINE_ID @@ -616,7 +715,7 @@ Formerly known as [Google Webmaster Tools](https://www.google.com/webmasters/too #### Bing Webmaster Tools -There are several ways to [verify site ownership](https://www.bing.com/webmaster/help/how-to-verify-ownership-of-your-site-afcfefc6) --- the easiest adding an authentication code to your config file. +There are several ways to [verify site ownership](https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b) --- the easiest adding an authentication code to your config file. Copy and paste the string inside of `content`: @@ -660,6 +759,22 @@ Into `_config.yml` yandex_site_verification: "2132801JL" ``` +#### Baidu + +There are several ways to verify site ownership — the easiest is adding an authentication code to your config file. + +Copy and paste the string inside of `content`: + +```html +<meta name="baidu-site-verification" content="code-iA0wScWXN1" /> +``` + +Into `_config.yml` + +```yaml +baidu_site_verification: "code-iA0wScWXN1" +``` + #### Twitter Cards and Facebook Open Graph To improve the appearance of links shared from your site to social networks like Twitter and Facebook be sure to configure the following. @@ -677,7 +792,7 @@ twitter: And if I assign `@mmistakes` as an author account it will appear in the Twitter Card along with `@mmistakes-theme`, attributed as a creator of the page being shared. -**Note**: You need to [apply for Twitter Cards](https://dev.twitter.com/docs/cards) and validate they're working on your site before they will begin showing up. +**Note**: You need to validate cards are working and have Twitter [approve Player Cards](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/player-card) before they begin showing up. {: .notice--warning} ##### Facebook Open Graph @@ -697,33 +812,36 @@ facebook: username: "michaelrose" # https://www.facebook.com/michaelrose ``` -**ProTip:** To debug Open Graph data use [this tool](https://developers.facebook.com/tools/debug/og/object?q=https%3A%2F%2Fmademistakes.com) to test your pages. If content changes aren't reflected you will probably have to hit the **Fetch new scrape information** button to refresh. +**ProTip:** To debug Open Graph data use [this tool](https://developers.facebook.com/tools/debug/) to test your pages. If content changes aren't reflected you will probably have to hit the **Scrape Again** button to refresh. {: .notice--info} ##### Open Graph default image -For pages that don't have a `header.image` assigned in their YAML Front Matter, `site.og_image` will be used as a fallback. Use your logo, icon, avatar or something else that is meaningful. Just make sure it is place in the `/assets/images/` folder, a minimum size of 120px by 120px, and less than 1MB in file size. +For pages that don't have a `header.image` assigned in their YAML Front Matter, `site.og_image` will be used as a fallback. Use your logo, icon, avatar or something else that is meaningful. Just make sure it is placed in the `/assets/images/` folder, has a minimum size of 120px by 120px, and is less than 1MB in file size. ```yaml og_image: /assets/images/site-logo.png ``` -<figure> - <img src="{{ '/assets/images/mm-twitter-card-summary-image.jpg' | relative_url }}" alt="Twitter Card summary example"> - <figcaption>Example of a image placed in a Summary Card.</figcaption> -</figure> +{% include figure + image_path="/assets/images/mm-twitter-card-summary-image.jpg" + alt="Twitter Card summary example" + caption="Example of an image placed in a Summary Card." +%} Documents who have a `header.image` assigned in their YAML Front Matter will appear like this when shared on Twitter and Facebook. -<figure> - <img src="{{ '/assets/images/mm-twitter-card-summary-large.jpg' | relative_url }}" alt="page shared on Twitter"> - <figcaption>Shared page on Twitter with header image assigned.</figcaption> -</figure> +{% include figure + image_path="/assets/images/mm-twitter-card-summary-large.jpg" + alt="page shared on Twitter" + caption="Shared page on Twitter with header image assigned." +%} -<figure> - <img src="{{ '/assets/images/facebook-share-example.jpg' | relative_url }}" alt="page shared on Facebook"> - <figcaption>Shared page on Facebook with header image assigned.</figcaption> -</figure> +{% include figure + image_path="/assets/images/facebook-share-example.jpg" + alt="page shared on Facebook" + caption="Shared page on Facebook with header image assigned." +%} ##### Include your social profile in search results @@ -735,10 +853,9 @@ social: name: # If the user or organization name differs from the site's name links: - "https://twitter.com/yourTwitter" - - "https://facebook.com/yourFacebook" + - "https://www.facebook.com/yourFacebook" - "https://instagram.com/yourProfile" - "https://www.linkedin.com/in/yourprofile" - - "https://plus.google.com/your_profile" ``` #### Analytics @@ -764,7 +881,7 @@ analytics: To use another provider not included with the theme set `provider: "custom"` then add their embed code to `_includes/analytics-providers/custom.html`. -**Note:** Analytics are disabled by default in `development`. To enable when testing/building locally be sure to set +**Note:** Analytics are disabled in `development`. To enable when testing/building locally be sure to set `JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production. {: .notice--info} @@ -782,7 +899,7 @@ author: name : "Your Name" avatar : "/assets/images/bio-photo.jpg" bio : "My awesome biography constrained to a sentence or two goes here." - location : "Somewhere, USA" + location : "Somewhere, USA" ``` Author links are all optional, include the ones you want visible under the `author.links` array. @@ -790,14 +907,14 @@ Author links are all optional, include the ones you want visible under the `auth | Name | Description | | --- | --- | | **label** | Link label (e.g. `"Twitter"`) | -| **icon** | [Font Awesome icon](https://fontawesome.com/icons?d=gallery) classes (e.g. `"fab fa-fw fa-twitter-square"`) | +| **icon** | [Font Awesome icon](https://fontawesome.com/v6/search) classes (e.g. `"fab fa-fw fa-twitter-square"`) | | **url** | Link URL (e.g. `"https://twitter.com/mmistakes"`) | ```yaml author: name: "Your Name" avatar: "/assets/images/bio-photo.jpg" - bio: "I am an amazing person." + bio: "I am an **amazing** person." # Note: Markdown is allowed location: "Somewhere" links: - label: "Made Mistakes" @@ -823,7 +940,7 @@ Footer links can be added under the `footer.links` array. | Name | Description | | --- | --- | | **label** | Link label (e.g. `"Twitter"`) | -| **icon** | [Font Awesome icon](https://fontawesome.com/icons?d=gallery) classes (e.g. `"fab fa-fw fa-twitter-square"`) | +| **icon** | [Font Awesome icon](https://fontawesome.com/v6/search) classes (e.g. `"fab fa-fw fa-twitter-square"`) | | **url** | Link URL (e.g. `"https://twitter.com/mmistakes"`) | ```yaml @@ -851,11 +968,11 @@ Nothing out of the ordinary here. `include` and `exclude` may be the only things ## Conversion and Markdown processing -Again nothing out of the ordinary here as the theme adheres to the defaults used by GitHub Pages. [**Kramdown**](http://kramdown.gettalong.org/) for Markdown conversion, [**Rouge**](http://rouge.jneen.net/) syntax highlighting, and incremental building disabled. Change them if you need to. +Again nothing out of the ordinary here as the theme adheres to the defaults used by GitHub Pages. [**Kramdown**](http://kramdown.gettalong.org/) for Markdown conversion, [**Rouge**](https://rouge.jneen.net/) syntax highlighting, and incremental building disabled. Change them if you need to. ## Front Matter Defaults -To save yourself time setting [Front Matter Defaults](https://jekyllrb.com/docs/configuration/#front-matter-defaults) for posts, pages, and collections is the way to go. Sure you can assign layouts and toggle settings like **reading time**, **comments**, and **social sharing** in each file, but that's not ideal. +To save yourself time setting [Front Matter Defaults](https://jekyllrb.com/docs/configuration/front-matter-defaults/) for posts, pages, and collections is the way to go. Sure you can assign layouts and toggle settings like **reading time**, **comments**, and **social sharing** in each file, but that's not ideal. Using the `default` key in `_config.yml` you could set the layout and enable author profiles, reading time, comments, social sharing, and related posts for all posts --- in one shot. @@ -923,12 +1040,79 @@ The paginator only works on files with name `index.html`. To use pagination in a paginate_path: /recent/page:num/ ``` -**Please note:** When using Jekyll's default [pagination plugin](http://jekyllrb.com/docs/pagination/) `paginator.posts` can only be called once. If you're looking for something more powerful that can paginate category, tag, and collection pages I suggest [**jekyll-paginate-v2**](https://github.com/sverrirs/jekyll-paginate-v2). +**Please note:** When using Jekyll's default [pagination plugin](https://jekyllrb.com/docs/pagination/) `paginator.posts` can only be called once. If you're looking for something more powerful that can paginate category, tag, and collection pages I suggest **[jekyll-paginate-v2][jekyll-paginate-v2]**. {: .notice--info} + [jekyll-paginate-v2]: https://github.com/sverrirs/jekyll-paginate-v2 + +### Paginate V2 + +*New in v4.26.0* + +If you're using [Jekyll Paginate V2][jekyll-paginate-v2], you can enjoy its powerful features by removing `paginate` and `paginate_path` and adding the following configuration to your `_config.yml`: + +```yaml +pagination: + enabled: true + collection: 'posts' + per_page: 5 + permalink: '/page/:num/' # Pages are index.html inside this folder (default) + title: ':title - page :num' + limit: 0 + sort_field: 'date' + sort_reverse: true + trail: + before: 2 + after: 2 +``` + +Then, create `/posts/index.html` with the following content: + +```html +--- +title: "Posts" +layout: home +permalink: /posts/ +pagination: + enabled: true +--- +``` + +Your posts will be paginated at `/posts/`, `/posts/page/2/` and `/posts/page/3/` etc. + +Similarly, if you want to paginate a collection or a tag, you can create another `index.html` at an appropriate location, and add configuration to the `pagination` key in the front matter, like this: + +```html +--- +title: "Lovely pets" +layout: home +permalink: /pets/ +pagination: + enabled: true + collection: + - cat + - dog +--- +``` + +<div class="notice--danger" markdown="1"> +**Note:** There are two more configuration options from Jekyll Paginate V2 that this theme doesn't support yet. You should either leave them out or use their default values as shown below. Changing them may lead to unexpected results and you're on your own. + +```yaml +pagination: + # Optional, the default file extension for generated pages (e.g html, json, xml). + # Internally this is set to html by default + extension: html + + # Optional, the default name of the index file for generated pages (e.g. 'index.html') + # Without file extension + indexpage: 'index' +``` +</div> + ### Timezone -This sets the timezone environment variable, which Ruby uses to handle time and date creation and manipulation. Any entry from the [IANA Time Zone Database](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is valid. The default is the local time zone, as set by your operating system. +This sets the timezone environment variable, which Ruby uses to handle time and date creation and manipulation. Any entry from the [IANA Time Zone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is valid. The default is the local time zone, as set by your operating system. ```yaml timezone: America/New_York @@ -944,14 +1128,12 @@ When hosting with GitHub Pages a small [set of gems](https://pages.github.com/ve | [jekyll-sitemap][jekyll-sitemap] | Jekyll plugin to silently generate a sitemaps.org compliant sitemap for your Jekyll site. | | [jekyll-gist][jekyll-gist] | Liquid tag for displaying GitHub Gists in Jekyll sites. | | [jekyll-feed][jekyll-feed] | A Jekyll plugin to generate an Atom (RSS-like) feed of your Jekyll posts. | -| [jemoji][jemoji] | GitHub-flavored emoji plugin for Jekyll. | | [jekyll-include-cache][jekyll-include-cache] | Liquid tag that caches Liquid includes. | [jekyll-paginate]: https://github.com/jekyll/jekyll-paginate [jekyll-sitemap]: https://github.com/jekyll/jekyll-sitemap [jekyll-gist]: https://github.com/jekyll/jekyll-gist [jekyll-feed]: https://github.com/jekyll/jekyll-feed -[jemoji]: https://github.com/jekyll/jemoji [jekyll-include-cache]: https://github.com/benbalter/jekyll-include-cache If you're hosting elsewhere then you don't really have to worry about what is whitelisted as you are free to include whatever [Jekyll plugins](https://jekyllrb.com/docs/plugins/) you desire. @@ -1020,13 +1202,37 @@ jekyll-archives: **Note:** The `archive-taxonomy` layout used by jekyll-archives is provided with the theme and can be found in the `_layouts` folder. {: .notice--info} +<div class="notice--success" markdown="1"> + +<h4 class="no_toc"><i class="fas fa-lightbulb"></i> Tip</h4> + +To apply [Front Matter defaults](https://jekyllrb.com/docs/configuration/front-matter-defaults/) to pages generated by the `jekyll-archives` plugin, you can specify a scope of an empty `path` and a `type` of either `tag` or `category`. + +For example, the following configuration enables author profile on tag archives and disables comments on category archives. + +```yaml +defaults: + - scope: + path: "" + type: tag + values: + author_profile: true + - scope: + path: "" + type: category + values: + comments: false +``` + +</div> + ## HTML compression If you care at all about performance (and really who doesn't) compressing the HTML files generated by Jekyll is a good thing to do. If you're hosting with GitHub Pages there aren't many options afforded to you for optimizing the HTML Jekyll generates. Thankfully there is some Liquid wizardry you can use to strip whitespace and comments to reduce file size. -There's a variety of configurations and caveats to using the `compress` layout, so be sure to read through the [documentation](http://jch.penibelst.de/) if you decide to make change the defaults set in the theme's `_config.yml`. +There's a variety of configurations and caveats to using the `compress` layout, so be sure to read through the [documentation](http://jch.penibelst.de/) if you decide to change the defaults set in the theme's `_config.yml`. ```yaml compress_html: diff --git a/docs/_docs/06-overriding-theme-defaults.md b/docs/_docs/06-overriding-theme-defaults.md index 5ebca2ea295f..a4fa3f6f1cfa 100644 --- a/docs/_docs/06-overriding-theme-defaults.md +++ b/docs/_docs/06-overriding-theme-defaults.md @@ -2,14 +2,14 @@ title: "Overriding Theme Defaults" permalink: /docs/overriding-theme-defaults/ excerpt: "Instructions on how to customize the theme's default set of layouts, includes, and stylesheets when using the Ruby Gem version." -last_modified_at: 2018-03-20T15:59:31-04:00 +last_modified_at: 2020-07-27 --- When installing the theme as a Ruby Gem its layouts, includes, stylesheets, and other assets are all bundled in the `gem`. Meaning they're not easily visible in your project. Each of these files can be modified, but you'll need to copy the default version into your project first. For example, if you wanted to modify the default [`single` layout](https://github.com/mmistakes/minimal-mistakes/blob/master/_layouts/single.html), you'd start by copying it to `_layouts/single.html`. -**ProTip**: To locate theme files, run `bundle show minimal-mistakes-jekyll`. Then copy the files you want to override from the returned path, to the appropriate folder in your project. +**ProTip**: To locate theme files, run `bundle info minimal-mistakes-jekyll`. Then copy the files you want to override from the returned path, to the appropriate folder in your project. {: .notice--info} Jekyll will use the files in your project first before falling back to the default versions of the theme. It exhibits this behavior with files in the following folders: @@ -21,7 +21,8 @@ Jekyll will use the files in your project first before falling back to the defau /_sass ``` -Additionally, from `v4.5.0` the theme-gem will also exhibit above behavior for `/_data` via a plugin. +Additionally, from `v4.5.0` onwards the theme-gem will also exhibit above behavior for `/_data` via a plugin. Consequently, the data files for UI Text and Navigation are also bundled within the theme-gem. +This doesn't apply if you're building your site on GitHub Pages, however. -For more information on customizing the theme's [stylesheets]({{ "/docs/stylesheets/" | relative_url }}) and [JavaScript]({{ "/docs/javascript/" | relative_url }}), see the appropriate pages. \ No newline at end of file +For more information on customizing the theme's [stylesheets]({{ "/docs/stylesheets/" | relative_url }}) and [JavaScript]({{ "/docs/javascript/" | relative_url }}), see the appropriate pages. diff --git a/docs/_docs/07-navigation.md b/docs/_docs/07-navigation.md index dba977140f98..feb9fe25a53c 100644 --- a/docs/_docs/07-navigation.md +++ b/docs/_docs/07-navigation.md @@ -30,6 +30,7 @@ main: url: /collection-archive/ - title: "External Link" url: https://google.com + target: _blank ``` Which will give you a responsive masthead similar to this: diff --git a/docs/_docs/08-ui-text.md b/docs/_docs/08-ui-text.md index 04e317347df7..3a97ee1cadf4 100644 --- a/docs/_docs/08-ui-text.md +++ b/docs/_docs/08-ui-text.md @@ -2,27 +2,37 @@ title: "UI Text" permalink: /docs/ui-text/ excerpt: "Text for customizing user interface elements found in the theme." -last_modified_at: 2019-01-23T20:22:49-05:00 +last_modified_at: 2021-05-11T10:22:55-04:00 --- Text for UI elements, `_layouts`, and `_includes` grouped together as a set of translation keys. This is by no means a full-on i18n solution, but it does help make customizing theme text a bit easier. The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_data/ui-text.yml) are translated in the following languages: +- Arabic (عربي) - Brazilian Portuguese (Português brasileiro) +- Bulgarian +- Catalan - Chinese +- Czech - Danish - Dutch +- Finnish - French (Français) - German (Deutsch) - Greek +- Hebrew - Hungarian - Indonesian +- Irish (Gaeilge) - Italian (Italiano) +- Kiswahili - Korean - Japanese - Malayalam +- Myanmar (Burmese) - Nepali (Nepalese) +- Norwegian (Norsk) - Polish - Persian (فارسی) - Romanian diff --git a/docs/_docs/10-layouts.md b/docs/_docs/10-layouts.md index 49b150073fa9..cf3eeb47a5e0 100644 --- a/docs/_docs/10-layouts.md +++ b/docs/_docs/10-layouts.md @@ -7,7 +7,7 @@ single_layout_gallery: alt: "single layout with header example" - image_path: /assets/images/mm-layout-single-meta.png alt: "single layout with comments and related posts" -last_modified_at: 2019-01-08T08:31:40-05:00 +last_modified_at: 2020-08-30T21:27:40-04:00 toc: true toc_label: "Included Layouts" toc_icon: "columns" @@ -128,7 +128,8 @@ Auto-generated table of contents list for your posts and pages can be enabled by | --------- | -------- | ----------- | ------- | | **toc** | Optional | Show table of contents. (boolean) | `false` | | **toc_label** | Optional | Table of contents title. (string) | `toc_label` in UI Text data file. | -| **toc_icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | +| **toc_icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/v6/search?s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | +| **toc_sticky** | Optional | Stick table of contents to top of screen. | `false` | **TOC example with custom title and icon** @@ -140,6 +141,31 @@ toc_icon: "cog" --- ``` +{% capture notice-text %} +**Note:** You need to use contiguous levels of headings for the TOC to generate properly. For example: + +```markdown +Good headings: + +# Heading +## Heading +### Heading +### Heading +# Heading +## Heading + +Bad headings: + +# Heading +### Heading (skipped H2) +##### Heading (skipped H4) +``` +{% endcapture %} + +<div class="notice--warning"> + {{ notice-text | markdownify }} +</div> + ## Archive layout Essentially the same as `single` with markup adjustments and some modules removed. @@ -224,7 +250,7 @@ If you're not using the `jekyll-archives` plugin then you need to create archive | [Category Archive](https://mmistakes.github.io/minimal-mistakes/categories/edge-case/) | `layout: category` | [edge-case.md](https://github.com/mmistakes/minimal-mistakes/blob/master/docs/_pages/edge-case.md) | | [Tags Archive](https://mmistakes.github.io/minimal-mistakes/tags/) | `layout: tags` | [tag-archive.md](https://github.com/mmistakes/minimal-mistakes/blob/master/docs/_pages/tag-archive.md) | | [Tag Archive](https://mmistakes.github.io/minimal-mistakes/tags/markup/) | `layout: tag` | [markup.md](https://github.com/mmistakes/minimal-mistakes/blob/master/docs/_pages/markup.md) | -| [Collection Archive](https://mmistakes.github.io/minimal-mistakes/recipes-archive/) | `layout: collection` | [recipes-archive.md](https://github.com/mmistakes/minimal-mistakes/blob/master/docs/_pages/recipes-archive.md) | +| [Collection Archive](https://mmistakes.github.io/minimal-mistakes/recipes/) | `layout: collection` | [recipes-archive.md](https://github.com/mmistakes/minimal-mistakes/blob/master/docs/_pages/recipes-archive.md) | **Note:** By default, documents are shown in a list view. To change to a grid view add `entries_layout: grid` to the page's front matter. {: .notice--info} @@ -249,7 +275,7 @@ This layout displays all documents grouped by a specific collection. It accommod collection: # collection name entries_layout: # list (default), grid show_excerpts: # true (default), false -sort_by: # date (default) title +sort_by: # date (default), title or any metadata key added to the collection's documents sort_order: # forward (default), reverse ``` @@ -263,6 +289,11 @@ collection: recipes ``` If you want to sort the collection by title add `sort_by: title`. If you want reverse sorting, add `sort_order: reverse`. +You can also use any metadata key that is present in the documents. For example, you can add `number: <any number>` to your documents and use `number` as the sort key: + +```yaml +sort_by: number +``` ### `layout: category` @@ -332,9 +363,12 @@ Then adjust the `paginate_path` in **_config.yml** to match. ```yaml paginate_path: /blog/page:num -``` +``` + +**Note:** The default Jekyll Paginate plugin can only paginate a single `index.html` file. If you'd like to paginate more pages (e.g. category indexes) you'll need the help of a custom plugin. For more pagination-related settings check the [**Configuration**]({{ "/docs/configuration/#paginate" | relative_url }}) section, including settings for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2). +{: .notice--info} -**Note:** Jekyll can only paginate a single `index.html` file. If you'd like to paginate more pages (e.g. category indexes) you'll need the help of a custom plugin. For more pagination related settings check the [**Configuration**]({{ "/docs/configuration/#paginate" | relative_url }}) section. +**Note:** By default, documents are shown in a list view. To change to a grid view add `entries_layout: grid` to the page's front matter. To increase the width of the main container, giving more space to the grid items also add `classes: wide` to the home page's YAML Front Matter. {: .notice--info} ## Splash page layout @@ -424,12 +458,13 @@ To overlay text on top of a header image you have a few more options: | Name | Description | Default | | ---- | ----------- | ------- | | **overlay_image** | Header image you'd like to overlay. Same rules as `header.image` from above. | | -| **overlay_filter** | Color/opacity to overlay on top of the header image eg: `0.5` or `rgba(255, 0, 0, 0.5)`. | +| **overlay_filter** | Color/opacity to overlay on top of the header image. Example: `0.5`, `rgba(255, 0, 0, 0.5)` or [`linear-gradient`][mdn-linear-gradient]. | | **show_overlay_excerpt** | Display excerpt in the overlay text | true | | **excerpt** | Auto-generated page excerpt is added to the overlay text or can be overridden. | | +| **tagline** | Overrides page excerpt. Useful when header text needs to be different from excerpt in archive views. | | | **actions** | Call to action button links (`actions` array: `label` and `url`). More than one button link can be assigned. | | -| **cta_label** | Deprecated, use `actions` instead. Call to action button text label. | `more_label` in UI Text data file | -| **cta_url** | Deprecated, use `actions` instead. Call to action button URL. | | + + [mdn-linear-gradient]: https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient() With this YAML Front Matter: @@ -472,7 +507,7 @@ header: url: "https://github.com" ``` -Or if you want to do more fancy things, go full rgba: +Or if you feel colorful, use full rgba:  @@ -487,6 +522,21 @@ header: url: "https://github.com" ``` +Or if you want to do more fancy things, go all the way to [linear-gradient][mdn-linear-gradient]: + + + +```yaml +excerpt: "This post should [...]" +header: + overlay_image: /assets/images/unsplash-image-1.jpg + overlay_filter: linear-gradient(rgba(255, 0, 0, 0.5), rgba(0, 255, 255, 0.5)) + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" + actions: + - label: "Download" + url: "https://github.com" +``` + Multiple call to action button links can be assigned like this: ```yaml @@ -541,13 +591,13 @@ defaults: **Note:** To disable the author sidebar profile for a specific post or page, add `author_profile: false` to the YAML Front Matter instead. {: .notice--warning} -To assign more author links, add to the `author.links` array in [`_config.yml`]({{ "/docs/configuration/" | relative_url }}) link so. Any of [Font Awesome's icons](https://fontawesome.com/icons?d=gallery) are available for use. +To assign more author links, add to the `author.links` array in [`_config.yml`]({{ "/docs/configuration/" | relative_url }}) link so. Any of [Font Awesome's icons](https://fontawesome.com/v6/search) are available for use. ```yaml author: name: "Your Name" avatar: "/assets/images/bio-photo.jpg" - bio: "I am an amazing person." + bio: "I am an **amazing** person." # Note: Markdown is allowed location: "Somewhere" links: - label: "Made Mistakes" @@ -575,7 +625,7 @@ For example, to color a Reddit icon, simply add a `color` declaration and the co color: #ff4500; } } -``` +```  @@ -621,11 +671,11 @@ To create a sidebar menu[^sidebar-menu] similar to the one found in the theme's <figcaption>Custom sidebar navigation menu example.</figcaption> </figure> -To start, add a new key to `_data/navigation.yml`. This will be referenced later in via YAML Front Matter so keep it short and memorable. In the case of the theme's documentation menu I used `docs`. +To start, add a new key to `_data/navigation.yml`. This will be referenced later via YAML Front Matter so keep it short and memorable. In the case of the theme's documentation menu I used `docs`. **Sample sidebar menu links:** -```yaml +```yaml docs: - title: Getting Started children: @@ -697,6 +747,15 @@ defaults: nav: "docs" ``` +*New in v4.26.0*: If you have multiple sidebar navs defined and want to include more than one on a page, the sidebar nav can also be a list. + +```yaml +sidebar: + nav: + - main + - docs +``` + --- ## Social sharing links @@ -726,23 +785,69 @@ The important parts to change are: To change the color of the button use one of the built in [utility classes]({{ "/docs/utility-classes/#buttons" | relative_url }}). Or you can create a new button class to match whatever color you want. -Under the `$social` color map in `assets/_scss/_buttons.scss` simply add a name (this will be appened to `btn--`) that matches the new button class. In our case `reddit` ~> `.btn--reddit`. +Under the `$buttoncolors:` color map in `_sass/minimal-mistakes/_buttons.scss` simply add a name (this will be appended to `btn--`) that matches the new button class. In our case `reddit` ~> `.btn--reddit`. ```scss -$social: +$buttoncolors: (facebook, $facebook-color), (twitter, $twitter-color), -(linkedin, $linkedin-color); -(reddit, #ff4500;) +(linkedin, $linkedin-color), +(reddit, $reddit-color); ``` -**ProTip:** For bonus points you can add it as a Sass `$variable` that you set in `_variables.scss` like the other ["brand" colors](http://brandcolors.net/). +**ProTip:** For bonus points you can modify the Sass variable `$reddit-color` that is set in `_variables.scss` [or use a different "brand" color](http://brandcolors.net/). {: .notice--info} Add the new `.btn--reddit` class to the `<a>` element from earlier, [compile `main.css`]({{ "/docs/stylesheets/" | relative_url }}) and away you go. ```html -{% raw %}<a href="https://www.reddit.com/submit?url={{ page.url | relative_url }}&title={{ page.title }}" class="btn btn--reddit" title="{{ site.data.ui-text[site.locale].share_on_label }} Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a>{% endraw %} +{% raw %}<a href="https://www.reddit.com/submit?url={{ page.url | absolute_url | url_encode }}&title={{ page.title }}" class="btn btn--reddit" title="{{ site.data.ui-text[site.locale].share_on_label }} Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a>{% endraw %} ```  + +--- + +## Custom head and footer + +The `default` layout includes a number of custom templates, which provide ways for you to directly add content to all your pages. + +### Head + +`_includes/head/custom.html` is included at the end of the `<head>` tag. An example use of this include is to add custom CSS per page: + +Add some Liquid tags for the new configuration to `_includes/head/custom.html`. +{% raw %}```html +{% if page.page_css %} + {% for stylesheet in page.page_css %} + <link rel="stylesheet" href="{{ stylesheet | relative_url }}"> + {% endfor %} +{% endif %} +```{% endraw %} + +Next, add `page_css` to any page's YAML Front Matter to have your CSS loaded for that page. +```yaml +page_css: + - /path/to/your/custom.css +``` + +### Footer + +`_includes/footer/custom.html` is included at the beginning of the `<footer>` tag. An example use of this include is to add custom JavaScript per page: + +Add some Liquid tags for the new configuration to `_includes/footer/custom.html`. +{% raw %}```html +{% if page.page_js %} + {% for script in page.page_js %} + <script src="{{ script | relative_url }}"></script> + {% endfor %} +{% endif %} +```{% endraw %} + +Next, add `page_js` to any page's YAML Front Matter to have your JavaScript loaded for that page. +```yaml +page_js: + - /path/to/your/custom.js +``` + +--- diff --git a/docs/_docs/13-collections.md b/docs/_docs/13-collections.md index 4e05cb00cd21..8a88b51a5e0a 100644 --- a/docs/_docs/13-collections.md +++ b/docs/_docs/13-collections.md @@ -41,6 +41,19 @@ defaults: share: true ``` +Now make a portfolio.md file in the '_pages' folder. + +```yaml +--- +title: Portfolio +layout: collection +permalink: /portfolio/ +collection: portfolio +entries_layout: grid +classes: wide +--- +``` + And then create portfolio content like [`_portfolio/foo-bar-website.md`](https://github.com/{{ site.repository }}/blob/master/docs/_portfolio/foo-bar-website.md), to end up with something like this. - \ No newline at end of file + diff --git a/docs/_docs/14-helpers.md b/docs/_docs/14-helpers.md index 3893ec9bfa2a..f76dff403ad1 100644 --- a/docs/_docs/14-helpers.md +++ b/docs/_docs/14-helpers.md @@ -30,7 +30,7 @@ feature_row: - image_path: /assets/images/unsplash-gallery-image-3-th.jpg title: "Placeholder 3" excerpt: "This is some sample content that goes here with **Markdown** formatting." -last_modified_at: 2018-11-25T20:47:01-05:00 +last_modified_at: 2020-05-01T10:22:56-04:00 toc: true toc_label: "Helpers" toc_icon: "cogs" @@ -53,20 +53,23 @@ Generate a `<figure>` element with a single image and caption. | **image_path** | **Required** | Full path to image eg: `/assets/images/filename.jpg`. Use absolute URLS for those hosted externally. | | **alt** | Optional | Alternate text for image. | | **caption** | Optional | Figure caption text. Markdown is allowed. | +| **popup** | Optional | Enable Magnific Popup on the image. | Using the `figure` include like so: ```liquid -{% raw %}{% include figure image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}{% endraw %} +{% raw %}{% include figure popup=true image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}{% endraw %} ``` Will output the following: -{% include figure image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %} +{% include figure popup=true image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %} ```html <figure> - <img src="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image"> + <a href="/assets/images/unsplash-image-10.jpg" class="image-popup" title="This is a figure caption."> + <img src="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image"> + </a> <figcaption>This is a figure caption.</figcaption> </figure> ``` @@ -129,7 +132,7 @@ To add a feature row containing three content blocks with text and image, add th | Name | Required | Description | Default | | ----------------- | ------------ | ---------------------------------------------------------------------------------------------------- | ---------------------------------- | | **image_path** | **Required** | Full path to image eg: `/assets/images/filename.jpg`. Use absolute URLS for those hosted externally. | | -| **image_caption** | Optional | Caption for image, Markdown is supported eg: `"Image from [Unsplash](https://unsplash.com)" | +| **image_caption** | Optional | Caption for image, Markdown is supported eg: `"Image from [Unsplash](https://unsplash.com)"` | | **alt** | Optional | Alternate text for image. | | | **title** | Optional | Content block title. | | | **excerpt** | Optional | Content block excerpt text. Markdown is allowed. | | @@ -173,12 +176,13 @@ And then drop-in the feature row include in the body where you'd like it to appe ## Responsive video embed -Embed a video from YouTube, Vimeo, or Google Drive that responsively sizes to fit the width of its parent. To help with GDPR compliance, the theme is using the privacy enhanced version of YouTube and Vimeo providers out of the box. +Embed a video from YouTube, Vimeo, Google Drive, or bilibili that responsively sizes to fit the width of its parent. To help with GDPR compliance, the theme is using the privacy enhanced version of YouTube and Vimeo providers out of the box. | Parameter | Required | Description | | ---------- | ------------ | ---------------------------------------------------------- | | `id` | **Required** | ID of the video | -| `provider` | **Required** | Hosting provider of the video: `youtube`, vimeo`, or `google-drive` | +| `provider` | **Required** | Hosting provider of the video: `youtube`, `vimeo`, `google-drive`, or `bilibili` | +| `danmaku` | Optional | Bilibili only, [details below](#Bilibili) | ### YouTube @@ -240,6 +244,30 @@ header: provider: google-drive ``` +### Bilibili + +To embed the following Bilibili video at url `https://www.bilibili.com/video/BV1E7411e7hC` into a post or page's main content you'd use: + +```liquid +{% raw %}{% include video id="BV1E7411e7hC" provider="bilibili" %}{% endraw %} +``` + +If you want to enable danmaku (弹幕) for the embedded video, which is disabled by default, you can supply an additional parameter `danmaku="1"` as shown below: + +```liquid +{% raw %}{% include video id="BV1E7411e7hC" provider="bilibili" danmaku="1" %}{% endraw %} +``` + +To embed it as a video header you'd use the following YAML Front Matter: + +```yaml +header: + video: + id: BV1E7411e7hC + provider: bilibili + danmaku: 1 +``` + ## Table of contents Auto-generated table of contents list for your posts and pages can be enabled using two methods. @@ -254,7 +282,7 @@ Add `toc: true` to the YAML Front Matter of any post or page. | -------------- | -------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **toc** | Optional | Show table of contents. (boolean) | `false` | | **toc_label** | Optional | Table of contents title. (string) | `toc_label` in UI Text data file. | -| **toc_icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | +| **toc_icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/v6/search?s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | | **toc_sticky** | Optional | Stick table of contents to top of screen. | `false` | **TOC example with custom title and icon** @@ -270,6 +298,31 @@ toc_icon: "cog" **Note:** using both methods will have unintended results. Be sure to remove `{% raw %}{% include toc %}{% endraw %}` placed table of contents from your content when using `toc: true`. {: .notice--warning } +{% capture notice-text %} +**Note:** You need to use contiguous levels of headings for the TOC to generate properly. For example: + +```markdown +Good headings: + +# Heading +## Heading +### Heading +### Heading +# Heading +## Heading + +Bad headings: + +# Heading +### Heading (skipped H2) +##### Heading (skipped H4) +``` +{% endcapture %} + +<div class="notice--warning"> + {{ notice-text | markdownify }} +</div> + ### Enabled via `toc` include (deprecated) To include a Kramdown [auto-generated table of contents](https://kramdown.gettalong.org/converter/html.html#toc) for posts and pages, add the following helper to your content. @@ -287,7 +340,7 @@ To include a Kramdown [auto-generated table of contents](https://kramdown.gettal | Parameter | Required | Description | Default | | --------- | -------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **title** | Optional | Table of contents title. (string) | `toc_label` in UI Text data file. | -| **icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | +| **icon** | Optional | Table of contents icon, displays before the title. (string) | [Font Awesome](https://fontawesome.com/v6/search?s=solid&m=free) <i class="fas fa-file-alt"></i> **file-alt** icon. Other FA icons can be used instead. | **TOC example with custom title and icon** diff --git a/docs/_docs/15-utility-classes.md b/docs/_docs/15-utility-classes.md index f45f2eccc1f6..3e20023f0e70 100644 --- a/docs/_docs/15-utility-classes.md +++ b/docs/_docs/15-utility-classes.md @@ -172,6 +172,6 @@ You can also add the `.notice` class to a `<div>` element. {% endcapture %} <div class="notice--info"> - <h4>Notice Headline:</h4> + <h4 class="no_toc">Notice Headline:</h4> {{ notice-text | markdownify }} </div> diff --git a/docs/_docs/16-stylesheets.md b/docs/_docs/16-stylesheets.md index 78b500fbb1a6..c8acf05146d5 100644 --- a/docs/_docs/16-stylesheets.md +++ b/docs/_docs/16-stylesheets.md @@ -40,29 +40,29 @@ minimal-mistakes ## Customizing -To override the default [Sass](http://sass-lang.com/guide) (located in theme's +To override the default [Sass](http://sass-lang.com/guide) (located in theme's `_sass` directory), do one of the following: 1. Copy directly from the Minimal Mistakes theme gem - - Go to your local Minimal Mistakes gem installation directory (run + - Go to your local Minimal Mistakes gem installation directory (run `bundle show minimal-mistakes-jekyll` to get the path to it). - - Copy the contents of `/assets/css/main.scss` from there to + - Copy the contents of `/assets/css/main.scss` from there to `<your_project>`. - Customize what you want inside `<your_project>/assets/css/main.scss`. 2. Copy from this repo. - - Copy the contents of [assets/css/main.scss](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) + - Copy the contents of [assets/css/main.scss](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) to `<your_project>`. - Customize what you want inside `<your_project/assets/css/main.scss`. -**Note:** To make more extensive changes and customize the Sass partials bundled -in the gem. You will need to copy the complete contents of the `_sass` directory +**Note:** To make more extensive changes and customize the Sass partials bundled +in the gem. You will need to copy the complete contents of the `_sass` directory to `<your_project>` due to the way Jekyll currently reads those files. -To make basic tweaks to theme's style Sass variables can be overridden by adding -to `<your_project>/assets/css/main.scss`. For instance, to change the +To make basic tweaks to theme's style Sass variables can be overridden by adding +to `<your_project>/assets/css/main.scss`. For instance, to change the link color used throughout the theme add: ```scss @@ -71,7 +71,7 @@ $link-color: red; Before any `@import` lines. -### Paragraph indention +### Paragraph indention To mimic the look of type set in a printed book or manuscript you may want to enable paragraph indention. When `$paragraph-indent` is set to `true` indents are added to each sibling and the margin below each paragraph is removed. @@ -120,7 +120,7 @@ $header-font-family : $sans-serif-narrow; ### Type scale -Wherever possible type scale variables have been used instead of writing out fixed sizes. This makes updating much easier by changing values in one file. +Wherever possible type scale variables have been used instead of writing out fixed sizes. This makes updating much easier by changing values in one file. Example: @@ -147,7 +147,7 @@ $type-size-8 : 0.625em; // ~10px ### Colors -Change the mood of your site by altering a few color variables. `$body-color`, `$background-color`, `$text-color`, `$link-color`, and `$masthead-link-color` will have the most affect when changed. +Change the mood of your site by altering a few color variables. `$body-color`, `$background-color`, `$text-color`, `$link-color`, and `$masthead-link-color` will have the most effect when changed. #### Syntax highlighting @@ -275,6 +275,31 @@ $base0e: #bb90e2; $base0f: #b49368; ``` +##### Dracula + + + +```scss +/* dracula syntax highlighting (base16) */ +/* https://github.com/dracula/base16-dracula-scheme */ +$base00: #282936; +$base01: #3a3c4e; +$base02: #4d4f68; +$base03: #626483; +$base04: #62d6e8; +$base05: #e9e9f4; +$base06: #f1f2f8; +$base07: #f7f7fb; +$base08: #ea51b2; +$base09: #b45bcf; +$base0a: #00f769; +$base0b: #ebff87; +$base0c: #a1efe4; +$base0d: #62d6e8; +$base0e: #b45bcf; +$base0f: #00f769; +``` + ##### Neon  @@ -345,7 +370,7 @@ $base0c: #8abeb7; $base0d: #81a2be; $base0e: #b294bb; $base0f: #a3685a; -``` +``` ### Breakpoints and grid stuff diff --git a/docs/_docs/17-javascript.md b/docs/_docs/17-javascript.md index 3d8ad948e559..919315cb5d8c 100644 --- a/docs/_docs/17-javascript.md +++ b/docs/_docs/17-javascript.md @@ -2,7 +2,7 @@ title: "JavaScript" permalink: /docs/javascript/ excerpt: "Instructions for customizing and building the theme's scripts." -last_modified_at: 2019-05-02T08:55:27-04:00 +last_modified_at: 2021-07-23T09:33:35-04:00 --- The theme's `assets/js/main.min.js` script is built from several vendor, jQuery plugins, and other scripts found in [`assets/js/`](https://github.com/mmistakes/minimal-mistakes/tree/master/assets/js). @@ -20,7 +20,7 @@ minimal mistakes | | | └── smooth-scroll.js # make same-page links scroll smoothly | | ├── vendor | | | └── jquery -| | | └── jquery-3.4.1.js +| | | └── jquery-3.5.1.js | | ├── _main.js # jQuery plugin settings and other scripts | | └── main.min.js # concatenated and minified theme script ``` @@ -64,3 +64,19 @@ To get started: {: .notice--warning} If all goes well, running `npm run build:js` will compress/concatenate `_main.js` and all plugin scripts into `main.min.js`. + +## Debugging + +The minified JavaScript is harder to debug in the browser than the raw source. To stop the minification and bundle all the JavaScript as-is --- open up `package.json` and edit the value `scripts.uglify` from: + +```json + "scripts": { + "uglify": "uglifyjs [...] -c -m -o assets/js/main.min.js", +``` + +To the following: + +```json + "scripts": { + "uglify": "cat [...] > assets/js/main.min.js", +``` diff --git a/docs/_docs/18-history.md b/docs/_docs/18-history.md index 0698f28b550c..f9da68e7bc08 100644 --- a/docs/_docs/18-history.md +++ b/docs/_docs/18-history.md @@ -1,14 +1,489 @@ --- -title: "History" +title: History classes: wide -permalink: /docs/history/ -excerpt: "Change log of enhancements and bug fixes made to the theme." +permalink: "/docs/history/" +excerpt: Change log of enhancements and bug fixes made to the theme. sidebar: nav: docs -last_modified_at: 2019-05-03T23:05:18-04:00 +last_modified_at: '2025-02-14T22:47:24+08:00' toc: false --- +<!-- + Sourced from CHANGELOG.md + See Rakefile `task :changelog` for details +--> + +{% raw %} +## Unreleased + +### Enhancements + +- Add RTL Support. [#4886](https://github.com/mmistakes/minimal-mistakes/pull/4886) +- Add missing Polish translation. [#4890](https://github.com/mmistakes/minimal-mistakes/pull/4890) +- Rewrite most directions with [CSS logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values). +- Remove unnecessary "type" attribute [#4956](https://github.com/mmistakes/minimal-mistakes/issues/4956) +- The "if" means the default is never used [#4955](https://github.com/mmistakes/minimal-mistakes/issues/4955) +- For pages without a title, show the site title only once [#4959](https://github.com/mmistakes/minimal-mistakes/issues/4959) +- Use `documents-collection.html` partial in `home` layout. +- Add Bulgarian translation. [#5003](https://github.com/mmistakes/minimal-mistakes/pull/5003) +- Add provider and comments info to `single.html` layout for non-production. [#5068](https://github.com/mmistakes/minimal-mistakes/issues/5068) +- Tweak contrast skin $primary-color to adhere to WCAG guidelines. [#5126](https://github.com/mmistakes/minimal-mistakes/issues/5126) + +### Bug Fixes + +- Replace a redirected link to MadeMistakes in footer. [#4882](https://github.com/mmistakes/minimal-mistakes/pull/4882) +- Fix wrong float direction for `feature_row` with `type="right"`. [#4061](https://github.com/mmistakes/minimal-mistakes/issues/4061) +- Fix reset stylesheet overruling `$doc-font-size`. [#4983](https://github.com/mmistakes/minimal-mistakes/issues/4983) +- Fix JavaScript null error on home and splash layouts. [#4938](https://github.com/mmistakes/minimal-mistakes/issues/4938), [#4939](https://github.com/mmistakes/minimal-mistakes/pull/4939) +- Fix bad <figure> HTML if "alt" contains quotes. +- Fix extra newline generated in `_includes/post_pagination.html`. +- Hide hidden links & remove the overlay when one is clicked. [#5042](https://github.com/mmistakes/minimal-mistakes/pull/5042) +- Fix typo in "Configuration" [#5106](https://github.com/mmistakes/minimal-mistakes/issues/5106) + +### Documentation & Maintenance + +- Automatically update Algolia search index with GitHub Actions. + +## [4.26.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2) + +### Enhancements + +- Add Czech localization. [#4866](https://github.com/mmistakes/minimal-mistakes/pull/4866) +- Allow overriding HTML `lang` attribute on a per-page basis. [#4862](https://github.com/mmistakes/minimal-mistakes/pull/4862) + +### Bug Fixes + +- Figure helper breaks when using code markup in caption with `popup=true`. [#4841](https://github.com/mmistakes/minimal-mistakes/issues/4841) + +## [4.26.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.1) + +### Bug Fixes + +- Disable copy button on invalid syntax highlighting blocks to avoid positioning issues. +- Fix typo for `fa-dribbble` in `_utilities.scss`. +- Restrict "auto scroll sticky ToC to content" feature to Chromium browsers for now. [#4826](https://github.com/mmistakes/minimal-mistakes/issues/4826) + +### Documentation & Maintenance + +- Rewrite social icons SCSS with a loop. + +### Enhancements + +- Change the icon of a copy button into a tick for 1.5 seconds on successful copy. + +## [4.26.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0) + +### Bug Fixes + +- Fix an unclosed `<p>` tag in `page__hero.html`, near `page.header.actions`. +- Remove overlay and revert X to hamburger icon when popup disappears. [#3958](https://github.com/mmistakes/minimal-mistakes/pull/3958) +- Fix SEO title when it contains a vertical bar. [#3094](https://github.com/mmistakes/minimal-mistakes/pull/3094) [#3113](https://github.com/mmistakes/minimal-mistakes/pull/3113) +- Remove "sticky sidebar" JS as it's now completely based on CSS media queries. [#4245](https://github.com/mmistakes/minimal-mistakes/issues/4245) [#4645](https://github.com/mmistakes/minimal-mistakes/pull/4645) + +### Enhancements + +- Add support for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2) 🎉 [#2636](https://github.com/mmistakes/minimal-mistakes/pull/2636) +- Add "copy to clipboard" button for code blocks 🎉 [#2812](https://github.com/mmistakes/minimal-mistakes/pull/2812) +- Auto scroll sticky ToC with content. [#3115](https://github.com/mmistakes/minimal-mistakes/pull/3115) +- Replace "hidden" check in Liquid templates with `where_exp: "item", "item.hidden != true"`. +- Remove deprecated `page.header.cta_url` setting. [#4821](https://github.com/mmistakes/minimal-mistakes/pull/4821) +- Allow multiple nav lists in sidebar. [#2843](https://github.com/mmistakes/minimal-mistakes/pull/2843) +- Add popup parameter to `{% include figure %}` to enable Magnific Popup. [#3119](https://github.com/mmistakes/minimal-mistakes/pull/3119) +- Add target attribute for navigation link. [#3056](https://github.com/mmistakes/minimal-mistakes/pull/3056) +- Split schema to a separate include file. [#3085](https://github.com/mmistakes/minimal-mistakes/pull/3085) +- Cleanup `_includes/seo.html`. + +### Documentation & Maintenance + +- Rewrite skin previews on `05-configuration.md` in Liquid template. +- Remove unused classes from `_layouts/single.html`. +- Migrate npm run scripts to Ruby Rake tasks. +- Add Rake task `version` for updating all hard-coded version numbers from `package.json` all at once. +- Merge `categories` and `tags` layout into `_includes/posts-taxonomy.html`. +- Update Social Sharing links section. [#4066](https://github.com/mmistakes/minimal-mistakes/pull/4066) + +## [4.25.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1) + +### Bug Fixes + +- "You may also enjoy" no longer recommends hidden posts. [#4653](https://github.com/mmistakes/minimal-mistakes/issues/4653) +- Replaced dead link to "Viewport and Media Queries" slides. [#4421](https://github.com/mmistakes/minimal-mistakes/discussions/4421) +- Fix broken `where_exp` in `lunr-store.js` for Jekyll < 4.0. [#4808](https://github.com/mmistakes/minimal-mistakes/issues/4808) + +### Enhancements + +- Add Ukrainian translations. [#4273](https://github.com/mmistakes/minimal-mistakes/pull/4273) +- Add more configuration for Giscus. [#4274](https://github.com/mmistakes/minimal-mistakes/pull/4274) +- Bump jekyll-toc to [v1.2.1](https://github.com/allejo/jekyll-toc/releases/tag/v1.2.1). + +### Documentation & Maintenance + +- Bump shell-quote from 1.7.1 to 1.7.3 [#3692](https://github.com/mmistakes/minimal-mistakes/issues/3692) +- Add `after-content.html` and `before-related.html` includes to ease docs site overrides. +- GitHub Workflows security hardening [#3884](https://github.com/mmistakes/minimal-mistakes/issues/3884) +- Replace Font Awesome v5 search page with v6. +- Try adding an FAQ page. +- Update remote theme reference in Quick-Start Guide to point to 4.25.0. [#4809](https://github.com/mmistakes/minimal-mistakes/issues/4809) + +## [4.25.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.0) + +### Bug Fixes + +- Fix Linkedin social share link [#4754](https://github.com/mmistakes/minimal-mistakes/issues/4754) +- Fix non-English characters being url encoded in breadcrumb [#3819](https://github.com/mmistakes/minimal-mistakes/issues/3819) +- Fix wrong `first_page_path` because of hard-coded `page:num` [#3778](https://github.com/mmistakes/minimal-mistakes/issues/3778) +- Remove JS and other files from search index [#4000](https://github.com/mmistakes/minimal-mistakes/pull/4000) +- Fix unlisted YouTube video embeds in documentation/test sites. [#3649](https://github.com/mmistakes/minimal-mistakes/issues/3649) +- Fix error in Algolia search script when returning a hit that without `html` and `hightlight.html`. [#3101](https://github.com/mmistakes/minimal-mistakes/issues/3101) [#3102](https://github.com/mmistakes/minimal-mistakes/pull/3102) +- Fix inline code style not applied to stylized text. [#3253](https://github.com/mmistakes/minimal-mistakes/pull/3253) +- Fix Keybase icon in author sidebar. [#3221](https://github.com/mmistakes/minimal-mistakes/pull/3221) +- Fix sort order of Staticman comments when data files aren't named alphabetically. [#3184](https://github.com/mmistakes/minimal-mistakes/pull/3184) +- Fix `layout: compress` issue with HTML comment in video include. [#3117](https://github.com/mmistakes/minimal-mistakes/pull/3117) +- Add Magnific Popup class to anchors that only contain an `img` element. [#3111](https://github.com/mmistakes/minimal-mistakes/issues/3111) [#3114](https://github.com/mmistakes/minimal-mistakes/pull/3114) +- Fix heading level of related posts section from `h4` to `h2` to improve accessibility and SEO. [#3064](https://github.com/mmistakes/minimal-mistakes/pull/3064) +- Fix grammar error in German localized UI text string. [#3063](https://github.com/mmistakes/minimal-mistakes/pull/3063) +- Remove site.url from first breadcrumb link. [#3051](https://github.com/mmistakes/minimal-mistakes/pull/3051) + +### Enhancements + +- Add `site.copyright` and `site.copyright_url` config options [#4313](https://github.com/mmistakes/minimal-mistakes/pull/4313) +- Lazy-load InstantSearch scripts and stylesheets [#3691](https://github.com/mmistakes/minimal-mistakes/pull/3691) +- Improve Finnish translations [#4595](https://github.com/mmistakes/minimal-mistakes/pull/4595) +- Remove redundant downcase from \_layouts/categories.html. [#4531](https://github.com/mmistakes/minimal-mistakes/pull/4531) +- Load latest Font Awesome package. [#3765](https://github.com/mmistakes/minimal-mistakes/pull/3765) +- Add missing Polish missing UI text strings. [#3969](https://github.com/mmistakes/minimal-mistakes/pull/3969) +- Update breadcrumbs conditional to enable/disable them via Front Matter on pages using `layout: single`. [#3096](https://github.com/mmistakes/minimal-mistakes/pull/3096) [#3669](https://github.com/mmistakes/minimal-mistakes/pull/3669) +- Remove Internet Explorer 9 upgrade notice. [#3666](https://github.com/mmistakes/minimal-mistakes/pull/3666) +- Add Kiswahili localized UI text strings. [#3489](https://github.com/mmistakes/minimal-mistakes/pull/3489) +- Exclude `main.scss` from Lunr search index. +- Allow `site.pages` to be indexed and searched via Lunr. [#3352](https://github.com/mmistakes/minimal-mistakes/pull/3352) +- Update jQuery to v3.6.0. [#3254](https://github.com/mmistakes/minimal-mistakes/pull/3254) +- Use notice `<a>` colors for blockquotes that have `notice--` classes applied. [#3140](https://github.com/mmistakes/minimal-mistakes/pull/3140) [#3068](https://github.com/mmistakes/minimal-mistakes/issues/3068) +- Add sameAs itemprop to author link. [#3087](https://github.com/mmistakes/minimal-mistakes/pull/3087) +- Update and add missing Brazilian Portuguese translations. [#3204](https://github.com/mmistakes/minimal-mistakes/pull/3204) +- Add optional label attribute for utterances comments. [#3128](https://github.com/mmistakes/minimal-mistakes/pull/3128) +- Add missing Danish translations. [#3095](https://github.com/mmistakes/minimal-mistakes/pull/3095) +- Add ARIA role to search forms. [#3086](https://github.com/mmistakes/minimal-mistakes/pull/3086) +- Add overflow scroll bar to sticky table of contents that are taller than the viewport's height. [#2874](https://github.com/mmistakes/minimal-mistakes/pull/2874) +- Add Microformats markup. [#3052](https://github.com/mmistakes/minimal-mistakes/pull/3052) + +### Documentation & Maintenance + +- Fix links to Font Awesome gallery. [#3599](https://github.com/mmistakes/minimal-mistakes/pull/3599) +- Fix GreedyNav.js attribution link. [#3553](https://github.com/mmistakes/minimal-mistakes/pull/3553) +- Fix typo about loading JavaScript in layout documentation. [#3350](https://github.com/mmistakes/minimal-mistakes/pull/3350) +- Fix documentation typos. [#3232](https://github.com/mmistakes/minimal-mistakes/pull/3232) [#3318](https://github.com/mmistakes/minimal-mistakes/pull/3318) +- Add link to documentation clarifying how to add plugins. [#3181](https://github.com/mmistakes/minimal-mistakes/pull/3181) +- Fix broken documentation link and add Baidu site verification to `_config.yml` files. [#3139](https://github.com/mmistakes/minimal-mistakes/pull/3139) +- Bump path-parse from 1.0.6 to 1.0.7. [#3116](https://github.com/mmistakes/minimal-mistakes/pull/3116) +- Automatically close invalid PRs using GitHub Actions. [#3313](https://github.com/mmistakes/minimal-mistakes/pull/3313) +- Add instructions on how to unminify `main.js` for easier browser debugging. [#3055](https://github.com/mmistakes/minimal-mistakes/pull/3055) +- Consolidate hard-coded version numbers where possible. +- Add Rakefile for automatically syncing CHANGELOG with history and synched them. + +## [4.24.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.24.0) + +### Bug Fixes + +- Fix README text for Gumshoejs license. [#3024](https://github.com/mmistakes/minimal-mistakes/pull/3024) +- Remove `tabindex="-1"` from `input` elements in `search.html` layout to allow them to be accessible by keyboard. [#2982](https://github.com/mmistakes/minimal-mistakes/issues/2982) +- Fix broken sidebar image in sample post. [#3013](https://github.com/mmistakes/minimal-mistakes/issues/3013) +- Fix broken links in Upgrading documentation. [#3004](https://github.com/mmistakes/minimal-mistakes/issues/3004) + +### Enhancements + +- Remove IE9 flexbox fallback. [#3042](https://github.com/mmistakes/minimal-mistakes/pull/3042) +- Remove `h2` from skip links navigation as it is not important for site structure. [#3012](https://github.com/mmistakes/minimal-mistakes/pull/3012) +- Loads Font Awesome asynchronously. [#2967](https://github.com/mmistakes/minimal-mistakes/pull/2967) +- Replace custom search icon SVG with Font Awesome icon. [#2774](https://github.com/mmistakes/minimal-mistakes/pull/2774) +- Adds support for giscus comments. [#3022](https://github.com/mmistakes/minimal-mistakes/pull/3022) + +## [4.23.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.23.0) + +### Enhancements + +- Add Arabic (عربي) localized UI text strings. [#2936](https://github.com/mmistakes/minimal-mistakes/pull/2936) +- Update onchange and uglify-js dependencies. +- Document head and footer `custom.html` includes. [#2815](https://github.com/mmistakes/minimal-mistakes/pull/2815) +- Color notices based on skin colors instead of fixed values. [#2887](https://github.com/mmistakes/minimal-mistakes/pull/2887) +- Add configurable datetime format. [#2844](https://github.com/mmistakes/minimal-mistakes/pull/2844) +- Add Baidu site verification [#2830](https://github.com/mmistakes/minimal-mistakes/pull/2830) +- Add `alt` attribute to site logo. [#2529](https://github.com/mmistakes/minimal-mistakes/issues/2529) [#2824](https://github.com/mmistakes/minimal-mistakes/issues/2824) + +### Bug Fixes + +- Fix menu toggle to properly show close icon when open. +- Fix Jekyll environment note in configuration documentation. [#2912](https://github.com/mmistakes/minimal-mistakes/issues/2912) +- Fix typo in Helpers documentation. [#2940](https://github.com/mmistakes/minimal-mistakes/pull/2940) +- Remove all references to official public Staticman API instance. [#2818](https://github.com/mmistakes/minimal-mistakes/issues/2818) [#2831](https://github.com/mmistakes/minimal-mistakes/pull/2831) +- Remove Google Search CSS. [#2852](https://github.com/mmistakes/minimal-mistakes/issues/2852) [#2855](https://github.com/mmistakes/minimal-mistakes/pull/2855) + +## [4.22.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.22.0) + +### Bug Fixes + +- Remove Google Search script from `404.md`. [#2597](https://github.com/mmistakes/minimal-mistakes/issues/2597) [#2737](https://github.com/mmistakes/minimal-mistakes/pull/2737) [#2789](https://github.com/mmistakes/minimal-mistakes/pull/2789) +- Fix Font Awesome icon color in `contrast`, `dark`, `mint`, `neon`, `plum`, and `sunrise` skins. [#2724](https://github.com/mmistakes/minimal-mistakes/issues/2724) + +### Enhancements + +- Allow custom sorting for collections. [#2723](https://github.com/mmistakes/minimal-mistakes/pull/2723) +- Use `sort_natural` instead of custom Liquid logic to sort tags and categories. [#2756](https://github.com/mmistakes/minimal-mistakes/pull/2756) +- Add configuration option to toggle off RSS feed link in `<head>` and site footer. [#2787](https://github.com/mmistakes/minimal-mistakes/pull/2787) +- Upgrade Lunrjs to 2.3.9 and switch to `relative_url`. [#2805](https://github.com/mmistakes/minimal-mistakes/pull/2805) +- Adds `.webp` to list of supported image extensions for the image popup lightbox. [#2788](https://github.com/mmistakes/minimal-mistakes/pull/2788) +- Add Hebrew localized UI text strings. [#2760](https://github.com/mmistakes/minimal-mistakes/pull/2760) +- Update documentation to include `toc_sticky` parameter's description. [#2741](https://github.com/mmistakes/minimal-mistakes/pull/2741) +- Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731) +- Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734) +- Update allejo/jekyll-toc to v1.1.0, skip headings without an ID. [#2752](https://github.com/mmistakes/minimal-mistakes/pull/2752) +- Allow custom gradient for page header overlay. [#2806](https://github.com/mmistakes/minimal-mistakes/pull/2806) + +## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0) + +### Bug Fixes + +- Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664) +- Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697) +- Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692) +- Fix a small typo in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718) + +### Enhancements + +- Update jQuery to 3.5.1. [#2713](https://github.com/mmistakes/minimal-mistakes/pull/2713) +- Add Indonesian localized UI text strings. [#2725](https://github.com/mmistakes/minimal-mistakes/pull/2725) +- Update Vietnamese localized UI text strings. [#2722](https://github.com/mmistakes/minimal-mistakes/pull/2722) +- Add Norwegian (Norsk) localized UI text strings. [#2702](https://github.com/mmistakes/minimal-mistakes/pull/2702) +- Update allejo/jekyll-toc to v1.0.14 [#2700](https://github.com/mmistakes/minimal-mistakes/pull/2700) + +## [4.20.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.2) + +### Bug Fixes + +- Fix broken link in documentation. [#2677](https://github.com/mmistakes/minimal-mistakes/issues/2677) +- Fix typo in documentation. [#2678](https://github.com/mmistakes/minimal-mistakes/issues/2678) +- Remove duplicate CSS definitions. [#2666](https://github.com/mmistakes/minimal-mistakes/pull/2666) +- Fix `entries_layout: grid` in various layouts. [#2639](https://github.com/mmistakes/minimal-mistakes/issues/2639) +- Change `fa` to `fas` for Font Awesome 5. [#2649](https://github.com/mmistakes/minimal-mistakes/pull/2649) + +### Enhancements + +- Refactor page meta include. [#2641](https://github.com/mmistakes/minimal-mistakes/pull/2641) +- Add `article:author` Open Graph markup. [#2670](https://github.com/mmistakes/minimal-mistakes/pull/2670) + +## [4.20.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.1) + +### Bug Fixes + +- Fix grid `entries_layout` in home.html. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616) + +## [4.20.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.0) + +### Bug Fixes + +- Add `relative_url` filter to author home link [#2575](https://github.com/mmistakes/minimal-mistakes/pull/2575) +- Fix `analytics.provider` config comment to list all analytics providers. [#2607](https://github.com/mmistakes/minimal-mistakes/pull/2607) +- Fix typo in installation documentation. [#2570](https://github.com/mmistakes/minimal-mistakes/pull/2570) +- Fix broken Lunr search with Jekyll v4.1.0. [#2617](https://github.com/mmistakes/minimal-mistakes/pull/2617) + +### Enhancements + +- Add an optional date alongside the reading time. To enable set `show_date: true` similar to how reading time is. [#2526](https://github.com/mmistakes/minimal-mistakes/pull/2526) +- Remove hidden posts from posts.html layout. [#2625](https://github.com/mmistakes/minimal-mistakes/pull/2625) +- Add entry layout configuration for `list` (default) or `grid` views on `layout: home`. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616) +- Add missing Chinese translations. [#2576](https://github.com/mmistakes/minimal-mistakes/pull/2576) +- Improve Chinese translations. [#2626](https://github.com/mmistakes/minimal-mistakes/pull/2626) +- Add `line-height` to `h4` element in notice helper. [#2602](https://github.com/mmistakes/minimal-mistakes/pull/2602) +- Improve Algolia search. [#2572](https://github.com/mmistakes/minimal-mistakes/pull/2572) +- Update link to wtfpl license in README. [#2571](https://github.com/mmistakes/minimal-mistakes/pull/2571) +- Ignore teaser headline in table of contents when including posts list in another page. [#2558](https://github.com/mmistakes/minimal-mistakes/pull/2558) +- Replace Font Awesome Kits with CSS from jsDelivr CDN. [#2583](https://github.com/mmistakes/minimal-mistakes/pull/2583) +- Add `danmaku` option to Bilibili video provider and add corresponding documentation/ [#2599](https://github.com/mmistakes/minimal-mistakes/pull/2599) +- Update documentation about loading l10n data file from the theme-gem. [#2621](https://github.com/mmistakes/minimal-mistakes/issues/2621) [#2624](https://github.com/mmistakes/minimal-mistakes/pull/2624) + +## [4.19.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.3) + +### Enhancements + +- Update GreedyNav.js to reduce masthead link overflow/shifting on mobile devices. [#2551](https://github.com/mmistakes/minimal-mistakes/issues/2551) +- Replace `<section id="custom-comments"></section>` in `comments.html` include and add `custom_scripts.html` include for loading custom comment provider JavaScript in the footer. [#2549](https://github.com/mmistakes/minimal-mistakes/issues/2549) +- Move page date Liquid to include. [#2544](https://github.com/mmistakes/minimal-mistakes/pull/2544) +- Strip trailing whitespace in `seo_description`. [#2542](https://github.com/mmistakes/minimal-mistakes/pull/2542) +- Improve sticky sidebar's appearance with short content. [#2514](https://github.com/mmistakes/minimal-mistakes/pull/2514) + +## [4.19.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.2) + +### Enhancements + +- Add support for bilibili videos in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#2512](https://github.com/mmistakes/minimal-mistakes/pull/2512) +- Add Myanmar (Burmese) localized UI text strings. [#2500](https://github.com/mmistakes/minimal-mistakes/pull/2500) +- Improve author links underline on hover. [#2472](https://github.com/mmistakes/minimal-mistakes/pull/2472) +- Add documentation for applying Front Matter defaults to jekyll-archives pages. [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466) +- Add missing Vietnamese translations. [#2459](https://github.com/mmistakes/minimal-mistakes/pull/2459) [#2486](https://github.com/mmistakes/minimal-mistakes/pull/2486) +- Fix Finnish localized UI text strings. [#2455](https://github.com/mmistakes/minimal-mistakes/pull/2455) +- Clarify documentation that Lunr only searches documents in collections. [#2450](https://github.com/mmistakes/minimal-mistakes/pull/2450) +- Add guide on applying Front Matter defaults to jekyll-archives pages [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466) + +### Bug Fixes + +- Fix typo in configuration documentation. [#2497](https://github.com/mmistakes/minimal-mistakes/pull/2497) +- Fix "Follow menu falls under post links" on small screens. [#2479](https://github.com/mmistakes/minimal-mistakes/issues/2479) +- Hide index page from page-archive. [#2482](https://github.com/mmistakes/minimal-mistakes/pull/2482) + +## [4.19.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.1) + +### Enhancements + +- Add [Dracula](https://draculatheme.com/) Base16 syntax highlighting theme Sass variables to [stylesheets documentation](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/#syntax-highlighting). [#2438](https://github.com/mmistakes/minimal-mistakes/pull/2438) +- Update links to `HTTPS` and remove Google+ from configuration documentation. [#2432](https://github.com/mmistakes/minimal-mistakes/pull/2432) +- Use `first_page_path` from jekyll-paginate-v2 if available. [#2431](https://github.com/mmistakes/minimal-mistakes/pull/2431) +- Update onchange and uglify-js dependencies. +- Update smooth-scroll.js to `v16.1.2`. [#2430](https://github.com/mmistakes/minimal-mistakes/issues/2430) + +### Bug Fixes + +- Fix author profile links `z-index` order on small screens. [#2440](https://github.com/mmistakes/minimal-mistakes/issues/2440) + +## [4.19.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.0) + +### Enhancements + +- Add "click" overlay to close masthead and follow button menus when open. [#1168](https://github.com/mmistakes/minimal-mistakes/issues/1168) +- Remove deprecated Staticman v1 configurations from `_config.yml`. [#2386](https://github.com/mmistakes/minimal-mistakes/issues/2386) +- Use `relative_url` and `absolute_url` filters where possible. [#2387](https://github.com/mmistakes/minimal-mistakes/pull/2387) +- Improve headline hierarchy and add Sass specific variables `$h-size-x`. [#2423](https://github.com/mmistakes/minimal-mistakes/issues/2423) +- Improve accessibility of `default` skin by increasing color contrast of text and links. +- Hide posts with `hidden: true` YAML front matter from appearing in listings. [#2345](https://github.com/mmistakes/minimal-mistakes/pull/2345) +- Add Irish (Gaeilge) localized UI text strings. [#2422](https://github.com/mmistakes/minimal-mistakes/pull/2422) +- Remove `box-shadow` on radio and checkbox inputs. [#2398](https://github.com/mmistakes/minimal-mistakes/pull/2398) +- Bump Jekyll gem dependency to `v3.7`. + +### Bug Fixes + +- Fix documentation around using `bundle info` command. [#2425](https://github.com/mmistakes/minimal-mistakes/pull/2425) +- Fix rake vulnerability in `.gemspec` file. +- Fix Staticman v2 comment submission. [#2402](https://github.com/mmistakes/minimal-mistakes/pull/2402) +- Fix repeated site base path for masthead logo. [#2385](https://github.com/mmistakes/minimal-mistakes/pull/2385) + +## [4.18.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.1) + +### Bug Fixes + +- Fix compatibility issue with jekyll-paginate-v2. [#2381](https://github.com/mmistakes/minimal-mistakes/pull/2381) + +## [4.18.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.0) + +### Enhancements + +- Allow `home` layout to display posts without pagination. [#2378](https://github.com/mmistakes/minimal-mistakes/pull/2378) +- Add links to high resolution skin screenshots in README. [#2363](https://github.com/mmistakes/minimal-mistakes/issues/2363) +- Update README and LICENSE. [#2367](https://github.com/mmistakes/minimal-mistakes/pull/2367) +- Update `.gitignore` file. [#2366](https://github.com/mmistakes/minimal-mistakes/pull/2366) +- Allow override of page excerpt in hero header via `tagline` YAML front matter. [#2307](https://github.com/mmistakes/minimal-mistakes/pull/2307) +- Exclude `package-lock.json` from Jekyll build. [#2364](https://github.com/mmistakes/minimal-mistakes/pull/2364) +- Use `%-d` instead of `%d` so displayed dates aren't padded with zero. [#2359](https://github.com/mmistakes/minimal-mistakes/pull/2359) +- Update table of contents helper (`toc.html`) to [v1.0.8](https://github.com/allejo/jekyll-toc/releases). [#2355](https://github.com/mmistakes/minimal-mistakes/pull/2355) +- Add missing Dutch localized UI text strings. [#2321](https://github.com/mmistakes/minimal-mistakes/pull/2321) +- Support page header (hero) in `archive-taxonomy` layout. [#2320](https://github.com/mmistakes/minimal-mistakes/pull/2320) +- Add social icon color for Keybase. [#2302](https://github.com/mmistakes/minimal-mistakes/pull/2302) + +### Bug Fixes + +- Fix JavaScript comments in Disqus include to be compatible with `compress` layout. [#2373](https://github.com/mmistakes/minimal-mistakes/pull/2373) +- Fix wrong newline concatenation in SEO description [#2368](https://github.com/mmistakes/minimal-mistakes/pull/2368) [#2354](https://github.com/mmistakes/minimal-mistakes/issues/2354) +- Fix Staticman v2/v3 conditional for showing comments. [#2351](https://github.com/mmistakes/minimal-mistakes/pull/2351) +- Fix masthead logo path. [#2332](https://github.com/mmistakes/minimal-mistakes/pull/2332) +- Fix schema.org dates to ISO-8601. [#2339](https://github.com/mmistakes/minimal-mistakes/pull/2339) +- Fix background color of code blocks in notices. [#2328](https://github.com/mmistakes/minimal-mistakes/pull/2328) +- Fix alignment of feature rows when placed next to a sticky sidebar. [#2327](https://github.com/mmistakes/minimal-mistakes/issues/2327) +- Fix `seo_description` in `_includes/seo.html`. [#2326](https://github.com/mmistakes/minimal-mistakes/pull/2326) +- Fix typo in `_config.yml`. [#2319](https://github.com/mmistakes/minimal-mistakes/pull/2319) + +## [4.17.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.2) + +### Enhancements + +- Add collection step to documentation about creating a portfolio page. [#2294](https://github.com/mmistakes/minimal-mistakes/pull/2294) +- Replace sticky footer JavaScript with flexbox styles. [#2289](https://github.com/mmistakes/minimal-mistakes/pull/2289) + +### Bug Fixes + +- Fix sticky footer when using MozBar extension. [#2281](https://github.com/mmistakes/minimal-mistakes/issues/2281) + +## [4.17.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.1) + +### Enhancements + +- Update Chinese (Simplified) localized UI text strings. [#2286](https://github.com/mmistakes/minimal-mistakes/pull/2286) +- Update list of 3rd party JavaScript used and licenses. [#2276](https://github.com/mmistakes/minimal-mistakes/pull/2276) + +### Bug Fixes + +- Fix indention of nested GFM task lists. [#2283](https://github.com/mmistakes/minimal-mistakes/issues/2283) + +## [4.17.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.0) + +### Enhancements + +- Show a permalink anchor when hovering over headings in main content area. [#2251](https://github.com/mmistakes/minimal-mistakes/pull/2251) +- Allow per-page override of `words_per_minute`. [#2250](https://github.com/mmistakes/minimal-mistakes/pull/2250) +- Update [onchange](https://www.npmjs.com/package/onchange) development dependency in `package.json`. [#2241](https://github.com/mmistakes/minimal-mistakes/issues/2241) +- Add Catalan localized UI text strings. [#2237](https://github.com/mmistakes/minimal-mistakes/pull/2237) + +### Bug Fixes + +- Remove extraneous space from Internet Explorer conditional statement. [#2273](https://github.com/mmistakes/minimal-mistakes/pull/2273) +- Fix typo in `_config.yml`. [#2243](https://github.com/mmistakes/minimal-mistakes/pull/2243) +- Replace `http` URLs with `https` where applicable in `_config.yml`. [#2244](https://github.com/mmistakes/minimal-mistakes/pull/2244) + +## [4.16.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.6) + +### Enhancements + +- Relax Jekyll dependency to allow for version 4.0. +- Add missing Spanish localized UI text strings. [#2229](https://github.com/mmistakes/minimal-mistakes/pull/2229) +- Allow Markdown in author bio. [#2215](https://github.com/mmistakes/minimal-mistakes/pull/2215) + +### Bug Fixes + +- Fix `site.url` in Organization/Person JSON-LD schema. [#1906](https://github.com/mmistakes/minimal-mistakes/issues/1906) +- Remove full stop in some `comment_form_info` UI text strings. [#2220](https://github.com/mmistakes/minimal-mistakes/pull/2220) +- Fix default `site.author` in seo.html [#2230](https://github.com/mmistakes/minimal-mistakes/pull/2230) +- Fix overlapping links (linked to and post's permalink) in post link type. [#2222](https://github.com/mmistakes/minimal-mistakes/issues/2222) + +## [4.16.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.5) + +### Enhancements + +- Add optional site subtitle to masthead. [#2173](https://github.com/mmistakes/minimal-mistakes/issues/2173) +- Add missing Punjabi and Hindi localized UI text strings. [#2212](https://github.com/mmistakes/minimal-mistakes/pull/2212) +- Add missing Korean localized UI text strings. [#2209](https://github.com/mmistakes/minimal-mistakes/pull/2209) +- Use [Font Awesome Kits](https://blog.fontawesome.com/introducing-font-awesome-kits-7134d1d59959) to use the latest version of icons. [#2184](https://github.com/mmistakes/minimal-mistakes/issues/2184) +- Remove unnecessary console.log in `lunr-en.js` and `lunr-gr.js` JavaScript. [#2193](https://github.com/mmistakes/minimal-mistakes/issues/2193) +- Remove unnecessary `type="text/javascript"` from Google Analytics JavaScript. [#2190](https://github.com/mmistakes/minimal-mistakes/pull/2190) +- Update links and fix typos in documentation. [#2186](https://github.com/mmistakes/minimal-mistakes/pull/2186) +- Add skip links. [#2182](https://github.com/mmistakes/minimal-mistakes/issues/2182) + +### Bug Fixes + +- Fix aria issues with Lunr search form. [#2211](https://github.com/mmistakes/minimal-mistakes/pull/2211) +- Fix missing fallback title for table of contents. + +## [4.16.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4) + +### Enhancements + +- Update Brazilian Portuguese localized UI text strings. [#2162](https://github.com/mmistakes/minimal-mistakes/pull/2162) +- Update Font Awesome to v5.8.2. [#2150](https://github.com/mmistakes/minimal-mistakes/pull/2150) +- Add missing Spanish localized UI text strings. [#2149](https://github.com/mmistakes/minimal-mistakes/pull/2149) + +### Bug Fixes + +- Fix arithmetic in `_form.scss` partial. [#2169](https://github.com/mmistakes/minimal-mistakes/pull/2169) +- Fix pound symbol not displaying properly for post categories and tags. [#2156](https://github.com/mmistakes/minimal-mistakes/issues/2156) +- Fix permalink stacking order and click-able area in archives. + ## [4.16.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3) ### Enhancements @@ -75,7 +550,7 @@ toc: false ### Bug Fixes -- Fix table of contents errors with non-English chracters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042) +- Fix table of contents errors with non-English characters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042) - Fix `site.logo` false positives. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-455770730) - Add empty `alt` attribute to `site.logo` image. [#2035](https://github.com/mmistakes/minimal-mistakes/pull/2035) @@ -179,12 +654,12 @@ toc: false - Support heading levels 1-6 in table of contents with proper indentation styling. [#1782](https://github.com/mmistakes/minimal-mistakes/issues/1782) - Use relative links for masthead navigation menu items when possible. [#1784](https://github.com/mmistakes/minimal-mistakes/pull/1784) - Add `.emoji` class to author sidebar to normalize image sizes. [#1780](https://github.com/mmistakes/minimal-mistakes/pull/1780) -- Update Staticman commit message to include commentor's name. +- Update Staticman commit message to include comment author's name. - Improve side navigation spacing in relation to masthead. - Style archive links with appropriate link color. - Adjust feature row spacing and font-sizes. - Use sentence case and increase font-sizes for improved readability in table of contents. -- Add {% raw %}`{{ content }}`{% endraw %} to `home` layout. [#1775](https://github.com/mmistakes/minimal-mistakes/pull/1775) +- Add `{{ content }}` to `home` layout. [#1775](https://github.com/mmistakes/minimal-mistakes/pull/1775) ## [4.12.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.1) @@ -209,7 +684,7 @@ toc: false - Add support for ["sticking" table of contents](https://mmistakes.github.io/minimal-mistakes/layout-table-of-contents-sticky/) to top of page via `toc_sticky: true` YAML Front Matter. - Add support for captioning images in feature row helper via `image_caption` YAML Front Matter. [#1440](https://github.com/mmistakes/minimal-mistakes/issues/1440) - Add [Google Custom Search Engine](https://cse.google.com/cse) support. [#1652](https://github.com/mmistakes/minimal-mistakes/issues/1652) -- Update Font Awesome to version [`5.1.13`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). +- Update Font Awesome to version. [`5.1.13`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md) - Add "Pets" sample archive page to documentation site. [#1664](https://github.com/mmistakes/minimal-mistakes/pull/1664) - Add GitLab social icon brand color. [#1653](https://github.com/mmistakes/minimal-mistakes/issues/1653) - Prevent line breaks between FontAwesome icon and text in footer social links. [#1659](https://github.com/mmistakes/minimal-mistakes/issues/1659) @@ -227,7 +702,7 @@ toc: false ### Enhancements -- Update Font Awesome to version `5.0.11`. [#1605](https://github.com/mmistakes/minimal-mistakes/pull/1620) +- Update Font Awesome to version `5.0.11`. [#1620](https://github.com/mmistakes/minimal-mistakes/pull/1620) - Add Slovak localized UI text strings. [#1613](https://github.com/mmistakes/minimal-mistakes/pull/1613) - Add option to anonymize IP addresses of hits sent to Google Analytics. [#1636](https://github.com/mmistakes/minimal-mistakes/pull/1636) @@ -245,7 +720,7 @@ toc: false ### Bug Fixes -- Replace `relative_url` filter with `relative_url` where it makes sense (asset/navigation related paths). [#1588](https://github.com/mmistakes/minimal-mistakes/issues/1588) +- Replace `absolute_url` filter with `relative_url` where it makes sense (asset/navigation related paths). [#1588](https://github.com/mmistakes/minimal-mistakes/issues/1588) - Fix search excerpts that run together because of implied spaces. ## [4.10.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.10.1) @@ -429,7 +904,7 @@ toc: false - Reduce amount of blank pages when printing in Chrome. [#1196](https://github.com/mmistakes/minimal-mistakes/issues/1196) - Remove `#disqus_thread` duplicate from `comments-providers/disqus.html` as it is already in `comments.html` include. [#1199](https://github.com/mmistakes/minimal-mistakes/issues/1199) - Fix Liquid syntax errors in `tag-list.html` and `category-list.html` includes by removing parenthesis in `assign`s. [#1223](https://github.com/mmistakes/minimal-mistakes/issues/1223) -- Fix Liquid syntax error: "Expected id but found open_square in {% raw %}`"{{ page.[include.id] }}"`"{% endraw %} in `gallery` and `feature_row` includes. +- Fix Liquid syntax error: "Expected id but found open_square in `"{{ page.[include.id] }}"`" in `gallery` and `feature_row` includes. - Fix Liquid syntax error: "Expected end_of_string but found pipe in `"name in __names | sort"`" in `group-by-array` include. ## [4.5.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.5.1) @@ -757,18 +1232,18 @@ toc: false ### Enhancements -- Improve line numbered code block styling when using `{% raw %}{% highlight linenos %}{% endraw %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513) +- Improve line numbered code block styling when using `{% highlight linenos %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513) - Add English fallback to "Follow" button label. [#496](https://github.com/mmistakes/minimal-mistakes/pull/496) ### Bug Fixes -- Fix Firefox alignment issues with code blocks generated with the `{% raw %}{% highlight %}{% endraw %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512) +- Fix Firefox alignment issues with code blocks generated with the `{% highlight %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512) ### Maintenance - Clarified comment for `author.stackoverflow` value used in author sidebar links. [#487](https://github.com/mmistakes/minimal-mistakes/pull/487) - Add list of localized text strings. [#488](https://github.com/mmistakes/minimal-mistakes/pull/488) -- Add `{% raw %}{% highlight %}{% endraw %}` code block examples to demo site. +- Add `{% highlight %}` code block examples to demo site. - Add documentation for using custom sidebar navigation menus. [#476](https://github.com/mmistakes/minimal-mistakes/issues/476) ## [3.4.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.4) @@ -845,19 +1320,19 @@ toc: false ### Bug Fixes -- Fix blank `site.teaser` bug [#412](https://github.com/mmistakes/minimal-mistakes/issues/412) +- Fix blank `site.teaser` bug. [#412](https://github.com/mmistakes/minimal-mistakes/issues/412) ## [3.3.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.5) ### Enhancements -- Add English default text `site.locale` strings [#407](https://github.com/mmistakes/minimal-mistakes/issues/407) +- Add English default text `site.locale` strings. [#407](https://github.com/mmistakes/minimal-mistakes/issues/407) - Add Portuguese localized UI text. [#411](https://github.com/mmistakes/minimal-mistakes/pull/411) - Add Italian localized UI text. [#409](https://github.com/mmistakes/minimal-mistakes/pull/409) ### Maintenance -- Remove unused Google AdSense variables in `_config.yml` [#404](https://github.com/mmistakes/minimal-mistakes/issues/404) +- Remove unused Google AdSense variables in `_config.yml`. [#404](https://github.com/mmistakes/minimal-mistakes/issues/404) - Update `Gemfile` instructions for using `github-pages` vs. native `jekyll` gems. - Disable `gems:` in `_config.yml` and enable plugins with Bundler instead. - Add `repository` to `_config.yml` to suppress GitHub Pages error `Liquid Exception: No repo name found.` @@ -887,18 +1362,6 @@ toc: false - Set default `lang` to `en`. -### Enhancements - -- Make footer stick to the bottom of the page. - -### Bug Fixes - -- Fix `gallery` size bug [#402](https://github.com/mmistakes/minimal-mistakes/issues/402) - -### Maintenance - -- Set default `lang` to `en`. - ## [3.3.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.2) ### Bug Fixes @@ -920,7 +1383,7 @@ toc: false ## [3.2.13](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.13) -### Enhancement +### Enhancements - Add English default UI text for Canada, Great Britain, and Australia. [#377](https://github.com/mmistakes/minimal-mistakes/issues/377) - Switch default locale from `en-US` to `en`. @@ -1020,15 +1483,15 @@ toc: false ## [3.2.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.3) -### Enhancement +### Enhancements -- Add [Discourse](https://www.discourse.org/) as a commenting provider [#335](https://github.com/mmistakes/minimal-mistakes/pull/335) +- Add [Discourse](https://www.discourse.org/) as a commenting provider. [#335](https://github.com/mmistakes/minimal-mistakes/pull/335) ## [3.2.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.2) -### Enhancement +### Enhancements -- Add support for image captions in Magnific Popup overlays via the [`gallery`](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) helper [#334](https://github.com/mmistakes/minimal-mistakes/issues/334) +- Add support for image captions in Magnific Popup overlays via the [`gallery`](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) helper. [#334](https://github.com/mmistakes/minimal-mistakes/issues/334) ## [3.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.1) @@ -1060,7 +1523,7 @@ toc: false ## [3.1.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.7) -### Enhancement +### Enhancements - Add translation key for "Recent Posts" used in home page `index.html`. [#316](https://github.com/mmistakes/minimal-mistakes/pull/316) @@ -1103,11 +1566,15 @@ toc: false ## [3.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.2) -### Enhancement +### Enhancements - Explain how to use `nav_list` helper in [documentation](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list). - Reduce left/right padding on smaller screens to increase width of main content column. +### Bug Fixes + +- Fix alignment issues with related posts [#273](https://github.com/mmistakes/minimal-mistakes/issues/273) and "Follow" button in author profile [#274](https://github.com/mmistakes/minimal-mistakes/issues/274). + ## [3.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.1) ### Bug Fix @@ -1296,3 +1763,4 @@ toc: false - Google Analytics, Google Authorship, webmaster verifies, and Twitter card meta are now optional. ## [1.0.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.1) +{% endraw %} diff --git a/docs/_docs/20-docs-2-2.md b/docs/_docs/20-docs-2-2.md index be5638f1dfc6..bcaa01cfa1b9 100644 --- a/docs/_docs/20-docs-2-2.md +++ b/docs/_docs/20-docs-2-2.md @@ -49,7 +49,6 @@ How Minimal Mistakes is organized and what the various files are. All posts, lay minimal-mistakes/ ├── _includes/ | ├── author-bio.html # bio stuff layout. pulls optional owner data from _config.yml -| ├── browser-upgrade # prompt to install a modern browser for < IE9 | ├── disqus-comments # Disqus comments script | ├── footer # site footer | ├── head # site head @@ -297,4 +296,4 @@ To modify the site's JavaScript files I setup a Grunt build script to lint/conca npm install ``` -From the theme's root, use `grunt` concatenate JavaScript files, and optimize .jpg, .png, and .svg files in the `images/` folder. You can also use `grunt dev` in combination with `jekyll build --watch` to watch for updates JS files that Grunt will then automatically re-build as you write your code which will in turn auto-generate your Jekyll site when developing locally. \ No newline at end of file +From the theme's root, use `grunt` concatenate JavaScript files, and optimize .jpg, .png, and .svg files in the `images/` folder. You can also use `grunt dev` in combination with `jekyll build --watch` to watch for updates JS files that Grunt will then automatically re-build as you write your code which will in turn auto-generate your Jekyll site when developing locally. diff --git a/docs/_docs/22-faq.md b/docs/_docs/22-faq.md new file mode 100644 index 000000000000..f41f7fc14d02 --- /dev/null +++ b/docs/_docs/22-faq.md @@ -0,0 +1,18 @@ +--- +title: Frequently Asked Questions +classes: wide +permalink: "/docs/faq/" +sidebar: + nav: docs +last_modified_at: '2024-04-24T00:51:32+08:00' +toc: false +--- + +This page is still under construction. Meanwhile, check out existing [issues](https://github.com/mmistakes/minimal-mistakes/issues) and [discussions](https://github.com/mmistakes/minimal-mistakes/discussions) to see if your question has already been asked before. +{: .notice--primary } + +- `'require': cannot load such file -- webrick (LoadError)` + + This error occurs when you run `jekyll serve` on Ruby 3.0+. + + Ruby 3.0 no longer comes with Webrick by default. To fix this, add `gem "webrick"` to your `Gemfile` and run `bundle install`. See [jekyll/jekyll#8523](https://github.com/jekyll/jekyll/issues/8523) diff --git a/docs/_includes/after-content.html b/docs/_includes/after-content.html new file mode 100644 index 000000000000..482c530b7931 --- /dev/null +++ b/docs/_includes/after-content.html @@ -0,0 +1,8 @@ +<div align="center" style="margin: 1em 0;"> + <ins class="adsbygoogle" + style="display:block; border-bottom: initial;" + data-ad-client="ca-pub-7328585512091257" + data-ad-slot="3049671934" + data-ad-format="auto" + data-full-width-responsive="true"></ins> +</div> diff --git a/docs/_includes/before-related.html b/docs/_includes/before-related.html new file mode 100644 index 000000000000..69ea67c544a5 --- /dev/null +++ b/docs/_includes/before-related.html @@ -0,0 +1 @@ +{% include after-content.html %} diff --git a/docs/_includes/comments-providers/scripts.html b/docs/_includes/comments-providers/scripts.html new file mode 100644 index 000000000000..5617ab8922fa --- /dev/null +++ b/docs/_includes/comments-providers/scripts.html @@ -0,0 +1,11 @@ +{% comment %} + Repurposing this file as "after-scripts.html" snippet, + since the docs site isn't using comments anyway. +{% endcomment %} +<style> +.google-auto-placed { + margin: 2em auto; +} +</style> +<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> +<script>(adsbygoogle = window.adsbygoogle || []).push({});</script> diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index 6a42b643b64c..000000000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,53 +0,0 @@ ---- ---- - -<!doctype html> -<!-- - Minimal Mistakes Jekyll Theme 4.16.3 by Michael Rose - Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes - Free for personal and commercial use under the MIT license - https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE ---> -<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js"> - <head> - {% include head.html %} - {% include head/custom.html %} - </head> - - <body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}"> - - {% include browser-upgrade.html %} - {% include masthead.html %} - - <div class="initial-content"> - {{ content }} - <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> - <div align="center" style="margin: 1em 0;"> - <ins class="adsbygoogle" - style="display:block; border-bottom: initial;" - data-ad-client="ca-pub-7328585512091257" - data-ad-slot="3049671934" - data-ad-format="auto"></ins> - </div> - <script> - (adsbygoogle = window.adsbygoogle || []).push({}); - </script> - </div> - - {% if site.search == true %} - <div class="search-content"> - {% include search/search_form.html %} - </div> - {% endif %} - - <div class="page__footer"> - <footer> - {% include footer/custom.html %} - {% include footer.html %} - </footer> - </div> - - {% include scripts.html %} - - </body> -</html> \ No newline at end of file diff --git a/docs/_pages/404.md b/docs/_pages/404.md index 4adbecc66617..b3025a6053b5 100644 --- a/docs/_pages/404.md +++ b/docs/_pages/404.md @@ -5,11 +5,4 @@ sitemap: false permalink: /404.html --- -Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below. - -<script> - var GOOG_FIXURL_LANG = 'en'; - var GOOG_FIXURL_SITE = '{{ site.url }}' -</script> -<script src="https://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"> -</script> +Sorry, but the page you were trying to view does not exist. diff --git a/docs/_pages/about.md b/docs/_pages/about.md index b2a3ce1187e4..4a805ceda268 100644 --- a/docs/_pages/about.md +++ b/docs/_pages/about.md @@ -12,7 +12,7 @@ layouts_gallery: - url: /assets/images/mm-layout-archive.png image_path: /assets/images/mm-layout-archive.png alt: "archive layout example" -last_modified_at: 2019-04-03T15:15:09-04:00 +last_modified_at: 2022-05-27T11:59:26-04:00 toc: true --- @@ -31,9 +31,9 @@ Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your - Several responsive layout options (single, archive index, search, splash, and paginated home page). - Optimized for search engines with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data - Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more. -- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), [Discourse](https://www.discourse.org/), [utterances](https://utteranc.es/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom). +- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), [Discourse](https://www.discourse.org/), [utterances](https://utteranc.es/), [giscus](https://giscus.app/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom). - [Google Analytics](https://www.google.com/analytics/) support. -- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Malayalam, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese. +- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Bulgarian, Catalan, Chinese, Czech, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hebrew, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Kiswahili, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Norwegian (Norsk), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese. ## Demo Pages diff --git a/docs/_pages/home.md b/docs/_pages/home.md index 9a7c028e28da..d0758fb9258b 100644 --- a/docs/_pages/home.md +++ b/docs/_pages/home.md @@ -1,6 +1,7 @@ --- layout: splash permalink: / +hidden: true header: overlay_color: "#5e616c" overlay_image: /assets/images/mm-home-page-feature.jpg @@ -9,7 +10,7 @@ header: url: "/docs/quick-start-guide/" excerpt: > A flexible two-column Jekyll theme. Perfect for building personal sites, blogs, and portfolios.<br /> - <small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3">Latest release v4.16.3</a></small> + <small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2">Latest release v4.26.2</a></small> feature_row: - image_path: /assets/images/mm-customizable-feature.png alt: "customizable" @@ -34,4 +35,4 @@ feature_row: btn_label: "Learn more" --- -{% include feature_row %} \ No newline at end of file +{% include feature_row %} diff --git a/docs/_pages/page-archive.html b/docs/_pages/page-archive.html index a4e515abc721..ada3f64fb9ce 100644 --- a/docs/_pages/page-archive.html +++ b/docs/_pages/page-archive.html @@ -5,6 +5,7 @@ author_profile: false --- -{% for post in site.pages %} +{% assign posts = site.pages | where_exp: "post", "post.hidden != true" %} +{% for post in posts %} {% include archive-single.html %} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md b/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md new file mode 100644 index 000000000000..6acc568a0655 --- /dev/null +++ b/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md @@ -0,0 +1,6 @@ +--- +title: "Edge Case: Post with multiline excerpt" +--- + +Et ex ullamco duis don't +combine these words quis laborum sunt sint. Nisi et Lorem reprehenderit cupidatat. Aliqua fugiat aliquip officia culpa elit. Adipisicing do eu duis aute et aute amet anim ut cillum aliqua. Aliqua adipisicing occaecat et ullamco fugiat. \ No newline at end of file diff --git a/docs/_posts/2009-10-06-edge-case-broken-highlighting.md b/docs/_posts/2009-10-06-edge-case-broken-highlighting.md new file mode 100644 index 000000000000..bdf5b0be2715 --- /dev/null +++ b/docs/_posts/2009-10-06-edge-case-broken-highlighting.md @@ -0,0 +1,48 @@ +--- +title: "Edge Case: Invalid syntax highlight languages" +categories: + - Edge Case +tags: + - content + - css + - edge case +--- + +Good highlighting: + +```ruby +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end +``` + +Good (but dumb) highlighting: + +``` +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end +``` + +Bad highlighting: + +```invalid +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift + end +end +``` diff --git a/docs/_posts/2010-02-05-post-notice.md b/docs/_posts/2010-02-05-post-notice.md index 071c7892e6c4..da63f9a32152 100644 --- a/docs/_posts/2010-02-05-post-notice.md +++ b/docs/_posts/2010-02-05-post-notice.md @@ -17,6 +17,16 @@ When using Kramdown `{: .notice}` can be added after a sentence to assign the `. **Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. {: .notice--primary} +<div class="notice--primary" markdown="1"> +**Primary Notice with code block:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. + +```html +<html> + <body>Some body.<body> +</html> +``` +</div> + **Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. {: .notice--info} diff --git a/docs/_posts/2010-06-02-post-video-youtube.md b/docs/_posts/2010-06-02-post-video-youtube.md index 16bc910c38da..686f622b9e70 100644 --- a/docs/_posts/2010-06-02-post-video-youtube.md +++ b/docs/_posts/2010-06-02-post-video-youtube.md @@ -8,4 +8,4 @@ tags: YouTube video embed below. -<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/l2Of1-d5E5o?controls=0&showinfo=0" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/-PVofD2A9t8?controls=0" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/docs/_posts/2010-08-05-post-image-linked.md b/docs/_posts/2010-08-05-post-image-linked.md index af3f3fe9f779..a59cd117126e 100644 --- a/docs/_posts/2010-08-05-post-image-linked.md +++ b/docs/_posts/2010-08-05-post-image-linked.md @@ -7,4 +7,4 @@ tags: - Post Formats --- -[](https://flic.kr/p/8ww3fZ) \ No newline at end of file +[](https://flic.kr/p/dNiUYB) \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-post-date-disabled.md b/docs/_posts/2012-01-02-layout-post-date-disabled.md new file mode 100644 index 000000000000..a10a3e4648eb --- /dev/null +++ b/docs/_posts/2012-01-02-layout-post-date-disabled.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Disabled" +show_date: false +tags: + - post date +--- + +This post has the date disabled. The date this post was published should not be showing if `show_date: false` is set in `_config.yml` or in this post's YAML Front Matter. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-post-date.md b/docs/_posts/2012-01-02-layout-post-date.md new file mode 100644 index 000000000000..b31c9a275b5c --- /dev/null +++ b/docs/_posts/2012-01-02-layout-post-date.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Enabled" +show_date: true +tags: + - post date +--- + +This post has post date enabled. The date the post was published should show if `show_date: true` is added to it's YAML Front Matter or as a default in `_config.yml`. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-header-image-external.md b/docs/_posts/2012-03-15-layout-header-image-external.md index 8dd7a01ed303..1795bdcd13fa 100644 --- a/docs/_posts/2012-03-15-layout-header-image-external.md +++ b/docs/_posts/2012-03-15-layout-header-image-external.md @@ -1,7 +1,7 @@ --- title: "Layout: Header Image (External URL)" header: - image: https://farm5.staticflickr.com/4140/4939863887_84705982fd_b.jpg + image: https://live.staticflickr.com/8084/8396909762_813a2b1829_h.jpg categories: - Layout - Uncategorized diff --git a/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md b/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md new file mode 100644 index 000000000000..32588bde9b53 --- /dev/null +++ b/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md @@ -0,0 +1,28 @@ +--- +title: "Layout: Header Image Overlay with Custom Tagline" +tagline: "This is a custom tagline content which overrides the *default* page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +categories: + - Layout + - Uncategorized +tags: + - edge case + - image + - layout +last_modified_at: 2020-01-07T13:05:25-05:00 +--- + +This post should display a **header with an overlay image** and **custom tagline**, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests overlay header images with custom `page.tagline`. + +```yaml +tagline: "This is a custom tagline content which overrides the default page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +``` \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-sidebar-custom.md b/docs/_posts/2012-03-15-layout-sidebar-custom.md index bd1c6105c654..3b3739bc8ce6 100644 --- a/docs/_posts/2012-03-15-layout-sidebar-custom.md +++ b/docs/_posts/2012-03-15-layout-sidebar-custom.md @@ -1,10 +1,11 @@ --- title: "Layout: Sidebar Custom" excerpt: "A post with custom sidebar content." +last_modified_at: 2021-06-23T07:53:04-04:00 author_profile: false sidebar: - title: "Title" - image: http://placehold.it/350x250 + image: "/assets/images/350x250.png" image_alt: "image" text: "Some text here." - title: "Another Title" @@ -19,7 +20,7 @@ An example of how that YAML could look is: ```yaml sidebar: - title: "Title" - image: http://placehold.it/350x250 + image: "/assets/images/your-image.jpg" image_alt: "image" text: "Some text here." - title: "Another Title" diff --git a/docs/_posts/2013-01-10-markup-image-alignment.md b/docs/_posts/2013-01-10-markup-image-alignment.md index b92dab67b340..8c4a40e0a09b 100644 --- a/docs/_posts/2013-01-10-markup-image-alignment.md +++ b/docs/_posts/2013-01-10-markup-image-alignment.md @@ -19,7 +19,7 @@ The image above happens to be **centered**. {: .align-left} The rest of this paragraph is filler for the sake of seeing the text wrap around the 150×150 image, which is **left aligned**. -As you can see the should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thing. Mission accomplished! +As you can see there should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thing. Mission accomplished! And now for a **massively large image**. It also has **no alignment**. @@ -49,7 +49,7 @@ The figure above happens to be **centered**. The caption also has a link in it, The rest of this paragraph is filler for the sake of seeing the text wrap around the 150×150 image, which is **left aligned**. -As you can see the should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thing. Mission accomplished! +As you can see there should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thing. Mission accomplished! And now for a **massively large image**. It also has **no alignment**. diff --git a/docs/_posts/2016-09-21-gemified-theme-alpha.md b/docs/_posts/2016-09-21-gemified-theme-alpha.md index 1e9d5d1f589c..db2467980fac 100644 --- a/docs/_posts/2016-09-21-gemified-theme-alpha.md +++ b/docs/_posts/2016-09-21-gemified-theme-alpha.md @@ -56,7 +56,6 @@ group :jekyll_plugins do gem "jekyll-sitemap" gem "jekyll-gist" gem "jekyll-feed" - gem "jemoji" end ``` diff --git a/docs/_posts/2017-01-23-layout-header-video.md b/docs/_posts/2017-01-23-layout-header-video.md index 5b45e6c3de71..f1aab7490ca8 100644 --- a/docs/_posts/2017-01-23-layout-header-video.md +++ b/docs/_posts/2017-01-23-layout-header-video.md @@ -2,7 +2,7 @@ title: "Layout: Header Video" header: video: - id: XsxDH4HcOWA + id: -PVofD2A9t8 provider: youtube categories: - Layout @@ -23,20 +23,20 @@ This post should display a **header with a responsive video**, if the theme supp ### YouTube -To embed the following YouTube video at url `https://www.youtube.com/watch?v=XsxDH4HcOWA` (long version) or `https://youtu.be/XsxDH4HcOWA` (short version) into a post or page's main content you'd use: +To embed the following YouTube video at url `https://www.youtube.com/watch?v=-PVofD2A9t8` (long version) or `https://youtu.be/-PVofD2A9t8` (short version) into a post or page's main content you'd use: ```liquid -{% raw %}{% include video id="XsxDH4HcOWA" provider="youtube" %}{% endraw %} +{% raw %}{% include video id="-PVofD2A9t8" provider="youtube" %}{% endraw %} ``` -{% include video id="XsxDH4HcOWA" provider="youtube" %} +{% include video id="-PVofD2A9t8" provider="youtube" %} To embed it as a video header you'd use the following YAML Front Matter ```yaml header: video: - id: XsxDH4HcOWA + id: -PVofD2A9t8 provider: youtube ``` diff --git a/docs/assets/images/350x250.png b/docs/assets/images/350x250.png new file mode 100644 index 000000000000..cb4d5edbe8e7 Binary files /dev/null and b/docs/assets/images/350x250.png differ diff --git a/docs/assets/images/dracula-code-block.jpg b/docs/assets/images/dracula-code-block.jpg new file mode 100644 index 000000000000..4d9e202ec9b7 Binary files /dev/null and b/docs/assets/images/dracula-code-block.jpg differ diff --git a/docs/assets/images/mm-header-overlay-custom-filter.jpg b/docs/assets/images/mm-header-overlay-custom-filter.jpg new file mode 100644 index 000000000000..7f0cff974496 Binary files /dev/null and b/docs/assets/images/mm-header-overlay-custom-filter.jpg differ diff --git a/docs/assets/images/mm-post-date-example.png b/docs/assets/images/mm-post-date-example.png new file mode 100644 index 000000000000..a209b97dc1c0 Binary files /dev/null and b/docs/assets/images/mm-post-date-example.png differ diff --git a/minimal-mistakes-jekyll.gemspec b/minimal-mistakes-jekyll.gemspec index f80bb5b262c2..e6f14e845094 100644 --- a/minimal-mistakes-jekyll.gemspec +++ b/minimal-mistakes-jekyll.gemspec @@ -1,9 +1,11 @@ -# coding: utf-8 +require "json" + +package_json = JSON.parse(File.read("package.json")) Gem::Specification.new do |spec| spec.name = "minimal-mistakes-jekyll" - spec.version = "4.16.3" - spec.authors = ["Michael Rose"] + spec.version = package_json["version"] + spec.authors = ["Michael Rose", "iBug"] spec.summary = %q{A flexible two-column Jekyll theme.} spec.homepage = "https://github.com/mmistakes/minimal-mistakes" @@ -15,15 +17,13 @@ Gem::Specification.new do |spec| f.match(%r{^(assets|_(data|includes|layouts|sass)/|(LICENSE|README|CHANGELOG)((\.(txt|md|markdown)|$)))}i) end - spec.add_runtime_dependency "jekyll", "~> 3.7" + spec.add_runtime_dependency "jekyll", ">= 3.7", "< 5.0" spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" - spec.add_runtime_dependency "jekyll-sitemap", "~> 1.2" + spec.add_runtime_dependency "jekyll-sitemap", "~> 1.3" spec.add_runtime_dependency "jekyll-gist", "~> 1.5" - spec.add_runtime_dependency "jekyll-feed", "~> 0.10" - spec.add_runtime_dependency "jekyll-data", "~> 1.0" - spec.add_runtime_dependency "jemoji", "~> 0.10" + spec.add_runtime_dependency "jekyll-feed", "~> 0.1" spec.add_runtime_dependency "jekyll-include-cache", "~> 0.1" spec.add_development_dependency "bundler" - spec.add_development_dependency "rake", "~> 10.0" + spec.add_development_dependency "rake", ">= 12.3.3" end diff --git a/package-lock.json b/package-lock.json index b4eb1a971a8d..10afd583925e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2320 +1,30 @@ { "name": "minimal-mistakes", - "version": "4.16.3", - "lockfileVersion": 1, + "version": "4.26.1", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@blakeembrey/deque": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@blakeembrey/deque/-/deque-1.0.3.tgz", - "integrity": "sha512-w6e4y0QqbPMZJrvZZQ4vP/4yxdsnG3Kr5J3isq6neMrqwo32vGk/LyGMGN9y79XP0wR8UuGROILhTsg5NnhCAw==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "packages": { + "": { + "name": "minimal-mistakes", + "version": "4.26.1", + "license": "MIT", + "devDependencies": { + "uglify-js": "^3.17.4" }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" + "engines": { + "node": ">= 0.10.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "bin": { + "uglifyjs": "bin/uglifyjs" }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "onchange": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/onchange/-/onchange-5.1.3.tgz", - "integrity": "sha512-85LVhgOQ4fFKkLRCvRhJ6srsOild0FXdOEMyVaMKv0aWGzwIbiItp80BN7sMSOOVtgLJH7vCHnW6xvQdKgh3Ew==", - "dev": true, - "requires": { - "@blakeembrey/deque": "^1.0.3", - "arrify": "^1.0.1", - "chokidar": "^2.0.0", - "cross-spawn": "^6.0.0", - "minimist": "^1.2.0", - "tree-kill": "^1.2.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pidtree": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", - "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", - "dev": true - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", - "dev": true, - "requires": { - "isexe": "^2.0.0" + "engines": { + "node": ">=0.8.0" } } } diff --git a/package.json b/package.json index 38b20d4737f0..a1557ee0ef7a 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "minimal-mistakes", - "version": "4.16.3", + "private": true, + "version": "4.26.2", "description": "Minimal Mistakes 2 column Jekyll theme.", "repository": { "type": "git", - "url": "git://github.com/mmistakes/minimal-mistakes.git" + "url": "https://github.com/mmistakes/minimal-mistakes.git" }, "keywords": [ "jekyll", @@ -21,14 +22,6 @@ "node": ">= 0.10.0" }, "devDependencies": { - "npm-run-all": "^4.1.5", - "onchange": "^5.1.3", - "uglify-js": "^3.4.9" - }, - "scripts": { - "uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.4.1.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js", - "add-banner": "node banner.js", - "watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js", - "build:js": "npm run uglify && npm run add-banner" + "uglify-js": "^3.17.4" } } diff --git a/staticman.yml b/staticman.yml index a4f161b7609b..61b95925167f 100644 --- a/staticman.yml +++ b/staticman.yml @@ -3,7 +3,7 @@ # For example, you can have one property to handle comment submission and # another one to handle posts. # To encrypt strings use the following endpoint: -# https://api.staticman.net/v2/encrypt/{TEXT TO BE ENCRYPTED} +# https://{your Staticman API URL}/v[2|3]/encrypt/{TEXT TO BE ENCRYPTED} comments: # (*) REQUIRED diff --git a/test/Gemfile b/test/Gemfile index 8c142a8aad4b..635ea6c0f660 100644 --- a/test/Gemfile +++ b/test/Gemfile @@ -2,9 +2,9 @@ source "https://rubygems.org" # use local theme gem for testing gem "minimal-mistakes-jekyll", path: "../" - group :jekyll_plugins do gem 'jekyll-algolia', '~> 1.0' end -gem "wdm", "~> 0.1.0" if Gem.win_platform? \ No newline at end of file +gem "wdm", "~> 0.1.0" if Gem.win_platform? +gem "webrick" \ No newline at end of file diff --git a/test/_config.yml b/test/_config.yml index 7ac3e8ad1494..9656a3764878 100644 --- a/test/_config.yml +++ b/test/_config.yml @@ -10,8 +10,9 @@ minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt" # Site Settings locale : "en-US" -title : "Minimal Mistakes Development Test Site" +title : "Minimal Mistakes" title_separator : "-" +subtitle : "Development Test Site" name : "Your Name" description : "Minimal Mistakes theme test." url : # the base hostname & protocol for your site e.g. "https://mmistakes.github.io" @@ -23,7 +24,7 @@ masthead_title : "Custom Title" # overrides the website title displaye # breadcrumbs : false # true, false (default) words_per_minute : 200 comments: - provider : # false (default), "disqus", "discourse", "facebook", "staticman", "utterances", "custom" + provider : # false (default), "disqus", "discourse", "facebook", "staticman", "utterances", "giscus", "custom" disqus: shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- discourse: @@ -36,28 +37,23 @@ comments: utterances: theme : # "github-light" (default), "github-dark" issue_term : # "pathname" (default) -staticman: - allowedFields : ['name', 'email', 'url', 'message'] - branch : # "master", "gh-pages" - commitMessage : "New comment by {fields.name}" - filename : comment-{@timestamp} - format : "yml" - moderation : true - path : "_data/comments/{options.slug}" - requiredFields : ['name', 'email', 'message'] - transforms: - email : "md5" - generatedFields: - date: - type : "date" - options: - format : "iso8601" # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds" - endpoint : # URL of your own deployment with trailing slash, will fallback to the public instance + giscus: + repo_id : # Shown during giscus setup at https://giscus.app + category_name : # Full text name of the category + category_id : # Shown during giscus setup at https://giscus.app + discussion_term : # "pathname" (default), "url", "title", "og:title" + reactions_enabled : # '1' for enabled (default), '0' for disabled + theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme" + staticman: + branch : # "master" + endpoint : # "https://{your Staticman v3 API}/v3/entry/github/" atom_feed: path : # blank (default) uses feed.xml search : true # true, false (default) search_full_content : true # true, false (default) -search_provider : "algolia" +search_provider : "lunr" +lunr: + search_within_pages : true algolia: application_id : "QB6HVGBSBA" index_name : "dev_minimal-mistakes" @@ -83,10 +79,12 @@ social: type : # Person or Organization (defaults to Person) name : # If the user or organization name differs from the site's name links: # An array of links to social media profiles + - https://twitter.com/ + - https://github.com/ # Analytics analytics: - provider : false # false (default), "google", "google-universal", "custom" + provider : false # false (default), "google", "google-universal", "google-gtag", "custom" google: tracking_id : @@ -95,7 +93,7 @@ analytics: author: name : "Your Name" avatar : "/assets/images/bio-photo.jpg" - bio : "I am an amazing person." + bio : "I am an **amazing** person." location : "Somewhere" links: - label: "Your Website" @@ -204,7 +202,6 @@ plugins: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji - jekyll-include-cache # mimic GitHub Pages with --safe @@ -213,7 +210,6 @@ whitelist: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji - jekyll-include-cache @@ -225,8 +221,8 @@ whitelist: # - Archive page should exist at path when using Liquid method or you can # expect broken links (especially with breadcrumbs enabled) # - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/ -# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/ -# - <base_path/my-awesome-category/index.html ~> path: / +# - <base_path>/categories/my-awesome-category/index.html ~> path: /categories/ +# - <base_path>/my-awesome-category/index.html ~> path: / category_archive: type: liquid path: /categories/ diff --git a/test/_pages/404.md b/test/_pages/404.md index 9d0f86066123..b3025a6053b5 100644 --- a/test/_pages/404.md +++ b/test/_pages/404.md @@ -5,12 +5,4 @@ sitemap: false permalink: /404.html --- -Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below. - -<script type="text/javascript"> - var GOOG_FIXURL_LANG = 'en'; - var GOOG_FIXURL_SITE = '{{ site.url }}' -</script> -<script type="text/javascript" - src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"> -</script> +Sorry, but the page you were trying to view does not exist. diff --git a/test/_pages/category-archive-grid.md b/test/_pages/category-archive-grid.md new file mode 100644 index 000000000000..3558be0a0db9 --- /dev/null +++ b/test/_pages/category-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Category (grid view)" +layout: categories +permalink: /categories-grid/ +entries_layout: grid +author_profile: true +--- diff --git a/test/_pages/category-archive.md b/test/_pages/category-archive.md index 3add99145e06..4cb3860e91be 100644 --- a/test/_pages/category-archive.md +++ b/test/_pages/category-archive.md @@ -1,6 +1,6 @@ --- title: "Posts by Category" layout: categories -permalink: /categories-archive/ +permalink: /categories/ author_profile: true --- diff --git a/test/_pages/collection-archive-grid.html b/test/_pages/collection-archive-grid.html new file mode 100644 index 000000000000..3280bf7bdf79 --- /dev/null +++ b/test/_pages/collection-archive-grid.html @@ -0,0 +1,28 @@ +--- +layout: archive +title: "Posts by Collection (grid view)" +permalink: /collection-archive-grid/ +entries_layout: grid +author_profile: true +--- + +{% assign entries_layout = page.entries_layout | default: 'list' %} +{% capture written_label %}'None'{% endcapture %} + +{% for collection in site.collections %} + {% unless collection.output == false or collection.label == "posts" %} + <section class="taxonomy__section"> + {% capture label %}{{ collection.label }}{% endcapture %} + {% if label != written_label %} + <h2 id="{{ label | slugify }}" class="archive__subtitle">{{ label }}</h2> + {% capture written_label %}{{ label }}{% endcapture %} + {% endif %} + <div class="entries-{{ entries_layout }}"> + {% for post in collection.docs %} + {% include archive-single.html type=entries_layout %} + {% endfor %} + </div> + <a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a> + </section> + {% endunless %} +{% endfor %} diff --git a/test/_pages/collection-archive.html b/test/_pages/collection-archive.html index 80d281642917..219592b6d8e9 100644 --- a/test/_pages/collection-archive.html +++ b/test/_pages/collection-archive.html @@ -17,7 +17,7 @@ <h2 id="{{ label | slugify }}" class="archive__subtitle">{{ label }}</h2> {% endunless %} {% for post in collection.docs %} {% unless collection.output == false or collection.label == "posts" %} - {% include archive-single.html %} + {% include archive-single.html type=page.entries_layout %} {% endunless %} {% endfor %} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/test/_pages/edge-case-grid.md b/test/_pages/edge-case-grid.md new file mode 100644 index 000000000000..c2f73e5a2a93 --- /dev/null +++ b/test/_pages/edge-case-grid.md @@ -0,0 +1,9 @@ +--- +title: Edge Case (grid view) +layout: category +permalink: /categories/edge-case-grid/ +taxonomy: Edge Case +entries_layout: grid +--- + +Sample post listing for the category `Edge Case`. diff --git a/test/_pages/markup-grid.md b/test/_pages/markup-grid.md new file mode 100644 index 000000000000..7ebf0badbdd7 --- /dev/null +++ b/test/_pages/markup-grid.md @@ -0,0 +1,9 @@ +--- +title: Markup (grid view) +layout: tag +permalink: /tags/markup-grid/ +taxonomy: markup +entries_layout: grid +--- + +Sample post listing for the tag `markup`. diff --git a/test/_pages/page-archive-grid.html b/test/_pages/page-archive-grid.html new file mode 100644 index 000000000000..269dc2a16403 --- /dev/null +++ b/test/_pages/page-archive-grid.html @@ -0,0 +1,16 @@ +--- +layout: archive +title: "Page Archive" +permalink: /page-archive-grid/ +entries_layout: grid +author_profile: false +--- + +{% assign entries_layout = page.entries_layout | default: 'list' %} +<section class="taxonomy__section"> + <div class="entries-{{ entries_layout }}"> + {% for post in site.pages %} + {% include archive-single.html type=entries_layout %} + {% endfor %} + </div> +</section> diff --git a/test/_pages/page-archive.html b/test/_pages/page-archive.html index a4e515abc721..ce11172ed489 100644 --- a/test/_pages/page-archive.html +++ b/test/_pages/page-archive.html @@ -7,4 +7,4 @@ {% for post in site.pages %} {% include archive-single.html %} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/test/_pages/tag-archive-grid.md b/test/_pages/tag-archive-grid.md new file mode 100644 index 000000000000..fa4df8137729 --- /dev/null +++ b/test/_pages/tag-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Tag (grid view)" +permalink: /tags-grid/ +layout: tags +entries_layout: grid +author_profile: true +--- diff --git a/test/_pages/tag-archive.md b/test/_pages/tag-archive.md index a512e4569c49..3f4e3f0df86c 100644 --- a/test/_pages/tag-archive.md +++ b/test/_pages/tag-archive.md @@ -1,6 +1,6 @@ --- title: "Posts by Tag" -permalink: /tags-archive/ +permalink: /tags/ layout: tags author_profile: true --- diff --git a/test/_pages/year-archive-grid.md b/test/_pages/year-archive-grid.md new file mode 100644 index 000000000000..5029212cd32d --- /dev/null +++ b/test/_pages/year-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Year (grid view)" +permalink: /year-archive-grid/ +layout: posts +entries_layout: grid +author_profile: true +--- diff --git a/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md b/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md index 727ab6a8215b..5e3ecedcaffd 100644 --- a/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md +++ b/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md @@ -63,4 +63,6 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure - [x] Finish my changes - [ ] Push my commits to GitHub -- [ ] Open a pull request \ No newline at end of file +- [ ] Open a pull request + - [ ] Follow discussions + - [x] Push new commits \ No newline at end of file diff --git a/test/_posts/2009-06-01-edge-case-many-tags.md b/test/_posts/2009-06-01-edge-case-many-tags.md index f43509f119cc..af9209596ea6 100644 --- a/test/_posts/2009-06-01-edge-case-many-tags.md +++ b/test/_posts/2009-06-01-edge-case-many-tags.md @@ -44,6 +44,8 @@ tags: - Unseen - video - YouTube + - U:R:COOL + - C# --- This post has many tags. \ No newline at end of file diff --git a/test/_posts/2009-10-05-edge-case-multiline-excerpt.md b/test/_posts/2009-10-05-edge-case-multiline-excerpt.md new file mode 100644 index 000000000000..6acc568a0655 --- /dev/null +++ b/test/_posts/2009-10-05-edge-case-multiline-excerpt.md @@ -0,0 +1,6 @@ +--- +title: "Edge Case: Post with multiline excerpt" +--- + +Et ex ullamco duis don't +combine these words quis laborum sunt sint. Nisi et Lorem reprehenderit cupidatat. Aliqua fugiat aliquip officia culpa elit. Adipisicing do eu duis aute et aute amet anim ut cillum aliqua. Aliqua adipisicing occaecat et ullamco fugiat. \ No newline at end of file diff --git a/test/_posts/2010-02-05-post-notice.md b/test/_posts/2010-02-05-post-notice.md index 071c7892e6c4..da63f9a32152 100644 --- a/test/_posts/2010-02-05-post-notice.md +++ b/test/_posts/2010-02-05-post-notice.md @@ -17,6 +17,16 @@ When using Kramdown `{: .notice}` can be added after a sentence to assign the `. **Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. {: .notice--primary} +<div class="notice--primary" markdown="1"> +**Primary Notice with code block:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. + +```html +<html> + <body>Some body.<body> +</html> +``` +</div> + **Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. {: .notice--info} diff --git a/test/_posts/2010-06-02-post-video-youtube.md b/test/_posts/2010-06-02-post-video-youtube.md index 16bc910c38da..686f622b9e70 100644 --- a/test/_posts/2010-06-02-post-video-youtube.md +++ b/test/_posts/2010-06-02-post-video-youtube.md @@ -8,4 +8,4 @@ tags: YouTube video embed below. -<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/l2Of1-d5E5o?controls=0&showinfo=0" frameborder="0" allowfullscreen></iframe> \ No newline at end of file +<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/-PVofD2A9t8?controls=0" frameborder="0" allowfullscreen></iframe> \ No newline at end of file diff --git a/test/_posts/2010-08-05-post-image-linked.md b/test/_posts/2010-08-05-post-image-linked.md index af3f3fe9f779..a59cd117126e 100644 --- a/test/_posts/2010-08-05-post-image-linked.md +++ b/test/_posts/2010-08-05-post-image-linked.md @@ -7,4 +7,4 @@ tags: - Post Formats --- -[](https://flic.kr/p/8ww3fZ) \ No newline at end of file +[](https://flic.kr/p/dNiUYB) \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-post-date-disabled.md b/test/_posts/2012-01-02-layout-post-date-disabled.md new file mode 100644 index 000000000000..a10a3e4648eb --- /dev/null +++ b/test/_posts/2012-01-02-layout-post-date-disabled.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Disabled" +show_date: false +tags: + - post date +--- + +This post has the date disabled. The date this post was published should not be showing if `show_date: false` is set in `_config.yml` or in this post's YAML Front Matter. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-post-date.md b/test/_posts/2012-01-02-layout-post-date.md new file mode 100644 index 000000000000..b31c9a275b5c --- /dev/null +++ b/test/_posts/2012-01-02-layout-post-date.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Enabled" +show_date: true +tags: + - post date +--- + +This post has post date enabled. The date the post was published should show if `show_date: true` is added to it's YAML Front Matter or as a default in `_config.yml`. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-header-image-external.md b/test/_posts/2012-03-15-layout-header-image-external.md index 8dd7a01ed303..1795bdcd13fa 100644 --- a/test/_posts/2012-03-15-layout-header-image-external.md +++ b/test/_posts/2012-03-15-layout-header-image-external.md @@ -1,7 +1,7 @@ --- title: "Layout: Header Image (External URL)" header: - image: https://farm5.staticflickr.com/4140/4939863887_84705982fd_b.jpg + image: https://live.staticflickr.com/8084/8396909762_813a2b1829_h.jpg categories: - Layout - Uncategorized diff --git a/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md b/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md new file mode 100644 index 000000000000..32588bde9b53 --- /dev/null +++ b/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md @@ -0,0 +1,28 @@ +--- +title: "Layout: Header Image Overlay with Custom Tagline" +tagline: "This is a custom tagline content which overrides the *default* page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +categories: + - Layout + - Uncategorized +tags: + - edge case + - image + - layout +last_modified_at: 2020-01-07T13:05:25-05:00 +--- + +This post should display a **header with an overlay image** and **custom tagline**, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests overlay header images with custom `page.tagline`. + +```yaml +tagline: "This is a custom tagline content which overrides the default page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +``` \ No newline at end of file diff --git a/test/_posts/2013-01-11-markup-html-tags-and-formatting.md b/test/_posts/2013-01-11-markup-html-tags-and-formatting.md index f7d9437a1f5d..1fdc6dbdcd75 100644 --- a/test/_posts/2013-01-11-markup-html-tags-and-formatting.md +++ b/test/_posts/2013-01-11-markup-html-tags-and-formatting.md @@ -11,6 +11,7 @@ tags: - html - markup toc: true +toc_sticky: true --- A variety of common markup showing how the theme styles them. diff --git a/test/_posts/2017-01-23-layout-header-video.md b/test/_posts/2017-01-23-layout-header-video.md index 5b45e6c3de71..f1aab7490ca8 100644 --- a/test/_posts/2017-01-23-layout-header-video.md +++ b/test/_posts/2017-01-23-layout-header-video.md @@ -2,7 +2,7 @@ title: "Layout: Header Video" header: video: - id: XsxDH4HcOWA + id: -PVofD2A9t8 provider: youtube categories: - Layout @@ -23,20 +23,20 @@ This post should display a **header with a responsive video**, if the theme supp ### YouTube -To embed the following YouTube video at url `https://www.youtube.com/watch?v=XsxDH4HcOWA` (long version) or `https://youtu.be/XsxDH4HcOWA` (short version) into a post or page's main content you'd use: +To embed the following YouTube video at url `https://www.youtube.com/watch?v=-PVofD2A9t8` (long version) or `https://youtu.be/-PVofD2A9t8` (short version) into a post or page's main content you'd use: ```liquid -{% raw %}{% include video id="XsxDH4HcOWA" provider="youtube" %}{% endraw %} +{% raw %}{% include video id="-PVofD2A9t8" provider="youtube" %}{% endraw %} ``` -{% include video id="XsxDH4HcOWA" provider="youtube" %} +{% include video id="-PVofD2A9t8" provider="youtube" %} To embed it as a video header you'd use the following YAML Front Matter ```yaml header: video: - id: XsxDH4HcOWA + id: -PVofD2A9t8 provider: youtube ```